将数据,栈,代码放入不同的栈
定义数据
db define byte 定义字节类型数据
dw define word 定义字型数据
dd define dword 定义双字类型数据
dup:定义多个数据
db 10 dup (1) :定义10个 db 类型的 1
在汇编源程序中,数据不能以字母开头,否则要在前面加0。如:A0001h要写为0A0001h
以字符形式定义数据:
db ‘unIX’
相当于 db 75H,6EH,49H,58H,其中“75H,6EH,49H,58H” 分别是 ‘unIX’ 对应的ASCII码值。
再如:
mov al,‘a’
相当于mov al,61H
在代码中适用数据
通过 dw 创建自定义数据,数据存储在 CS:[0] ~[xxxx]

因把自定义数据放在了指令所在内存,所以要自己制定指令开始执行的位置。
在程序的第一条指令的前面加上一个标号start,并把start加在指令end的后面:
code segment
dw ... 数据 ...
start: ...
代码
...
code ends
end start
在代码中适用栈
设定SS和SP的值
将数据,代码,栈放入不同的段

这样设置代码的格式,数据,栈和代码会被放在不同的段中,即段地址寄存器CS,DS,SS各不相同:

在程序中,段名就相当于一个标号,上面的指令 mov ax,data 的含义就是将名称为data的段的段地址送入ax。一个段中的数据的段地址可由段名代表,偏移地址就要看它在段中的位置了。如上面程序data段中的数据 “4”的地址就是:data:6(一个字型数据占两个字节)。

浙公网安备 33010602011771号