编程计算X+Y+Z=?(X、Y、Z为32位二制数)。
.MODEL SMALL
.386
DATA SEGMENT ;定义一个数据段
X DW 9000H
Y DW 7000H
Z DW 6000H
DATA ENDS
CODE SEGMENT ;定义一个代码段
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
XOR BX,BX; 存放进位的寄存器BX清0
LEA SI,X
MOV AX,[SI]
ADD AX,[SI+2]
ADC BX,0; 保存X+Y产生的进位
ADD AX,[SI+4]
ADC BX,0;保存X+Y+Z的进位
XCHG BX,AX
CALL DISPAX
XCHG BX,AX
CALL DISPAX
MOV AH,02
MOV DL,48H;显示字母H
INT 21H
JMP $
;子程序DISPAX显示AX的内容
DISPAX: XCHG AL,AH
CALL DISPAL
XCHG AH,AL
CALL DISPAL
RET
DISPAL: PUSH AX
PUSH AX
MOV CL,4 ;处理高位十六进制数
SHR AL,CL
CALL CHANG ;十六进制数变换成ASCII码
MOV AH,02
MOV DL,AL
INT 21H ;显示一位字符
POP AX
AND AL,0FH ;处理低位十六进制数
CALL CHANG ;十六进制数变换成ASCII码
MOV AH,02
MOV DL,AL
INT 21H ;显示一位字符
POP AX
RET
; 十六进制数变换成ASCII码
CHANG: CMP AL,10
JNGE CHANG1
ADD AL,7
CHANG1: ADD AL,30H
RET
CODE ENDS
END START