第2章 汇编语言程序中的指令与伪指令.ppt
文本预览下载声明
第2章 汇编语言程序中的指令与伪指令 本 章 提 要 本章在第一章的基础上,更深入详细地说明了8086/8088处理器的汇编语言中的指令和伪指令的格式、成分和使用方法及注意要点。本章知识的是读者学习和掌握其它处理器汇编语言的指令和伪指令的基础,也是学习第三章编程的基础,非常重要。 2.1 汇编语言的语句格式、运算符及表达式 2.1.1 汇编语言语句格式 组成:[名字] 操作符 [操作数] [;注释] 指令语句 LOP1:MOV BL ,[SI] ; 伪指令语句 A DW 5 名字,又称为标识符。 指令语句的名字称为“标号”, 后面一般要跟冒号。表示该指令所存放内存单元的符号地址; 伪指令语句名字的成分较多,有:段名、变量名、符号、记录、结构等, 与标号不同,后面不跟冒号,跟空格符。 (2)命名 使用的字符有:字母A~Z,字母a~z ;不区别大小写。 数字0~9;数字不能作为名字的第一个字符。 专用字符 ? @ _ $ * . 等。其中“.”只能作为名字的第一个字符,“?”不能单独使用。 不能用汇编语言的指令助记符、伪指令名、寄存器名、及其他符号名, 如SEGMENT、START、SUM等等来命名。名字要好记易用。名字使用的字符长度不得超过31个。 合法的名字项,如:DATA1 STR $A1 A? .S2@ _CODE OA_2 fah …… 非法的名字项,如:3DATA,因数字打头; S.TR ,因“.”不在名字的第一个字符; $-A1 ,因含非法字符“-”; ? ,因“?”不能单独使用; .S%2 ,因含非法字符“%”; -CODE ,因含非法字符“-”; 0A_2,因0不能打头; MOV ,因MOV是指令助记符; (3)名字属性 名字有3种属性:段属性、偏移属性及类型属性。这些属性可以 通过一些运算符重新指定或重新定义. 1)段(SEG)属性。表示名字所在段的段起始地址。 2)偏移(OFFSET)属性。表示名字在段内偏移地址,标号的偏 移地址存在IP(指令地址指针)中;变量的偏移地址是16位或 32位无符号数,位数取决于段的长度。 3)类型(TYPE)属性。 标号的类型:反映标号转移距离的属性称为标号的类型属性,有 三种类型:该标号在本段内引用,距离在–128~+127之间时称 短标号属性,记为SHORT,指令指针IP长度为1字节。若指明该 指令是段内使用,指令指针IP长度为2字节,距离在–32768~ +32767之间时称近标号属性,记为NEAR。而FAR指明该指令 是段外使用,指令指针IP长度为4字节,两个高字节指明段地 址,两个低字节指明偏移地址。 变量的类型主要定义该变量保留的字节数:DB,DW,DF(6个字 节长度),DD (双字,4个字节长度),DQ(8个字节长度),DT(10 个字节长度)等。对应的类型号1、2、4、6、8、10。 2.操作符 操作符就是指令、伪指令或宏指令的助记符。 对于指令,汇编程序把操作符翻译成机器语言指令,说明要机器“作什么?”; 对于伪指令,汇编程序根据操作符的提示,完成数据定义、分配存储区域、表达式赋值、指令系统的选择、地址计数器的设置与定位、指示源程序结束以及“宏定义”等等工作。 不产生机器语言指令,仅指示汇编程序怎样将源汇编程序翻译成目标程序。 对于宏指令,汇编程序根据操作符的提示,完成宏调用和宏展开。 3.操作数 操作数是操作符的操作对象,由一个或多个表达式(详见2.1.2操作数的表达式)组成,当有两个或两个以上的操作数时,各操作数之间用逗号隔开。 对于指令,操作数通常是操作数的地址表达式(请读者回忆“寻址方式”),如常数、寄存器,存储单元; 对于伪指令或宏指令,操作数通常是它们所要求的参数,要给出定义。 4.注释字段 注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分,用来说明本条指令(或本段程序)在程序中的功能和作用。 2.1.2 操作数及其表达式 1.常量 (1) 数值常数 (2) 字符串常量 (3) 符号常量 2.表达式 (1)数值表达式 X +1 ;表达式为变量名“X”的值加1 19 MOD 7 ;19除7的余数是5 AND AX ,075FH ;将(AX)和075FH按位作“与”运算 (2) “?“表示预留的存储空间。 (3) 地址表达式的运算结果是内存的偏移地址。 第一章讲过的“寻址方式”,都是简单的地址表达式。如地址表
显示全部