所以我的代码汇编语言如何增加多位十进制ASCII字符串?
mov SI, 0002
mov ah, INPUT[SI]
INC SI
mov al, INPUT[SI]
sub AX, 3030h
aad
inc al
cmp byte ptr INPUT[0002], 39h
jne OTHER
OTHER: aam
add ax, 3030h
mov INPUT[0003], al
mov INPUT[0002], ah
其中输入是所述用户输入的这个部分。 这个代码做的是增加一个2位数字, 我的问题,当一个三位数字要增加。
实施例: 输入:98 输出:99
输入:99 输出:110
期望的结果: 输入:99 输出:100
乘这是嗯,功课? – 2012-07-09 17:13:43
'aam'? 'aad'?圣8086,蝙蝠侠! – 2012-07-09 18:20:37
将两个输入数字转换为AX中的0-9整数后,您只增加低位数字,而不从AL进位到AH。所以你的代码会执行'39' - >'30'而不是'40'。处理3位数的结果是一个单独的,更难的问题。另外,'jne OTHER'是无用的,因为分支的两边(落后或被占用)是相同的地方。另外,前4条指令可以是'mov ax,[INPUT + 2]''''xchg al,ah'。 (或者更有效地说,'rol ax,8',除非你需要向后兼容8086,它不会立即旋转且计数> 1) – 2017-07-12 16:28:07