将数据,栈,代码放入不同的栈

定义数据

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(一个字型数据占两个字节)。

 

posted @ 2019-11-05 15:40  tianqibucuo  阅读(202)  评论(0)    收藏  举报