
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import base64 | |
try: | |
CR EQU 13 | |
LF EQU 10 | |
IMPRIMIR EQU 9 | |
FIN EQU 4C00H | |
DOS EQU 21H | |
TAB EQU 09H | |
DATOS SEGMENT | |
ENCABEZADO DB 13,10,13,10,TAB,TAB,"======================================================" | |
DB 13,10,13,TAB,TAB,"PROGRAMA QUE IMPRIME NUMEROS EN HEXADECIMAL" | |
DB 13,10,13,TAB,TAB,"====================================================================",13,10,13,10,"$" | |
DATOS ENDS | |
PILA SEGMENT STACK 'STACK' | |
DB 64 DUP('0') | |
PILA ENDS | |
CODIGO SEGMENT | |
CEXA PROC NEAR | |
ASSUME CS:CODIGO,SS:PILA,DS:DATOS | |
ORG 100H | |
MOV AX,DATOS | |
MOV DS,AX | |
LEA DX,ENCABEZADO | |
CALL ESCRIBE | |
MOV CX,200H | |
XOR DX,DX | |
CICLO: | |
CALL ESCRIBE_HEX | |
CALL ESCRIBE_CRLF | |
INC DX | |
LOOP CICLO | |
CALL SALIR | |
CEXA ENDP | |
ESCRIBE_HEX PROC NEAR | |
PUSH AX | |
PUSH CX | |
PUSH DX | |
OTRO_DIGITO: | |
PUSH CX | |
MOV CL,4 | |
ROL DX,CL | |
CALL ESCRIBE_DIGITO_HEX | |
POP CX | |
LOOP OTRO_DIGITO | |
POP DX | |
POP CX | |
POP AX | |
RET | |
ESCRIBE_HEX ENDP | |
ESCRIBE_DIGITO_HEX PROC NEAR | |
PUSH AX | |
PUSH DX | |
AND DX,0FH | |
CMP DL,10 | |
JAE ES_MAYOR_A_10 | |
ADD DL,48 | |
JMP IMPRIME_DIGITO | |
ES_MAYOR_A_10: | |
ADD DL,55 | |
IMPRIME_DIGITO: | |
MOV AH,2 | |
INT 21H | |
POP DX | |
POP AX | |
RET | |
ESCRIBE_DIGITO_HEX ENDP | |
ESCRIBE_CRLF PROC NEAR | |
PUSH AX | |
PUSH DX | |
MOV AH,2 | |
MOV DL,13 | |
INT 21H | |
MOV DL,10 | |
INT 21H | |
POP DX | |
POP AX | |
RET | |
ESCRIBE_CRLF ENDP | |
ESCRIBE PROC | |
MOV AH,9 | |
INT 21H | |
RET | |
ESCRIBE ENDP | |
SALIR PROC NEAR | |
MOV AX,FIN | |
INT DOS | |
RET | |
SALIR ENDP | |
CODIGO ENDS | |
END CEXA |