汇编语言中ADC怎么调用? 我要用汇编运行12345+67890=80235全部显示出来,但是不成功,不知道错哪了。
我用DEBUG 调试出在ADC那里跳过了,不知道怎么回事?请高手赐教!
DATAS SEGMENT
X DB 1,2,3,4,5
Y DB 6,7,8,9,0
Z DB 6 DUP(?)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,5
MOV SI,0
K1: MOV DL,X[SI]
ADD DL,30H
MOV AH,02H
INT 21H
INC SI
LOOP K1
MOV DL,'+'
MOV AH,02H
INT 21H
MOV CX,5
MOV SI,0
K2: MOV DL,Y[SI]
ADD DL,30H
MOV AH,02H
INT 21H
INC SI
LOOP K2
MOV DL,'='
MOV AH,02H
INT 21H
CLC
PUSHF
MOV CX,5
MOV SI,4
K3: MOV DL,X[SI]
POPF
ADC DL,Y[SI]
MOV AL,DL
AAA
PUSHF
MOV Z[SI+1],AL
DEC SI
LOOP K3
MOV CX,5
MOV SI,0
K4: MOV DL,Z[SI]
MOV DL,30H
MOV AH,02H
INT 21H
INC SI
LOOP K4
MOV AH,4CH
INT 21H
CODES ENDS
END START
补充:已解决,谢谢各位!
追问:还是不行……
答案:已经解决了?
是不是和下面的改动类似?
……
MOV DL, '='
MOV AH, 02H
INT 21H
;---------------下面是5位非压缩的BCD码相加.
CLC
MOV SI, 4
MOV CX, 5
K3: MOV AL, X[SI]
ADC AL, Y[SI]
AAA
MOV Z[SI + 1], AL
DEC SI
LOOP K3
;---------------下面第6位BCD码.
ADC AL, 0
MOV Z, AL
;---------------下面是6位和的BCD码显示.
MOV CX, 6 ;5
MOV SI, 0
……
其他:我觉得你的堆栈段不完整,使得堆栈操作不能正常执行,你改成如下试试:
STACKS SEGMENT STACK
DW 10 DUP (?)
STACKS ENDS 期待
上一个:大家好,我想问一下单片机C语言中有没有带进位的循环右移或者左移的指令,与汇编语言中的RRC或者RLC类似。
下一个:汇编语言MOV指令