很简单的一个题,求高手检查批评
原题是这样的:求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
编程要求与提示: [1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 [2] 和以压缩十进制数的形式存入SUM以下单元。 [3] 将和送到屏幕显示部分功能的实现采用子程序的形式。
这是我编的 STACK SEGMENT STACK
DB 100H DUP(00)
STACK ENDS
DATA SEGMENT
ADD1 DB 32H,85H,67H,12H
ADD2 DB 43H,65H,73H,21H
SUM DB 4 DUP(00)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
LEA SI,ADD1
MOV CX,4 ;循环次数4
CLC
L1: MOV AL,ADD1[SI]
MOV BL,ADD2[SI]
ADC AL,BL
DAA
MOV SUM[SI],AL
INC SI
LOOP L1
MOV CX,4
L2: MOV AL,SUM[SI+3]
CALL DISPAL
DEC SI
LOOP L2
DISPAL PROC NEAR ;显示AL中的十进制数
PUSH AX
PUSH CX
PUSH DX
PUSH AX
MOV CL,4 ;AL中的高十六位
SHR AL,CL
ADD AL,30H ;十六进制数变换成ASC码
MOV AH,02
MOV DL,AL
INT 21H ;显示一位字符
POP AX
AND AL,0FH ;AL中的低十六位
ADD AL,30H
MOV AH,02H
MOV DL,AL
INT 21H
POP DX
POP CX
POP AX
RET
DISPAL ENDP
CODE ENDS
END START
汇编没有问题,但debug的时候用G指令的结果全是0,有4、5行