汇编程序及试验.ppt
《汇编程序及试验.ppt》由会员分享,可在线阅读,更多相关《汇编程序及试验.ppt(98页珍藏版)》请在三一办公上搜索。
1、第4章 汇编语言程序设计,白 云 飞,微型计算机原理与接口技术,本章主要内容:,汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计,微型计算机原理与接口技术,4.1 汇编语言源程序,了解:计算机的三种语言源程序的结构汇编语言语句格式,微型计算机原理与接口技术,一、计算机设计语言,机器语言汇编语言高级语言,面向机器 的语言,机器语言,汇编语言,高级语言,微型计算机原理与接口技术,汇编程序,汇编语言源程序,用助记符编写,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,微型计算机原理与接口技术,汇编程序的功能,汇编程序的主要功能是将由汇编语言(助记符)编写的源程序翻译成
2、用机器语言(二进制代码)编写的目标程序。下图可用以说明这个功能。,微型计算机原理与接口技术,汇编程序的功能,目标代码文件:其中的地址数据还是浮动的(相对的),不能直接运行;列表文件:包含程序的逻辑地址、代码程序及源程序对照清单,附有引用符号表,可用DOS的TYPE命令输出;交叉索引文件:包含了符号定义行号和引用行号,不能用TYPE命令输出,需要执行CREF文件后生成索引列表文件(REF)才能输出。,观察可得:汇编语言源程序作为汇编程序(MASM或ASM)这个“翻译”的输入,而这个“翻译”的输出是三个文件:,微型计算机原理与接口技术,取值运算符,OFFSET 取得其后变量或标号的偏移地址SEG
3、取得其后变量或标号的段地址,TYPE 取变量的类型LENGTH 取所定义存储区的长度SIZE 取所定义存储区的字节数,用于分析存储器操作数的属性,微型计算机原理与接口技术,取值运算符,取值运算符的格式:(1)SEG 求段基址 格式:SEG 符号名(2)OFFSET 求偏移地址 格式:OFFSET 符号名(3)TYPE 求符号名类型值 格式:TYPE 符号名,微型计算机原理与接口技术,取值运算符,(4)SIZE 求为符号名分配的字节数 格式:SIZE符号名(5)LENGTH 求为符号名分配的项数 格式:LENGTH 符号名 注意:SIZE和LENGTH要求为符号名定义的数据项必须是用重复格式DU
4、P()定义的。,微型计算机原理与接口技术,取值运算符例,MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA,等价于,微型计算机原理与接口技术,取值运算符例,若BUFFER存储区是用如下伪指令定义:BUFFER DW 200 DUP(0)则:TYPEBUFFER 等于2 LENGTH BUFFER等于200 SIZE BUFFER等于400注意:SIZE=TYPE*LENGTH,微型计算机原理与接口技术,属性运算符,属性运算符PTR 用于指定其后存储器操作数的类型 格式:(类型)PTR(符号名)例1:MOV BYTE PTRBX,12
5、H 例2:已知内存变量D1是字节属性,要把它 的两个字节内容送到AX中。MOV AX,WORD PTR D1,微型计算机原理与接口技术,其它运算符,方括号:方括号中内容为操作数的偏移地址段重设符 段寄存器名:用于修改默认的段基地址例:MOV AX,BX MOV AX,ES:BX,微型计算机原理与接口技术,4.2 伪指令,掌握:伪指令的格式及实现的操作伪指令的应用,微型计算机原理与接口技术,伪指令,由汇编程序执行的“指令系统”。伪指令没有对应的机器指令,它不是由8086/8088CPU来执行,而是由MASM-86识别,并完成相应的功能。用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等,
6、微型计算机原理与接口技术,标号名,伪指令,操作数,注释,,,伪指令语句格式,这是一个任选字段。标号名后面不能用冒号“:”,这是它与指令语句的突出区别。不同的伪指令,标号名可以是常量名、变量名、过程名、结构名、记录名等。它们可以作为伪指令语句和指令语句的操作数,这时,标号名就表示一个常量或存储器地址。,这是伪指令语句不可省略的主要成分。伪指令种类很多,如定义数据伪指令DB,DW,DD;段定义伪指令SEGMENT;定义过程伪指令PROC等。它们是伪指令语句要求汇编程序完成的具体操作命令。,本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是一个常数、字符串、常量
7、名、变量名、标号、一些专用的符号等。,这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。,伪指令语句格式,微型计算机原理与接口技术,伪指令,MASM-86识别的伪指令可分成以下几类:(1)符号定义伪指令(8)定位伪指令(2)内存数据定义伪指令(9)列表伪指令(3)段定义伪指令(10)系统隐含进位制伪指令(4)段寄存器说明伪指令(11)连接伪指令(5)子程序定义伪指令(12)记录伪指令(6)模块开始伪指令(13)结构伪指令(7)模块结束伪指令(14)块注释伪指令(15)宏命令伪指令,微型计算机原理与接口技术,符号定义伪指令,格式:(1)名字EQU表达式(2)名字=表达式作用
8、:把表达式的值赋给符号名。区别:在同一程序中,用EQU语句赋值的符号名不能被重新赋值,但用“=”号赋值的符号名可以被重新赋值。“”号表示此项不能缺省,但该符号不需要输入。,微型计算机原理与接口技术,符号定义伪指令,例:CONSTANTEQU100 VAR EQU 30H+99H,EQU说明的表达式不占用内存空间,微型计算机原理与接口技术,内存数据定义伪指令,用于定义数据区中变量的类型此指令主要有以下五大类:,字节定义伪指令DB 定义的变量为字节型字定义伪指令DW 定义的变量为字类型四字节定义伪指令DD 定义的变量为双字型八字节定义伪指令DQ 定义的变量为4字型十字节定义伪指令DT 定义的变量为
9、10字节型,微型计算机原理与接口技术,字节定义伪指令,格式:名字 DB表达式或数据项表 表达式值或项表中的每一项是一个字节数,它们从符号名地址开始按字节连续存放,直到表中数据项结束(地址递增方向)。方括号 表示该项可以缺省。,字定义伪指令,格式:名字 DW 表达式或数据项 除表达式值或项表中的每一项是两个字节数之外,其它与DB伪指令相同。,微型计算机原理与接口技术,四字节定义伪指令,格式:名字 DD表达式或数据项 表达式值或项表的每一项是四个字节数。,八字节定义伪指令,格式:名字 DQ 表达式或数据项表 表达式值或数据项表的每一项是八字节数,各项从小地址一端连续存放,允许浮点数形式,与DD伪指
10、令相同。高四个字节填0。,微型计算机原理与接口技术,十字节定义伪指令,格式:名字 DT表达式或数据项表 表达式值或数据项表的每一项是10个字节数,允许浮点数形式,与DQ伪指令相同,若项表中的数据项是十进制整数书写的,汇编程序按组合的BCD码格式存放,最低字节在高地址一端存放,数据的最高字节的最高位是符号位,“0”表示正,“1”表示负。,微型计算机原理与接口技术,数据定义伪指令,该伪指令主要为数据项分配存储单元并预初值。该伪指令构成的语句格式是:DB 变量名+DW+表达式1,表达式2,DD 其中表达式1,表达式2,是给变量赋予的初值。表达式可以有如下几种情况:(1)数值表达式(2)?表达式(3)
11、字符串表达式(4)带DUP表达式,微型计算机原理与接口技术,数值表达式,例如:DA_BYTE DB 50H,50 DA_WORD DW 0A3F1H,4981H 变量DA_BYTE的内容为50H,它的下一个字节为32H。DA_WORD字单元内容为0A3F1H,它的下一字单元为4981H。,?表达式,不带引号的?表示可预置任何内容。例如:DA_B DB?,?DA_W DW?,?第一条语句是要求汇编程序分配两个字节单位,第二条语句是要求分配两个字单元。这些单元里现在可以是任意值。,微型计算机原理与接口技术,字符串表达式,DB伪指令:为字符串中每一个字符分配一个字节单元。字符串必须是用引号括起来且不
12、超过255个字符。字符串自左至右以字符的ASCII码按地址递增的排列顺序依次存放。DW伪指令:可以给两个字符组成的字符串分配两个字节存储器单元,且这两个字符ASCII码的存储顺序是前一字符在高字节,后一字符在低字节,每一个数据项不能多于两个字符。DD伪指令:仅可给两个字符组成的字符串分配四个字节单元,且这两个字符ASCII码是存储在两个低字节中,两个高字节均存放00H。,微型计算机原理与接口技术,字符串表达式,动画,STRING1 DB ABCDEFSTRING2 DW AB,CD,EFSTRING3 DD AB,CD,微型计算机原理与接口技术,带DUP表达式,DUP是定义重复数据操作符。使用
13、DUP操作符格式是:DB 变量名+DW+表达式1 DUP(表达式2)DD 其中表达式1是重复的次数,表达式2是重复的内容 例如:BB1 DB 12H DUP(ABCD)BB2 DW 10H DUP(4),微型计算机原理与接口技术,ARRAY1 DB 2 DUP(0,1,2,?),ARRAY2 DB 100 DUP(0,2 DUP(1,2),0,3),700bytes,ARRAY2,例 题,动画,微型计算机原理与接口技术,内存数据定义伪指令例题,VAR1 DB 32H,ABCVAR2 DW 1234H,40H,AB DD 12345678H DB?,11000011BARRY1 DB 2 DUP
14、(0,1)ARRY2 DW 2 DUP(?,1),微型计算机原理与接口技术,段定义伪指令,存储器在逻辑上是分段的,各段的定义由伪指令实现 格式:段名SEGMENT定位方式连接方式类 别名:段名ENDS 段定义伪指令为程序的汇编和连接说明了段名、分段的各种属性以及分段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过64KB(字节)。SEGMENT后面的参数是可选项。,微型计算机原理与接口技术,定位方式,定位方式制定段的起始地址边界,方式有以下四种:(1)PAGE:指定起始地址的低8位是0,即其值能被256整除(称为页边界)。(2)PARA:指定起始地址的低4位是0,即
15、其值能16整除(称为段边界)。缺省值是PARA(3)WORD:指定起始地址的最低位是0,即其值能被2整除(称为字边界)。(4)BYTE:指定起始地址是任意值。,微型计算机原理与接口技术,连接方式,连接方式告诉连接程序本段与其它段可按以下方式连接:(1)PUBLIC:告诉连接程序把本段与其它同名类别的段连接起来,公用一个段的起点地址,形成一个物理段。(2)STACK:表示本段是堆栈段。(3)空缺(NONE):表示本段不与任何段连接。(4)COMMON:表示本段与同名同类别的段共用同一段起始地址,即同名同类的段相重叠,段的长度是最长段的长度。(5)MEMORY:表示本段在连接时定位在所有段之上。(
16、6)AT表达式:本段定位在表达式值指定的段地址处。,微型计算机原理与接口技术,连接方式,NONE:不组合,默认状态是NONEPUBLIC:依次连接(顺序由LINK程序确定)COMMON:覆盖连接STACK:堆栈段的依次连接AT 表达式:段定义在表达式值为段基的节边界MEMORY:相应段在同名段的最高地址处,微型计算机原理与接口技术,类别名,类别名是合法的自定义符,它必须用单引号括起来。如代码段(CODE)、堆栈段(STACK)等。凡是类别名相同的段在连接时均按先后顺序连接起来,即不同模块连接时将相同类别的段放在连续的内存区域中。,微型计算机原理与接口技术,格式:ASSUME 段寄存器:段定义名
17、1,段寄存器:段定义名2,功能:说明所定义逻辑段的性质 该伪指令告诉汇编程序在汇编时,段寄存器CS:、DS:、SS:和ES:应具有的符号段基址,以便汇编指令时确定段和建立错误信息。但是段寄存器实际值(CS除外)还要由传送指令在执行程序时赋值。,段寄存器说明伪指令,微型计算机原理与接口技术,例 题,DATA_SEG1 SEGMENT.(伪指令 Directives);数据段内定义各类程序执行需要的相关的数据DATA_SEG1 ENDSDATA_SEG2 SEGMENT(伪指令 Directives)DATA_SEG2 ENDS;还可根据具体程序的需要,定义堆栈段供程序执行过程中保持临时数据,微型
18、计算机原理与接口技术,例 题,CODE_SEG SEGMENT ASSUME CS:CODE_SEG,DS:DATA_SEG1,ES:DATA_SEG2START:MOV AX,DATA_SEG1 MOV DS,AX MOV AX,DATA_SEG2 MOV ES,AX:;完成具体操作的指令序列CODE_SEG ENDS END START,实际操作(实现X+YZ),DATA1 SEGMENT;数据段 X DB 05H Y DB 04H Z DB?DATA1 ENDSCODE1 SEGMENT;代码段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA;数据段基址A
19、X MOV DS,AX;AX DS MOV AL,X;内存单元X的数据AL ADD AL,Y;内存单元Y的数据+ALAL,即X+Y AL MOV Z,AL;AL内存单元Z,即求和结果送回Z MOV AH,4CH;送功能号 INT 21H;系统功能调用,返回操作系统 CODE1 ENDS END START,微型计算机原理与接口技术,子程序定义伪指令,格式:过程名PROC NEAR(或FAR):过程名ENDP 过程名是自定义符。定义过程是为实现子程序调用而设的。调用格式为:CALL 过程名 过程由RET指令返回,它可以不是最后一条指令,它在过程中可以设多点返回。并且过程起始名和终止名必须相同。,
20、微型计算机原理与接口技术,例 题,CODE_SEGSEGMENT BEGIN PROCFAR CALL NEAR A CALL FAR B RET BEGIN ENDP APROC NEAR RET AENDPCODE_SEGENDS,CODE_SEG1 SEGMENT BPROC FAR RET BENDPCODE_SEG1 ENDS,微型计算机原理与接口技术,宏命令伪指令,格式:宏名MACRO形式参数1,形式参数2,ENDM功能:宏命令伪指令为指令序列定义一个宏名,称为宏指令,宏名可以像指令一样在程序中引用。,.,宏体(指令序列),宏命令源程序中由汇编程序识别的具有独立功能的一段程序代码,
21、微型计算机原理与接口技术,宏指令的使用,宏指令的使用步骤:(1)宏定义:对各个宏指令进行定义,并分别起一个名字;(2)宏调用:在需要使用的地方,通过宏指令名来调用它;(3)宏扩展:由宏汇编程序用宏定义中的指令来代替宏调用中的宏指令名。,微型计算机原理与接口技术,宏命令伪指令,当代换指令中的符号时,在其前面需加一个宏代换符&例如:AD1 MACRO Y,X MOV CL,X RO&Y AX,CL ENDM宏调用:经宏代换语句定义的宏名,在应用时可直接引用,这个过程称为宏调用。例如:AD1 R,5 注意:宏调用时,形式参数要用实在的参数取代,顺序也应与形式参数顺序相同。,微型计算机原理与接口技术,
22、宏指令-宏命令伪指令,宏指令与过程的区别:(1)宏调用语句由宏汇编程序中的宏处理程序来识别,并完成相应的处理,而调用过程中的CALL语句由CPU来执行。(2)汇编语言源程序在汇编过程中要将宏指令所代替的程序段汇编成相应的机器代码,每次调用均需插入到源程序的目标代码中,这样使用宏调用并不能缩短目标代码的长度。而在过程调用中,由于其目标代码与主程序分开独立存放的且在存储器中只保留一份从而能有效的缩短目标代码的长度。,微型计算机原理与接口技术,(3)过程调用时需要保留程序的断点和现场,待过程执行完毕还要恢复现场,这些操作需要耗费CPU的时间,而宏汇编则不需要进行这些操作,因此,过程调用可节省程序占有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编程序 试验
链接地址:https://www.31ppt.com/p-6304439.html