【发布时间】:2020-08-20 23:50:25
【问题描述】:
请问我犯了什么错误导致我的第 2 位值(R2)总是与第 3 位值(R1)相同?
例如:
我所做的是总价:88,
给予金额:100,
所以最终答案由 3 位组成,应该是 012,但它显示为 022
例如:
2 是总价 99,
金额:100,
最终答案应该是 001,但结果是 011
下面是我用来计算的函数。
GIVECHANGE:
MOV AH,09H
LEA DX,STRCHANGEGIVEN
INT 21H
MOV AL,TTL ;--move total price into AL TTL=88
SUB TTG,AL ;--use total given - AL TTG = 100
MOV BL,TTG ;-- BL = 100-88 = 12
MOV TTC,BL ;--store result to TTC = 12
MOV AX,0
MOV AL,TTC
DIV TEN
MOV Q1,AL
MOV R1,AH
MOV AX,0
MOV AL,R1
DIV TEN
MOV Q2,AL
MOV R2,AH
ADD Q2,30H
ADD R2,30H
ADD R1,30H
MOV AH,02H
MOV DL,Q2
INT 21H
MOV AH,02H
MOV DL,R2
INT 21H
MOV AH,02H
MOV DL,R1
INT 21H
【问题讨论】:
-
我会在调试器中单步调试代码,检查每一步的寄存器和变量会发生什么变化,看看代码的行为与我的预期有何不同。
-
MOV AL,R1应该是MOV AL,Q1。 -
W.Chang 谢谢你,你提供的方式解决了我的问题:D