汇编(1)

指令语句格式

【标号:】指令助记符 操作数;注释

标号:是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号‘:’

指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型

操作数:操作数表示指令助记符的操作对象

注释:均已‘;’开始

伪指令语句格式

【符号名】伪指令符 操作数 ;注释

符号名:是伪指令语句的一个可选项

伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB,DW,DD,段定义伪指令SEGMENT,假定伪指令ASSUME等

操作数:伪指令后面的操作数可以是常量,字符串,变量,表达式等,各个操作数之间必须以‘逗号’分隔

注释:伪指令的注释必须以‘;’开始

各种形式数字常量格式对照表

字符串常量

字符串常量是用单引号引起来的一个或多个字符。字符串常量是以各字符的ascii码表示。如‘A’用41H表示,字符串'A1B2'用41H,31H,42H,32H表示

变量

  1. 段属性
  2. 偏移地址属性
  3. 类型属性(DB/DW/DD)

变量的定义

表达式项是给变量或指定存储单元附上初值,它有以下几种形式:

  • 数值表达式
  • 字符串表达式
  • ?表达式
  • 带DUP的表达式

数值表达式

数据定义伪指令可以为一个或连续的存储单元设置数值初值

DATA	SEGMENT
	A	DB	11H,12H,13H
	B	DW	1122H,3344H
	C	DD	12345678H
DATA	ENDS

字符串表达式

字符串表达式中的字符串必须用引号引起来。DB,DW,DD伪指令将字符串中的各字符均已ascii码形式存放在相应的存储单元,表示形式各不相同

DATA	SEGMENT
STR1	DB	‘123’
STR2	DW	‘AB’,‘A’
STR3	DD	‘AB’
DATA	ENDS

?表达式:?表达式只分配存储单元,不赋值

CNT DB ?
BUF DW ?

带DUP的表达式

在表达式中使用重复数据操作符DUP,可以为连续的存储单元提供重复数据,其格式为:

N DUP (表达式)

 其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定

BUF DB 100 DUP (0)

以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元

标号

标号是一条指令语句的符号地址。在汇编原程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,一边在转移类指令(含子程序调用指令)中直接引号这个标号。因此,标号可作为转移类指令的操作数,即转移地址。

NEXT:MOV AL,[SI] ;带标号NEXT的指令
      | 
      |
    DEC CX
    JNC NEXT

属性

  1. 段属性
  2. 偏移地址属性
  3. 类型属性(near/far)

算术运算符

  • +(正号),-(负号)
  • +(加),-(减),*(乘),/(除),mod(取模)

算术运算符与立即数,常量,括号等构成数值表达式

变量不能参数算术运算构成数值表达式

逻辑运算符

运算符类型

  • AND,OR,NOT,XOR
  • SHL,SHR

逻辑运算符可与立即数,常量,括号等构成数值表达式

关系运算符

  • EQ(=),NE(!=),LT(<),GT(>),LE(<=),GE(>=)
  • 关系运算符可与立即数,常量,变量,括号等构成数值表达式。
  • 关系运算只能有0(假)与0ffh(真)两个返回值

返回值与二进制补码形式表示,位数由目的操作数决定

属性运算符

属性运算符是面向变量符号

属性操作符的类型

  • 返回值型:获取变量或标号的相关属性返回值
  • 强制转换型:强制改变变量或标号的相关属性

变量与标号是在数据定义与程序中设置的标识符

变量:表示数据的地址

        B1 DB 12H

 标号:表示指令的地址

        LOOP1: MOV AX,BX

段属性操作符 SEG

格式:SEG <标识符>

功能:返回标识符所在段的段地址

偏移量属性操作符offset

格式:offset <标识符>

功能:返回该标识符的段内偏移地址

类型属性操作符type

格式:TYPE <标识符>

功能:返回变量与标号的类型值

标识符类型

TYPE

字节(DB

1

字(DW

2

双字(DD

4

近标号

NEAR

-1

远标号

FAR

-2

 长度属性操作符 LENGTHOF

格式:lengthof <变量名>

只能应用于变量

功能:返回变量所定义的数据个数

容器属性操作符 sizeof

格式:

sizeof <变量名>

只能应用于变量

功能:返回变量所站存储单元的数目

强制属性操作符ptr

格式:<类型名> PTR <标识符>

<类型名> PTR <任何一种存储单元寻址方式>

功能:将标识符的类型属性临时性的强制为指定的类型

该强制只在本条指令内有效

常用的类型:

  • BYTE,WORD,DWORD,NEAR,FAR

 

表达式

表达式是由运算符,操作符,常量变量等构成的式子

注意表达式中不能出现寄存器,因为在汇编期间程序尚未执行

地址计数器引用符号$

符号使用方法

  • 符号使用方法

格式:$[+-Imm]

其值表示当前偏移量计数器的值

助记符

每个操作数在内存中存放所占的字节数

常量定义伪指令

赋值伪指令EQU

格式:<标识符> EQU <表达式>

功能:用于指定表示符来代替表达式符或符号

例如:DATA EQU 2

MOVE EQU MOV

注意:该语句仅为标识符来复制,并不会分配存储空间

汇编程序中会将源程序中的表示符替换成对应的数值

同意程序中,EQU语句对符号名只能定义一次

等号伪指令

格式:

<标识符> = <表达式>

功能定义标识符,来代替表达式的值

与EQU语句的区别

只能定义数值,在同意程序中可对一个符号名重复定义

定位伪指令ORG

格式:org <数值表达式>

功能:将其后的数据或指令从“数值表达式”所指定的位置开始存放

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值