DATA SEGMENT
BUF DB 73H,34H,56H ;BCD码
MAX DB ?
MSG1 DB 'the largest unsigned integer is:$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
MOV AL,BUF
CMP AL,BUF+1
JA SWAPAB
MOV AL,BUF+1
SWAPAB: CMP AL,BUF+2
JA SWAPAC
MOV AL,BUF+2
SWAPAC: MOV MAX,AL
LEA DX,MSG1
MOV AH,09H
INT 21H ;输出提示信息
PUSH AX
MOV BL,AL
MOV BH,00H
MOV CL,4 ;设置移位
SHR BL,CL
ADD BL,30H ;获取7的ASCII码
MOV DL,BL
MOV AH,02H
INT 21H ;输出7
POP AX
AND AL,0FH
ADD AL,30H ;获取3的ASCII码
MOV DL,AL
MOV AH,02H
INT 21H ;输出3
MOV AH,4CH
INT 21H
CODE ENDS
END START
我想问下此处的PUSH AX 和POP AX起到的作用是什么,是保存数据吗?
是的!
因为 AX 里面 含了 数值 73H,
而你用它来运算, 取出了 高位7之后,
AX就不再是 73H了
这时, POP AX -> 就复原 AX = 73H