装配,添加功能

时间:2015-11-06 20:39:03

标签: assembly x86-emulation

我的汇编代码有问题。我想在交换数字后添加用户输入两个数字但是当我添加这些数字时添加功能不能正常工作。谢谢

这个代码

var lastChar = Prompt.slice(-1);
if(lastChar == '?') { .... }

1 个答案:

答案 0 :(得分:1)

你的程序输入两个1位数字,因此总和可能高达18。你的代码没有处理这种可能性,但这可能是故意的。

当您接受输入时(希望)收到48到57范围内的ASCII字符(它们代表数字0到9)。在将这些值分配给变量 num1 num2 之前,您应该通过减去48来消除这些值的字符性质。

mov ah, 09h         ;display first msg
mov dx, offset msg1
mov ah, 01h         ;taking input
int 21h
sub al, 48
mov num1, al
mov ah, 09h         ;display second msg
mov dx, offset msg2
int 21h
mov ah, 01h         ;taking input
int 21h
sub al, 48
mov num2, al

这样,您以后的总和将是两个数字的真实总和。

准备好输出任何结果时,您必须将值转换为文本表示形式。只需添加48。

mov ah, 09h         ;display third msg
mov dx, offset msg3
int 21h
mov ah, 02h
mov dl, num1
add dl, 48
int 21h
mov ah, 02h
mov dl, num2
add dl, 48
int 21h

mov ah, 09h         ;display fourth msg
mov dx, offset msg4
int 21h
mov ah, 02h
mov dl, sum
add dl, 48
int 21h