我在一个面试问题网站上得到了这个问题。解决方案将是用汇编语言编写的代码。我在装配方面不是很好,只是想知道如何做到这一点。我知道没有减去我们可以通过添加(-1)减去。这是2的恭维。但究竟我应该怎么写指令对我来说很难。任何帮助将不胜感激。
我有这样的事情:
MOV AX,b
Taking 2's compliment here
ADD AX,above mentioned command
我正在使用X86。 谢谢
答案 0 :(得分:2)
由于有多种方法可以减去一个,并且因为它不完全清楚是什么和不允许的,我会发布几个可能的解决方案 - 接受你的选择。
将add
与否定值一起使用:
mov AX, b
add AX, -1
mov b, AX
使用减量:
mov AX, b
dec AX
mov b, AX
使用否定+加法:
mov AX, b
neg AX
add AX, 1 ; inc AX also works
neg AX
还有无数其他可能性。
答案 1 :(得分:0)
mov CX,b
loop Here
@Here:
mov b,CX
答案 2 :(得分:0)
如果这是X86或其他一些处理器,那么您可以立即添加内存(英特尔格式)
value dd 1234 ;original value (could be any value)
; ...
add value, -1
或者只是从内存中减少:
dec value
或其他令人费解的事情:
neg value
not value
答案 3 :(得分:0)
在我看来,不使用减去减去一个最明显的方法是:
sub AX,1
这比dec
更有利于它相应地设置标志。