簡體   English   中英

如何在 x86 程序集中將 8 位地址移動到 16 位寄存器中?

[英]How can I move an 8-bit address into a 16-bit register in x86 assembly?

在這里,我試圖將變量 X(它是一個 8 位變量)移動到寄存器 bx(它是一個 16 位寄存器)中。 在這種情況下,如何將 X 的值移動到寄存器 bx 中?

.686p
.model flat,stdcall
.stack 2048

.data
X byte 5
ExitProcess proto, exitcode:dword
.code

start:
invoke  ExitProcess, 0

mov bx, X; 1>p4.asm(13): error A2022: instruction operands must be the same size

end start ;what does the end statement do?

除了 Rahul 的回答之外,如果您還需要將bh歸零並且正在處理任何 80386 或更新版本(如.686p ),則為:

movzx bx, X

如果您使用 X 作為有符號值並且需要對bx進行符號擴展:

movsx bx, X

BX 的低 8 位可作為 BL 尋址。

所以,你需要做的就是: mov bl, X

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM