编程计算以下8个数据的和,结果存在ax寄存器中:
0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H1
2
3
4
5
6
7
8
9
10
11
12
13
14
15assum 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指向下一个数据所在的字单元。