所以我的代碼彙編語言如何增加多位十進制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