3
我正在編寫NASM彙編代碼,並且必須做一些索引編址。我將索引存儲在$ al中,但x86不會讓您將$ al用作索引寄存器,並且我已經使用$ bl,所以我不能使用$ bx。所以我需要把我在$ al中的字節放到一個32位寄存器中,比如$ ecx,然而,當我嘗試時,它會拋出'操作碼和操作數無效組合'的錯誤。有沒有辦法做到這一點?NASM - 如何將8位寄存器移動到完整的32位寄存器中?
sub al, 97 ; char - 97
push ecx ; b/c al cant be used as indexing register
mov ecx, al ; move byte in al into ecx
mov bl, [table + ecx] ; value_at(first_table_addr + char) -> bx
pop ecx
所以我的理解是,「零擴展」只是填補了剩餘的24位奇與零ECX?所以不管是有沒有弄髒的少數我把在? –
這是正確的。 – Michael
太棒了,工作,非常感謝你 –