0

所以我遇到了汇编语言的问题。我需要一种方法,仅使用“and”和“or”指令从“not”指令中获得相同的预期结果。所以如果我有:

AL = 1011000

not AL = 0100111

但我只需要使用和/或指令的结果。

我想我必须使用屏蔽位等,但到目前为止还没有运气。即使是在正确的方向上轻轻一点也将不胜感激!

4

2 回答 2

1

这很容易:

mov ah, 11111111b    ; this is your mask
mov al, 00010011b    ; anything you want the 'not' from
xor al, ah

而已!甚至没有使用 and 运算符。
我不知道您使用的是什么汇编程序,但这适用于 nasm。

于 2012-11-28T20:03:29.313 回答
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
于 2012-11-28T04:36:30.103 回答