Title | Calculadora emu8086 |
---|---|
Course | Microprocesadores |
Institution | Universidad de las Fuerzas Armadas de Ecuador |
Pages | 6 |
File Size | 219.6 KB |
File Type | |
Total Downloads | 52 |
Total Views | 164 |
Diagrama de flujo y código...
ELÉCTRI MICR
ECTRÓNICA ADORES
PROF: ING. CHISTHIAN VEGA NOMBRE: LUIS EDUARDO CARRION NRC: 3160 FECHA: 16/02/15
DIAGRAMA DE FLUJO INICIO
LEER NÚMERO PROC ESO1
LEER OPERACIÓN LEER NÚMERO
TIPO OPERACION
-
RESTA NÚMEROS
+
SUMA NÚMEROS
PROC ESO2
MULTIPLICA NÚMEROS
PROC ESO2
TIPO OPERACION
*
/
DIVIDE NÚMEROS
PROC ESO2
PROC ESO2
PROC ESO2
MÁS OPERACIONES SI GUARDAR OPERACIÓN HECHA
PROC ESO1
NO
FIN
CÓDIGO: org 100h ; iniciación de programa DEFINE_SCAN_NUM DEFINE_PRINT_STRING DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS jmp start ;salta a etiqueta start text db 13,10,'UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE' db 13,10,'MICROPROCESADORES $' text1 db 13,10,13,10,'Digite un Numero: $' text3 db 13,10,13,10, 'La Suma Es: $' text4 db 13,10,'La Resta Es: $' text5 db 13,10,'La Multiplicacion Es: $' text6 db 13,10,'La Dision es: $' text7 db 13,10,'Elija la operacion: + - * / $' text8 db 13,10,'Press E para finalizar operacion $' operando dw ?;variables de 2 bytes cont dw 'g' aux1 dw ?; simbolo ? es para indicar q no se inicilizan con valor alguno num1 dw ? num2 dw ? num3 dw ? start;etiquetas mov ah,09 ;instruccion para imprimir en pantalla lea dx,text ;carga cadena de text en dx int 21h ;interrupcion pantalla mov ah,09 ;instruccion para imprimir en pantalla lea dx,text1 ;carga cadena de text1 en dx int 21h ;interrupcion pantalla call SCAN_NUM ;Llama Funcion SCAN_NUM mov num1,cx ;mueve numero a variable num1 ope: ;se repite el procesor de elegir operacion mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text7 ;carga cadena de text7 en dx int 21h ; obtencion del operador mov ah, 1 ; un valor char en AL int 21h mov ah,00h mov operando, ax mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text1 ;carga cadena de text2 en dx int 21h call SCAN_NUM ;Llama Funcion SCAN_NUM mov num2,cx ;mueve numero a variable num2 ;comparaciones cmp operando,02bh je SUMA
cmp operando,02dh je RESTA cmp operando,02ah je MULTI cmp operando,02fh je DIVI SUMA: mov ah,09 mov ax,num1 ;mueve primer numero digitado a ax add ax,num2 ;suma los numeros digitado, queda almacenaddo en ax mov num1,ax;muevo valor de operacion mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text8 ;carga cadena de text8 en dx int 21h ; obtencion del operador mov ah, 1 int 21h mov ah,00h mov cont, ax cmp cont,'E';comparacion para continuar con operaciones je imprimir jmp ope imprimir: mov ax,num1 ; nueva linea: putc 0Dh putc 0Ah call PRINT_NUM jmp fin RESTA: mov ah,09 mov ax,num1 ;mueve primer numero digitado a ax sub ax,num2 ;resta el 2do del 1er numero, queda almacenaddo en ax mov num1,ax mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text8 ;carga cadena de text8 en dx int 21h ; obtencion del operador mov ah, 1 ; single char input to AL. int 21h mov ah,00h mov cont, ax cmp cont,'E' je imprimir2 jmp ope imprimir2: mov ax,num1 ; nueva linea: putc 0Dh
putc 0Ah call PRINT_NUM jmp fin MULTI: mov ah,09 mov ax,num1 ;mueve primer numero digitado a ax mov bx,num2 ;mueve segundo numero digitado a bx mul bx ;ax = ax*bx mov num1,ax mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text8 ;carga cadena de text8 en dx int 21h ; obtencion del operador mov ah, 1 ; single char input to AL. int 21h mov ah,00h mov cont, ax cmp cont,'E' je imprimir3 jmp ope imprimir3: mov ax,num1 ; nueva linea: putc 0Dh putc 0Ah call PRINT_NUM jmp fin DIVI: mov ah,09 xor dx,dx ;deja en cero dx; si no lo hago se desborda la division ;DX ALMACENA EL modulo de la division, por eso hay q dejarlo en cero mov ax,num1 ;mueve primer numero digitado a ax mov bx,num2 ;mueve segundo numero digitado a bx div bx ;ax = ax/bx mov num1,ax mov ah,09 ;interrupcion para imprimir en pantalla lea dx,text8 ;carga cadena de text8 en dx int 21h ; obtencion del operador mov ah, 1 ; single char input to AL. int 21h mov ah,00h mov cont, ax cmp cont,'E' je imprimir4 jmp ope imprimir4: mov ax,num1 ; nueva linea:
putc 0Dh putc 0Ah call PRINT_NUM jmp fin fin: ret...