1. Input 4-digit decimal data from the keyboard, and output it on the screen in hexadecimal

topic

Input 4-digit decimal data from the keyboard, and output it on the screen in hexadecimal

reference program

DATA SEGMENT
DATA ENDS
STACK SEGMENT PARA STACK
	BUF_1 DW 100H DUP (0)
	LEN1 EQU $-BUF_1
STACK ENDS

CODESEG SEGMENT
ASSUME CS:CODESEG,SS:STACK,DS:DATA
START:
	MOV AX,DATA
	MOV DS,AX
	MOV AX,STACK
	MOV SS,AX
	MOV SP,LEN1
	CALL ENTER
	CALL IN_4_DEC ;
	
	MOV DX,AX
	CALL DISP_4_HEX ;
	
	MOV AH,4CH
	INT 21H
	
DISP_1_HEX: ;
	PUSHF
	PUSH AX
	PUSH DX
	CMP DL,9
	JBE L_1_1
	ADD DL,07H
L_1_1:
	ADD DL,30H
	MOV AH,02H
	INT 21H
	POP DX
	POP AX
	POPF
RET

DISP_2_HEX:
	PUSHF
	PUSH AX
	PUSH DX
	MOV AL,DL
	MOV AH,0
	MOV DL,10H
	DIV DL
	MOV DL,AL
	CALL DISP_1_HEX
	MOV DL,AH
	CALL DISP_1_HEX
	POP DX
	POP AX
	POPF
RET

DISP_4_HEX:
	PUSHF
	PUSH AX
	PUSH DX
	MOV AX,DX
	MOV DL,AH
	CALL DISP_2_HEX
	MOV DL,AL
	CALL DISP_2_HEX
	POP DX
	POP AX
	POPF
RET

ENTER:
	PUSH AX
	PUSH DX
	MOV DL,20H
	MOV AH,02H
	INT 21H
	POP DX
	POP AX
RET

IN_1_DEC:
	PUSHF
	PUSH BX
	MOV BH,AH
	MOV AH,01H
	INT 21H
	SUB AL,30H
	MOV AH,BH
	POP BX
	POPF
RET

IN_2_DEC:
	PUSHF
	PUSH DX
	MOV DL,AH
	CALL IN_1_DEC
	MOV AH,10
	MUL AH
	MOV DH,AL
	CALL IN_1_DEC
	ADD AL,DH
	MOV AH,DL
	POP DX
	POPF
RET

IN_4_DEC:
	PUSHF
	PUSH DX
	CALL IN_2_DEC
	MOV DL,100
	MUL DL ;AL*DL=AX
	MOV DX,AX
	CALL IN_2_DEC
	MOV AH,0
	ADD AX,DX
	POP DX
	POPF
RET

CODESEG ENDS
END START

Guess you like

Origin blog.csdn.net/qq_29711355/article/details/125463117