我是汇编语言的新手,我不确定为什么我的代码无法正常工作。
我正在以ASCII格式输入和显示,我可以看到1和3,但是为什么不显示相加和?
我的程序只是假设要执行加法。并显示如下内容:
'> 1 + 3 = 4
如果输入是1和3,则用户输入!它停止,否则循环返回。
Loop,Load Greater
Output /for the ">" symbol
Input
Output
Store X /Taking input, storing and displaying 1st operand
Load Addr
Output /Loading and displaying "+"
Input
Output
Store Y /Inp, str, displaying 2nd operand
Load Equal
Output /Display "="
Load X
Add Y
Output /Adding then displaying sum
Input
Store Cond
Skipcond 800
Jump Loop
Halt
Greater, DEC 62
X, DEC 0
Addr, DEC 43
Y, Dec 0
Equal, Dec 61
Cond, DEC 0```
为了获得类似!
的字符,您需要将模拟器置于接受unicode字符而不是数字(十六进制/十进制/二进制)的输入模式。当然,为了打印类似>
和=
的字符,您还需要将输出配置为unicode。
现在您正在使用ascii / unicode输入和输出,处理字符就是游戏的名称。 (多位数字是字符序列。)
ASCII数字1
的值为49,3
为51。您要添加49 + 51并得到100,这是小写d
的ASCII代码。您需要减去一个ascii 0
(即48),然后得到52,即ascii 4
。
如果需要数值4,则必须从两个输入数字中减去0
(48)。而且,如果您想将总和值打印为ascii中的数字,则需要在结果中添加48。在这种情况下,这将是两个48的减法和一个相同的加法-因此,捷径,只需减去一个48就会显示数字。
但是,一旦处于处理字符的模式,如果要打印多个数字(例如,求和> 10,则需要从整数到ASCII的真实转换(也许反之亦然)。) >
要测试!
,您需要减去!
的ASCII码,即33,然后是一个SkipCond 000/Jump Loop
序列,该序列测试零,并跳过零的后向分支(等于!
)。