Desarrollar un código en lenguaje ensamblador que permita leer un número de un digito por teclado y determinar si el número es par, impar o cero.

 No utilizar Simuproc. Utilizar el programa EMU8086

Respuestas

Respuesta dada por: LeonardoDY
6

Por lo que se interpreta el código será en assembler para microprocesadores x86. Como el número es de un dígito se usará aquí la interrupción 0x21, con el servicio 0x01.

En esta modalidad el programa espera el ingreso de un dato por teclado y luego de presionar Enter lo muestra en la pantalla y guarda su código ASCII en el registro AL.

Además vamos a utilizar el servicio 0x09 para mostrar el resultado como una cadena de caracteres en efecto el servicio 0x09 muestra en pantalla el string desde la dirección guardada en dx hasta donde haya un caracter $. El código quedaría:

INTRO db "Ingrese un número y presione Enter: $"

PAR db "El número es par$"

IMPAR "El número es impar$"

CERO "El número es cero$" ;Mensajes a mostrar en pantalla.

mov ah, 01h

int 21h ;Aquí va a esperar entrada por teclado.

cmp al, 30h ; Lo compara con el ascii del cero que es 0x30.

jnz no_cero

mov ah, 09h

mov dx, Offset CERO ; El número es cero

int 21h

jmp fin ;Salta al fin para no ejecutar lo de abajo.

no_cero:

mov bl, 01h;

and al,bl ; Aquí usamos una máscara que ponemos en bl, el registro al queda modificado, el último bit nos dice si el número es par o impar.

cmp al, 01h

jnz es_impar

mov ah, 09h

mov dx, offset PAR ; Si llegó acá el número es par

int 21h

jmp fin

es_impar:

mov ah, 09h

mov dx, offset PAR ; Si llegó acá el número es impar

int 21h

fin:

mov ax,4c00h

int 21h ; finaliza el proceso y vuelve al DOS.


LeonardoDY: Fe de erratas: En la subrutina es_impar va "mov dx, offset IMPAR" en vez de "mov dx, offset PAR" y entre las últimas dos declaraciones de string faltó el db entre el nombre y el string
Preguntas similares