所以我遇到了彙編語言的問題。我需要一種方法,通過僅使用'和'和'或'指令來從'not'指令獲得相同的期望結果。所以,如果我有:執行彙編邏輯'not'指令
AL = 1011000
not AL = 0100111
但我只需要使用結果和/或說明。
我假設我必須使用屏蔽位等,但迄今爲止還沒有運氣。即使在正確的方向稍微推動,將不勝感激!
所以我遇到了彙編語言的問題。我需要一種方法,通過僅使用'和'和'或'指令來從'not'指令獲得相同的期望結果。所以,如果我有:執行彙編邏輯'not'指令
AL = 1011000
not AL = 0100111
但我只需要使用結果和/或說明。
我假設我必須使用屏蔽位等,但迄今爲止還沒有運氣。即使在正確的方向稍微推動,將不勝感激!
你可以在一個循環中做(未經測試)。但它浪費了登記冊。
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
如果您願意使用「AND」和「OR」以外的指令作爲OP指定,則可以使用「mov AH,0」,「sub AH,AL」,「DEC AH」。 –
是的,這是正確的。這是一個使用2補碼的非常簡單的解決方案。非常聰明! –
這很簡單:
mov ah, 11111111b ; this is your mask
mov al, 00010011b ; anything you want the 'not' from
xor al, ah
這就是它!甚至沒有使用過和運算符。
我不知道你在用什麼彙編語言,但是這個和nasm一起工作。
OP明確表示「只使用AND和OR」操作。 XOR不是其中之一。 –
@IraBaxter我知道,但只有AND和OR是不可能的。 XOR至少類似於OR;) – qwertz
只有AND和OR是不可能的。 – Brendan