- 封装
- dw:define word,定义字型数据
- 数据也可以放在代码段,但是要定义程序的入口start(end通知了编译器程序的入口)
- 数据逆序存放(栈段的使用) ```cpp assume cs:condesg codesg segment dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H ;data dw 0,0,0,0,0,0,0,0 ;stack
start: mov ax,cs mov ss,ax mov sp,32 ;ss:sp(下一个位置) mov bx,0 mov cx,8 s: push cs:[bx] add bx,2 loop s mov bx,0 mov cx,8 s0:pop cs:[bx] add bx,2 loop s0
mov ax,4c00h
int 21h
codesg ends
end start
- 分段
```cpp
assume cs:code,ds:data,ss:stack ;assume对除了CS以外的其它段寄存器,仅仅只是关联了段名,以便在访问段内变量时程序可以知道用哪个段寄存器,并没有在程序加载时将段地址装入段寄存器
data segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H;存放常量
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax ;ds:[bx]
mov bx,0
mov cx,8
s:push [bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end
- 如何段中饿数据栈N个字节,则程序加载后这段实际占的空间时16x(N/16+1)(16位CPU)