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

如何在DOS x86(16位)汇编中操作数组索引并读写指定值

16位汇编中数组索引的读写操作

你定义的Dots_pos是用dw(16位字)声明的数组,每个元素占2字节,所以索引计算必须基于这个字节长度来做。下面是具体的读写方法:

读取指定索引的元素

假设要获取索引n(从0开始计数)对应的元素值:
因为每个元素占2字节,索引n对应的内存偏移是n * 2。可以用寄存器计算偏移,示例代码:

; 方法1:用BX计算偏移
mov bx, n          ; 把目标索引n放到BX里
shl bx, 1          ; 左移1位等价于乘以2,得到字节偏移
mov ax, [Dots_pos + bx]  ; 把索引n的元素值读取到AX中

或者直接提前算好偏移:

; 方法2:用SI直接存偏移
mov si, n*2        ; 直接计算出字节偏移
mov ax, [Dots_pos + si]

修改指定索引的元素

要把索引n的元素改成新值new_value,同样先算出偏移,再写入内存:

; 用BX的写法
mov bx, n
shl bx, 1
mov [Dots_pos + bx], new_value  ; 将新值写入对应位置

或者用SI:

mov si, n*2
mov [Dots_pos + si], new_value

额外注意点

  • 16位汇编默认用DS段访问内存,如果你的数组放在代码段(和指令一起),需要加上段前缀cs:,比如mov ax, cs:[Dots_pos + bx]
  • 索引从0开始:第一个元素firstLine对应索引0,第二个firstLine+8对应索引1,以此类推

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:33:13