如何寫入使用程序集清除AL寄存器中位0和1的指令?清除程序集寄存器中的位
回答
和Al 11111100b假設MASM格式
AL是AX寄存器的低字節,所以你應該能夠通過AND AL 0xFC屏蔽掉低位。
AND AL,0xfc
把它等於零?
像
MOV人,00000000
AX = 16位 人= 8位
現在如果有什麼與人相或答案是一樣的什麼邏輯或
但
如果有任何事情與al結合答案將是「0」
所以我想清除它與所有1或全0取決於你的工作,以及你如何確定沒有什麼在註冊表中。
如何評論爲什麼這是不明確的負面標記/?怎麼了?我也在學習 – user287745 2010-07-16 10:08:13
它看起來似乎並沒有真正理解這個問題和/或不知道如何回答它,這可能就是爲什麼你有一些downvotes。看看其他(正確的)答案,以更好地理解要問什麼以及如何解決問題。一般來說,如果(a)你有理由相信你理解了這個問題,並且(b)你有一些信心,你可以提供一個有用的答案,那麼嘗試回答問題可能是一個好主意。祝你好運。 – 2010-07-16 11:25:18
他只想清除最低2位,而不是整個寄存器(或子寄存器),您的方法會丟棄太多的位,因此它完全是錯誤的方法,只能看到上面的方法。 哈哈,忍耐14秒忍者保羅R是:P – Necrolis 2010-07-16 11:25:33
您可以使用AND操作清除位。
for each bit index `i`
result[i] = boolean_and(first[i], second[i])
.--------- commonly associated symbol for the operation
|
& 1 0 <- first argument
-------
1 | 1 0 <- result
0 | 0 0
^--------- second argument
用一個字節一個例子:
00101100
00111010
&
00101000
所以,你可以使用此操作在寄存器來掩蓋和翻轉位的區域。作爲第二個參數傳遞一個常數,它有點翻轉起來,你想跟上。
x86 mnemonic: AND a, b
operation: a = a & b
這裏是如何做到這一點,除非你還不瞭解它:
AND eax, 0xfffffffc
AL是EAX的最低字節部分-register所以你可以這樣來做。
這裏的二進制 - >十六進制轉換表:
0000 | 0
0001 | 1
0010 | 2
0011 | 3
0100 | 4
0101 | 5
0110 | 6
0111 | 7
1000 | 8
1001 | 9
1010 | a
1011 | b
1100 | c
1101 | d
1110 | e
1111 | f
哦,你應該從你的後腦勺,如果你要成爲一個有自尊心的彙編程序員知道記住這一點。
還讀了關於OR和XOR位操作。
還有另外一種方法,通過使用xor
例子來做到這一點:
mov al, ff
xor al, 00000011b
al = fc because we cleared bit 0 and 1
只有當位0和位1在xor之前打開時,xor'纔有效,但問題沒有這樣的先決條件,並且不管這些位是否清零。 – 2013-05-23 05:12:02
- 1. 程序集retn,jmp,進程寄存器
- 2. sparc程序集和%y寄存器
- 3. 程序集 - .data,.code和寄存器...?
- 4. PIC 16F628A清除其寄存器?
- 5. 如何將8位地址移入x86程序集的16位寄存器?
- 6. (ARM程序集)向右移位寄存器1將所有位設置爲零
- 7. autofac中的寄存器處理程序
- 8. 在程序集中顯示寄存器的值
- 9. 位屏蔽位寄存器
- 10. x86程序集從32位寄存器中獲取一個字節
- 11. 32位寄存器作爲8位寄存器
- 12. x86程序集MOV指令 - 寄存器到寄存器和存儲器到存儲器
- 13. cuda寄存器的單位
- 14. 64位的dll寄存器
- 15. 將兩個x86 32位寄存器存儲到128位xmm寄存器中
- 16. 在gcc內聯x86_64程序集中約束r10寄存器
- 17. 程序集如何保存和恢復寄存器
- 18. 彙編程序設計 - 將32位寄存器的內容移動到16位寄存器?
- 19. 在彙編程序中移動(移位)兩個寄存器
- 20. 程序集EAX寄存器的行爲奇怪
- 21. 程序集8086:僅彙總MOV和LEA的2個寄存器
- 22. 澄清32位寄存器的子部分x86
- 23. x86中的額外寄存器64位
- 24. 如何設置寄存器中的位?
- 25. 清零8086上的EAX寄存器%
- 26. 移位寄存器Verilog
- 27. SSE 64位寄存器
- 28. 移位寄存器爲std_logic_vector
- 29. 負載32位寄存器
- 30. ALU +移位寄存器
在什麼彙編?在什麼CPU上? – 2010-07-16 05:26:06
自從談到AL以來,CPU顯然是x86。 – mathk 2010-07-16 05:27:12
需要'功課'標籤? – 2010-07-16 10:01:38