汇编语言——第3章 宏汇编语言.docVIP

  • 7
  • 0
  • 约1.82万字
  • 约 30页
  • 2017-04-11 发布于贵州
  • 举报
汇编语言——第3章宏汇编语言汇编语言——第3章宏汇编语言

第三章 宏汇编语言 一:宏汇编语言格式 3.1.1 指令语句格式 指令语句的一般格式如下: [标号:] 指令助记符 操作数 ;注释 标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:” 。 2.指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。 3.操作数:操作数表示指令助记符的操作对象。 4.注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。 3.1.2 伪指令语句格式 伪指令语句格式如下: [符号名] 伪指令符 操作数 ;注释 1.符号名:符号名是伪指令语句的一个可选项。 2.伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令ASSUME等。 操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。 4.注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。 3.2 汇编语句表达式 3.2.1 常量 1.数值常量 2. 字符串常量 字符串常量是用单引号或双引号引起来的一个或多个字符。字符串常量是以各字符的ASCⅡ码表示的。如‘A’用41H 表示,字符串‘A1B2’用41H,31H,42H,32H表示。 3.2.2 变量 1.变量 (1)段属性 (2)偏移地址属性 (3)类型属性 2.变量的定义 表达式项是给变量或指定存储单元赋予初值,它有以下几种形式: (1)数值表达式 数据定义伪指令可以为一个或连续的存储单元设置数值初值。 【例】为数据段分配存储单元。 DATA SEGMENT A DB 11H,12H,13H B DW 1122H,3344H C DD DATA ENDS 上述变量的存储单元分配及初始化情况如下图3.1所示。 数据段中数据存储分配图 (2) 字符串表达式 字符串表达式中的字符串必须用引号引起来。DB、DW、DD伪指令将字符串中的各字符均以ASCⅡ码形式存放在相应的存储单元,但表示形式各不相同。 【例】为字符串分配存储单元。 DATA SEGMENT STR1 DB ‘1234’ STR2 DW ‘AB’,‘CD’,‘A’ STR3 DD ‘AB’ DATA ENDS 其存储单元分配如下图所示。 (3)地址表达式(只适用DW和DD两个伪指令) 如果该地址表达式为一变量(或标号)名,用DW伪指令则是取它的偏移地址来初始化变量,用DD伪指令则是取它的段首址和偏移地址来初始化变量。 例如:BUF1 DW A BUF2 DD B (4) ? 表达式 ?表示不确定的值 (5)带DUP的表达式 在表达式中使用重复数据操作符DUP,可以为连续的存储单元提供重复数据,其格式为: N DUP(表达式) 其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定。 例如: BUF DB 100 DUP(0) 以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元。 3.2.3 标号 标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。 【例】符号地址表示。 ┆ NEXT:MOV AL, [SI] ;带标号NEXT的指令 ┆ DEC CX JNE NEXT;标号NEXT作转移指令的操作数 标号也具有三种属性 1.段属性 2.偏移地址属性 3.类型属性 3.2.4 表达式与运算符 1.算术运算符 算术运算符包括:+(加)、-(减)、*(乘)、/(除)、MOD(求模)、SHL(左移)、SHR(右移)几种,它既可以用于数值表达式又可用于地址表达式。 【例】用算术运算符进行数值表达式运算。 ┆ NUM1 EQU 25*4 –50 ;NUM1=50 NUM2 EQU NUM1 / 7 ;NUM2=7 NUM3 DB NUM1 MOD 7 ;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB ‘12345’ NUM4 EQU VAR2-VAR1 ;NUM4=5 NUM5 EQU 0FH ┆ MOV AL,NUM5 SHL 4 ;(AL) MOV

文档评论(0)

1亿VIP精品文档

相关文档