Ingrese un número entre 0 y 9999 en el teclado, use programación en lenguaje ensamblador para convertir el número decimal a binario y muestre el resultado de la conversión en formato binario.
segmento de datos
msg0 db 'Ingrese un dígito entre 0~9999: $'
msg1 db 'El resultado es: $'
resultado dw 0; Guarda el número binario convertido
disp db 16 dup(20h), '$' Dado que el número máximo de datos es 9999, se pueden expresar hasta 16 números binarios
p>los datos terminan
segmento de código
asume ds: datos, cs: código
inicio:
mov ax, data
mov ds, ax
lea dx, msg0; muestra solicitudes de información de entrada
mov ah, 09h
int 21h
p>lea si, resultado
llamar a la entrada; convertir el resultado de entrada y enviarlo a la unidad de resultados
lea dx, msg1;
mov ah, 09h
int 21h
llamada crlf; retorno de carro y avance de línea
mov bx, resultado
lea si, disp
salida de llamada; convierte el número en Resultado en el código ASCII que se mostrará
mov ah, 09h
lea dx, disp; muestra el resultado en la pantalla
int 21h
mov ax, 4c00h
int 21h
entrada:
mov ah, 01h; entrada de teclado y eco
int 21h
cmp al, 0dh; si la entrada no es Enter, continúa la entrada; de lo contrario, la entrada finaliza
jz endret p>
mov ah, 0
sub al, 30h; aquí no hay función de juicio de error. Se supone que la entrada es un número del 0 al 9. , así que reste directamente 30H
push ax;Proteja AX, AH debe borrarse a 0 en este momento
mov ax, [si] Algoritmo de conversión: Resultado=Resultado*10; +AX
mov bx, 10
mul bx
mov [si], hacha
pop hacha
agregar [si], hacha
entrada jmp
endret:
ret
salida:
> mov cx, 16
s0:
mov dl, 30h
rol bx, 1
adc dl, 0
mov [si], dl
inc si
bucle s0
ret
crlf:
mov ah, 02h
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
ret
el código finaliza
finaliza el inicio