所以我遇到了汇编语言的问题。我需要一种方法,通过仅使用'和'和'或'指令从'not'指令获得相同的期望结果。如果我有:
AL = 1011000
not AL = 0100111
但我只需要和/或说明就需要这个结果。
我认为我必须使用屏蔽位等,但迄今为止没有运气。即使在正确的方向上稍微推动也会受到赞赏!
答案 0 :(得分:2)
这很简单:
mov ah, 11111111b ; this is your mask
mov al, 00010011b ; anything you want the 'not' from
xor al, ah
就是这样!甚至没有使用和操作员。
我不知道你正在使用什么汇编程序,但这与nasm一起工作。
答案 1 :(得分:0)
你可以循环(未经测试)。但它浪费了寄存器。
NotAL:
mov bl, 1
mov bh, 0feh
L3:
test al, bl
jne L1
or al, bl
jmp L2
L1:
and al, bh
L2:
shl bl, 1
rol bh, 1
test bl, bl
jne L3
ret