汇编语言——伪指令


assume

作用:

  1. 编写程序,需要经过编译软件,经过编译后,才形成机器码,再去控制CPU。但对于assume语句,并不生成机器码。因此,代码中仍必须有给段寄存器的操作。
  2. assume对除了CS以外的其他段寄存器,仅仅只是关联了段名,以便在访问段内变量时程序可以知道用哪个段寄存器,并没有在程序加载时将段地址装入段寄存器。

换句话说,assume的作用是让编译器知道在代码段中使用的变量来自于哪个段,从而可以利用段寄存器寻址。而将段地址装入段寄存器的任务仍然要在代码中实现。

 

 

 

db,dw,dd

作用:

db定义字节类型变量,一个字节数据占1个字节单元

dw定义字类型变量,一个字数据占2个字节单元

dd定义双字类型变量,一个双字数据占4个字节单元

 

 

 

segment系列指令

定义格式:

segment_name segment [定义类型] [组合类型] [类别名]

…  ;这里写代码

segment_name ends

作用:

segment是段,是段定义的伪指令

1.定位类型

指明段开始的边界,如para,它使段定位在小段的边界,段首地址正好能被16整除,定位类型未指明时默认为para。

段的定位类型又4种,分别是:
(1)page(页起始),起始地址以00H结尾,能被256整除

(2)para(节起始),起始地址以0H结尾,能被16整除

(3)word(字起始),起始地址末尾为0,是偶地址

(4)byte(字节起始),起始地址为任意边界

 

2.组合类型

决定本段是否要和其他段组合在一起,组合类型有:stack, common, public

 

3.类别名

连接时用于相关段组合在一起,如代码段 ’code’ ,数据段 ‘data’ ,堆栈段 ‘stack’

 

 

 

变量定义命名方法

格式:

变量名 db/dd/dw 数据

 

(代码中可使用)

type 变量名

seg 变量名

size 变量名

offset 变量名

 

作用:

type可以获取变量的类型,如果是db定义的则为1,dw定义的则为2,以此类推。

seg可以获得变量的段地址

offset可以获得变量的偏移地址

length对于变量中使用DUP的情况,返回分配的单元数(例如 3 dup(?))则返回3

size为 type*length

 

 

 

 

 

$

$为地址计数器伪指令,用于表示下一个可用单元的地址

 

 

 

 

 

equ

格式:

<符号名> equ <表达式>

作用:

equ为等值伪指令,用于给符号定义一个值,别的符号名、表达式或指令助记符

 

 

 

 

 

 struc

格式:

结构体名 struc

成员名 dw/dd/db 默认值

结构体名 ends

作用:
定义结构体

 

例子

 

 

 

 

 

 

 

dup

dup是一个操作符,用来进行数据重复

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM