汇编Word ptr意思

iTe*_*hno 3 assembly pointers cpu-word mov

.data
num dd 090F0433H
.code
mov ax, @data
mov ds, ax
mov ax, word ptr num
mov bx, word ptr num+2
mov cl, byte ptr num+1
Run Code Online (Sandbox Code Playgroud)

对于mov ax,单词ptr num,AH = 04,AL = 33.

为什么?有人可以向我解释如何解决这个问题吗?

Fif*_*nik 9

num dd 090F0433H
Run Code Online (Sandbox Code Playgroud)

这在内存中定义了一个双字.由于x86使用很小的字节序,因此该双字的最低字节将存储在最低地址.您选择将此最低地址命名为"num".

在记忆中:

33h,04h,0Fh,09h
^
|
\num points here
Run Code Online (Sandbox Code Playgroud)
mov ax, word ptr num
Run Code Online (Sandbox Code Playgroud)

当你写这篇文章时,mov ax, word ptr num你有效地要求检索"num"地址的最低字(2个字节).
你得到第一个字节33h in AL和第二个字节04h in AH,结合在一个寄存器中:AX=0433h.

mov bx, word ptr num+2
Run Code Online (Sandbox Code Playgroud)

这个工作方式类似,但只会给出最高的单词.
你会得到BX=090Fh

mov cl, byte ptr num+1
Run Code Online (Sandbox Code Playgroud)

在这里,您要求检索"num"地址处的第二个字节.
你会得到的CL=04h.