目录
在代码段中使用数据

编程计算以下8个数据的和,结果存在ax寄存器中:

0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
assum cs:code 
code segement

dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
mov bx,0
mov ax,0
mov cz,8
s: add ax,cs:[bx]
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end

dw的含义是定义字型数据,dw即“define word”,在这里,使用dw定义了8个字型数据,它们所占的内存空间的大小为16个字节。
程序在运行的时候cs中存放代码段的段地址,所以可以从cs中得到它们的段地址

因为用dw定义的数据处于代码段的最开始,所以偏移地址为0,这8个数据就在代码段的偏移0、2、4、6、8、A、C、E处。程序运行时,它们的地址就是CS:0、CS:2、CS:4、CS:6、CS:8、CS:A、CS:C、CS:E。
用bx存放加2递增的偏移地址用循环来进行累加。在循环开始前,设置(bx)=0,CS:BX指向第一个数据存放的字单元。每次循环中(bx)=(bx)+2,CS:BX指向下一个数据所在的字单元。

文章作者: nocbtm
文章链接: https://nocbtm.github.io/2018/09/10/在代码段中使用数据/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nocbtm's Blog
打赏
  • 微信
  • 支付宝