- 封装
- 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,4c00hint 21h
codesg ends
end start
- 分段```cppassume cs:code,ds:data,ss:stack ;assume对除了CS以外的其它段寄存器,仅仅只是关联了段名,以便在访问段内变量时程序可以知道用哪个段寄存器,并没有在程序加载时将段地址装入段寄存器data segmentdw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H;存放常量data endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,ax ;ds:[bx]mov bx,0mov cx,8s:push [bx]add bx,2loop smov ax,4c00hint 21hcode endsend
- 如何段中饿数据栈N个字节,则程序加载后这段实际占的空间时16x(N/16+1)(16位CPU)
