1、代码段中使用数据
例:
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
mov bx,0
mov ax,0
mov cx,8
s: add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end
dw:定义字型数据 define word
db:定义字节数据 define Byte
使用dw,db定义数据(数据之间用逗号分隔)
2、在代码段中使用栈
assume codesg
codesg segment
dw 数据
dw 0,0,0,0,0,0,0,0
start:
mov ax,cs
mov ss,ax
mov sp,32 ;设置栈顶ss:sp指向cs:32
mov bx,0
mov cx,8
s: push cs:[bx] ;入栈
add bx,2
loop s
mov cs:[bx]
mov cx,8
s0: pop cs:[bx] ;出栈
add bx,2
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
3、将数据、代码、栈放入不同的段
如果数据、栈和代码需要的空间超过64K,就不能放入一个段中(CPU限制)
assume cs:code,ds:data,ss:stack
为这三个段起了具体含义的名称。
c segment
dw 0,0,0,0,0,0,0,0
c ends
为段添加数据。
mov ax,stack
mov ss,ax
mov sp,16
设置ss指向stack,设置ss:sp指向stack:16
把stack段当做栈使用。
程序仍从程序入口(如:start)开始执行。