第六章 包含多个段的程序
1、在代码段中使用数据:“dw”定义字型数据,即define word。定义字节型数据db,define byte。dw定义数据处于代码段的最开始,所以偏移地址为0。
2、CPU根据机器指令的不同组合会构成不同的代码。
3、在代码段中使用栈:定义8个字型数据也可以说开辟了8个字型空间。
4、将数据、代码、栈放入不同的段:
实验五:
5、mov ax,a
Mov cs,ax
Mov ax,b
Mov ds ax
Mov ax,c
Mov ss,ax
Mov bx,0
Mov cx,8
S:add ss:[bx],ds[bx]
Add ss:[bx],cs[bx]
Add bx,2
Loop s
6、mov ax,a
Mov ds,ax
Mov ax,b
Mov ss,ax
Mov sp,10
Mov bx,0
Mov cx,8
S:push [bx]
Add bx,2
Loop s
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 assume cs:code,ds:data,ss:stack
2
3 data segment
4 dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
5 data ends
6
7 stack segment
8 dw 0,0,0,0,0,0,0,0
9 stack ends
10
11 code segment
12
13 start: mov ax,stack
14 mov ss,ax
15 mov sp,16 ;设置栈顶ss:sp指向stack:16
16
17 mov ax,data
18 mov ds,ax ;ds指向data段
19
20 push ds:[0]
21 push ds:[2]
22 pop ds:[2]
23 pop ds:[0]
24
25 mov ax, 4c00h
26 int 21h
27
28 code ends
29 end start ;指明程序的入口在start处