Red de conocimiento informático - Conocimiento sistemático - Assembly ingresa un número entre 0 y 9 desde el teclado, lo convierte en un número binario y lo muestra

Assembly ingresa un número entre 0 y 9 desde el teclado, lo convierte en un número binario y lo muestra

=========================================== = =====

ASUME CS: CÓDIGO, DS: DATOS

SEGMENTO DE DATOS

MSG1 DB 13, 10, 'Ingrese un número (0 ~ 255): $'

MSG2 DB 13, 10, 'Ingrese un número no válido, salga $'

CRLF DB 13, 10, ' = $'

NNNN DB ?

LOS DATOS TERMINAN

;-------------------------- -- -----

SEGMENTO DE CÓDIGO

INICIO:

MOV AX, DATOS

MOV DS, AX

;-----------------------

LEA DX, MSG1

MOV AH, 9

INT 21H

IN_CHAR:

MOV AH, 1

INT 21H

CMP AL, 13

JE IN_END

CMP AL, '0'

JB IN_ERR

CMP AL, '9'

JA IN_ERR

SUB AL, 30H

MOV DL, AL

MOV AL, NNNN

MOV BL, 10

MUL BL

CMP AH, 0

JNZ IN_ERR

AÑADIR AL, DL

JC IN_ERR

MOV NNNN, AL

JMP IN_CHAR

IN_END:

LEA DX, CRLF

MOV AH, 9

INT 21H

LLAMADA OUT_BIN

LEA DX, CRLF

MOV AH, 9

INT 21H

CALL OUT_HEX

SALIDA JMP

IN_ERR:

LEA DX, MSG2

MOV AH, 9

INT 21H

SALIR:

MOV AH, 4CH

INT 21H; Volver a DOS

------- - -------------------------

OUT_BIN:

MOV AH, 2

MOV BL, NNNN

MOV CX, 8

LP1:

MOV DL, '0'

AÑADIR BL, BL

JN

C LP2

INC DL

LP2:

INT 21H

BUCLE LP1

MOV DL, 'B '

INT 21H

RET

;------------------------ ----- ----------

OUT_HEX:

MOV AH, 0

MOV AL, NNNN

MOV BL, 16

DIV BL

MOV DX, AX

MOV AH, 2

CMP DL, 10

JB LP3

AÑADIR DL, 7

LP3:

AÑADIR DL, 30H

INT 21H

MOV DL, DH

CMP DL, 10

JB LP4

AÑADIR DL, 7

LP4:

AÑADIR DL, 30H

INT 21H

MOV DL, 'H'

INT 21H

RET

;----------------------------------

EL CÓDIGO FINALIZA

FIN INICIO

; ================================= ===== ==========