You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编中word ptr对dd变量及数组的+1寻址差异咨询

问题解答

不管是单个dd变量还是dd数组,汇编里的符号num始终代表第一个元素的起始内存地址,num + 1就是这个起始地址向后偏移1字节的位置,和后面是否有其他数组元素无关。

第一段代码分析

代码如下:

.data
    num dd 090F0433H
    .code
    mov ax, @data
    mov ds, ax
    mov ax, word ptr num + 1

单个dd变量num的值为090F0433H,x86架构采用小端存储,内存中字节从低到高排布为:
33H → 04H → 0FH → 09H

word ptr num + 1 是从num起始地址+1的位置读取2个连续字节,也就是04H和0FH,最终ax的值为0F04H。

第二段代码分析

代码如下:

.data
    num dd 090F0433H,081234FEH
    .code
    mov ax, @data
    mov ds, ax
    mov ax, word ptr num + 1

num是包含两个dd元素的数组,第一个元素起始地址为num,第二个元素起始地址为num + 4(每个dd占4字节)。

num + 1依然指向第一个元素起始地址偏移1字节的位置,读取的是第一个元素的第2、3字节(对应内存中的04H和0FH),最终ax的值还是0F04H——这不是第二个元素的第一个字节,第二个元素的第一个字节在num + 4的位置。

内容的提问来源于stack exchange,提问作者zizo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:17