第3章-汇编语言程序格式课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第3章-汇编语言程序格式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 格式 课件
- 资源描述:
-
1、第第3 3章章 汇编语言程序格式汇编语言程序格式 第3章 汇编语言程序格式汇编语言程序格式 3.1 汇编程序功能汇编程序功能 3.2 伪操作伪操作 3.3 汇编语言程序格式汇编语言程序格式 3.4 汇编语言程序的上机过程汇编语言程序的上机过程3.5 DOS系统功能调用系统功能调用开开 始始3.1 汇编程序功能汇编程序功能 1.程序的建立及汇编过程程序的建立及汇编过程 用编辑程序建立用编辑程序建立ASM源文件源文件 源文件源文件就是用汇编语言的语句格式就是用汇编语言的语句格式编写的程序源程序。它是不能被机器编写的程序源程序。它是不能被机器所识别的,所以要经过汇编程序加以翻所识别的,所以要经过汇编
2、程序加以翻译。译。我们通常用编辑程序(全屏幕编辑程我们通常用编辑程序(全屏幕编辑程EDIT)产生汇编语言的源程序)产生汇编语言的源程序。返回本章首页返回本章首页用用MASM程序把源程序程序把源程序ASM转换成转换成OBJ文件。文件。汇编语言的作用汇编语言的作用就是把源文件转换成二进制就是把源文件转换成二进制代码表示的目标文件(称为代码表示的目标文件(称为OBJ文件)。文件)。在转换的过程中,汇编程序对源程序进行二在转换的过程中,汇编程序对源程序进行二遍扫视,如果源程序中有语法错误,则汇编遍扫视,如果源程序中有语法错误,则汇编结束后,汇编程序将指出源程序中的错误,结束后,汇编程序将指出源程序中的
3、错误,用户还可以用编辑程序来修改源程序中的错用户还可以用编辑程序来修改源程序中的错误,最后得到无语法错误的误,最后得到无语法错误的OBJ文件。文件。用用LINK程序把程序把OBJ文件转换成文件转换成EXE文件文件 OBJ文件虽然已经是二进制文件,但它文件虽然已经是二进制文件,但它还不能直接上机运行;还不能直接上机运行;OBJ文件必须文件必须经过连接程序经过连接程序(LINK)把目把目标文件与库文件或其他目标文件连接在一起标文件与库文件或其他目标文件连接在一起形成可执行文件(形成可执行文件(EXE文件)。文件)。这个文件可以由这个文件可以由DOS装入存储器,并在机装入存储器,并在机器上运行。器上
4、运行。用用DOS文件命令直接键入文件名就可以执行文件命令直接键入文件名就可以执行改程序。改程序。用图来表示对汇编语言的处理过程:用图来表示对汇编语言的处理过程:2汇编程序的主要功能:汇编程序的主要功能:检查源程序;检查源程序;测出源程序中的语法错误,并给出出错信测出源程序中的语法错误,并给出出错信息息产生源程序的目标程序,并给出列表文件产生源程序的目标程序,并给出列表文件展开宏指令展开宏指令 编辑程序编辑程序ABC.ASM文件文件汇编程序汇编程序ABC.OBJ文件文件连接程序连接程序ABC.EXE文件文件3.2 伪操作伪操作 汇编语言程序由汇编语言程序由指令、伪操作指令、伪操作和和宏指宏指令令
5、组成。组成。伪操作又称伪操作又称伪指令伪指令,它不象机器指令,它不象机器指令那样是在程序运行期间由计算机来执那样是在程序运行期间由计算机来执行的,它行的,它是在汇编程序对源程序汇编是在汇编程序对源程序汇编期间由汇编程序处理的操作期间由汇编程序处理的操作,它们可,它们可以以完成如数据定义,分配存储区,指完成如数据定义,分配存储区,指示程序结束示程序结束等功能。等功能。返回本章首页返回本章首页1数据定义及存储器分配伪操作数据定义及存储器分配伪操作伪操作的格式伪操作的格式:【变量】变量】助记符助记符 操作数操作数1,操作数,操作数2,【;注释】【;注释】其中变量字段是可有可无的,它是符号地址,其中变
6、量字段是可有可无的,它是符号地址,(1)变量变量是是“操作数操作数1”的的 偏移地址。偏移地址。(2)助记符(操作项)助记符(操作项):说明伪操作的功能。:说明伪操作的功能。【说明所定义的数据类型】【说明所定义的数据类型】(3)操作数:操作数:是存放到数据区的数据是存放到数据区的数据,以备程序使用。以备程序使用。(4)注释注释:说明该伪操作的功能,它是可有可无的。:说明该伪操作的功能,它是可有可无的。1数据定义及存储器分配伪操作数据定义及存储器分配伪操作(2)助记符)助记符(操作项操作项):说明伪操作的功能:说明伪操作的功能 【说明所定义的数据类型】【说明所定义的数据类型】DB:用来定义字节,
7、其后的每一个操作数都占一个字节。用来定义字节,其后的每一个操作数都占一个字节。DW:用来定义字,其后的每一个操作数都占一个字:用来定义字,其后的每一个操作数都占一个字(低位字节在第一个字节地址中,高位字节在第二个(低位字节在第一个字节地址中,高位字节在第二个字节地址中)。字节地址中)。DD:定义双字,其后的每个操作数占有二个字。:定义双字,其后的每个操作数占有二个字。DQ:定义四个字,其后的每个操作数占四个字:定义四个字,其后的每个操作数占四个字DT:定义十个字节,其后每个操作数占:定义十个字节,其后每个操作数占10个字节。个字节。1数据定义及存储器分配伪操作数据定义及存储器分配伪操作这些这些
8、伪操作伪操作可以可以把数据存入指定的存储单元把数据存入指定的存储单元或者或者只分配存储器空间只分配存储器空间而并不存入确定的数而并不存入确定的数据。据。(3)操作数:操作数:是存放到数据区的数据,以备是存放到数据区的数据,以备程序使用。程序使用。操作数可以是常数或表达式操作数可以是常数或表达式,但在存储区,但在存储区中存放的是数据。中存放的是数据。1数据定义及存储器分配伪操作数据定义及存储器分配伪操作例3.7 数据的定义:DATA_BYTE DB 10,4,10HDATA_WORD DW 100,100H,+5DATE_DW DD 3*20,0FFFDHARY DW 1,1,1,2,2,2解:
9、解:DB:10 0AH,DW:100D 0064H +5 0005HDD:3*20=60D=3CH=0000003CH 0FFFDH=0000FFFFDH 1数据定义及存储器分配伪操作数据定义及存储器分配伪操作DATA_BYTE DB 10,4,10HDATA_WORD DW 100,100H,+5DATE_DW DD 3*20,0FFFDHNUM DW 1,1,1,2,2,2DS=0B45 ES=0B35 SS=0B48 CS=0B55 IP=0010 NV UP EI PL NZ NA PO NC-D0B45:00000B45:0000 0A 04 10 64 00 00 01 05-00
10、 3C 00 00 00 FD 0F 00 .d.0B45:0010 00 01 00 01 00 01 00 02-00 02 00 02 00 00 00 00 .0B45:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .1数据定义及存储器分配伪操作数据定义及存储器分配伪操作操作数也可以是字符串操作数也可以是字符串例例3.8:MESSAGE DB HELLO DB AB 用用ASCII码值一个字节来表示一个字符码值一个字节来表示一个字符 H48H;E45H;L4CH;L4CH;O4FH;A41H;B42H用十六进制表示的用十六进制
11、表示的ASCII码字符。码字符。DS=0B45 ES=0B35 SS=0B47 CS=0B54 IP=0005-D0B45:00000B45:0000 48 45 4C 4C 4F 41 42 01-00 01 00 01 00 02 00 02 HELLOAB.0B45:0010 00 02 00 06 00 00 00 00-00 00 00 00 00 00 00 00 .操作数可以保留存储空间,但不存入数据。操作数可以保留存储空间,但不存入数据。例3.9:ABC DB 0,?,?,?,0 DEF DW?,60,?0B45:0000 00 00 00 00 00 00 00 3C-00
12、00 00 00操作数字段还可以使用复制操作符来复制一个操作数字段还可以使用复制操作符来复制一个多个或操作数。多个或操作数。格式:复制数格式:复制数 DUP (操作数,(操作数,操作数),操作数)复制数复制数指定括号中的操作数被重复的次数,它指定括号中的操作数被重复的次数,它可以是一个表达式。可以是一个表达式。例例3.10:ARRAY1 DB 2 DUP(0,1,2,?)ORG 10H ARRAY2 DB 5 DUP(?)ORG 20H ARRAY3 DB 5 DUP(8)语句语句1与与ARRAY1 DB 0,1,2,?,0,1,2,?等价等价0B45:0000 00 01 02 00 00
13、01 02 00-00 00 00 00 00 00 00 000B45:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 000B45:0020 08 08 08 08 08 00 00 00-00 00 00 00 00 00 00 00DUP 操作可嵌套操作可嵌套 例:例:ARRAY4 DB 2 DUP(0,2 DUP(1,2),3)(1+221)26212字节字节变量的类型属性:变量的类型属性:1)变量是第一个数据项的偏移地址变量是第一个数据项的偏移地址。2)用来用来表示每一个数据项的长度表示每一个数据项的长度,它是以,它是以字节字节为
14、单位来表示的。为单位来表示的。用用DB定义的变量占定义的变量占1字节。字节。DW=2,DD=4,DQ=8,DT=10汇编语言汇编语言用用隐含的类型隐含的类型属性来属性来确定确定某些指令某些指令是是字指令还是字节指令字指令还是字节指令在赋值语句中,两个操作数类型要一致。在赋值语句中,两个操作数类型要一致。例例7:OPER1 DB 1,2 OPER2 DW 1234H,5678H MOV AL,OPER1 (赋值语句)(赋值语句)MOV AX,OPER2 OPER1为字节类型属性,为字节类型属性,AL为字节类型属性,为字节类型属性,OPER2为字类型属性,为字类型属性,AX为字类型属性。为字类型属
15、性。若若改为改为 MOV AX,OPER1 MOV AL,OPER2错误:汇编程序在汇编时,能发现两条错误:汇编程序在汇编时,能发现两条MOV指令中的指令中的两两个操作数的类型不匹配个操作数的类型不匹配。可以可以用用“PTR”属性操作符指定操作数的类型属性属性操作符指定操作数的类型属性,其格式:其格式:类型类型 PTR 变量变量常量常量 类型:BYTE,WORD,DWORD(双字双字)格式:类型 PTR 变量常量 类型:BYTE,WORD,DWORD(双字)改正:MOV AX,WORD PTR OPER1 (AX)=0201H MOV AL,BYTE PTR OPER2(AL)=34H这样这样
16、OPER1类型属性为字,两个操作数(类型属性为字,两个操作数(AX,OPER1)的类型一致,汇编时不会出错,运行时)的类型一致,汇编时不会出错,运行时把把OPER1的字内容送入的字内容送入AX,即将,即将OPER1的内容的内容送送AL,把,把OPER1+1的内容送的内容送AH,执行后,执行后(AX)=0201H,而第二条指令应把而第二条指令应把OPER2的第一个字节内容送的第一个字节内容送AL,即,即(AL)=34HLABEL:用来使同一个变量具有不同的属性用来使同一个变量具有不同的属性(与(与PTR属性操作符类似)属性操作符类似)格式:变量格式:变量 LABEL 类型类型 其中:类型其中:类
17、型BYTE,WORD,DWORD例例8:B_ARRAY LABEL BYTE W_ARRAY DW 1122H,1122H 数据数据1122H的第一个字节的地址赋予的第一个字节的地址赋予2个个不同类型的变量名:字节类型变量不同类型的变量名:字节类型变量B_ARRAY和字类型变量和字类型变量W_ARRAY。MOV AL,B_ARRAY ;(AL)=22H MOV BX,W_ARRAY ;(BX)=1122H2表达式赋值伪操作表达式赋值伪操作有时程序中多次出现同一个表达式,为方便起有时程序中多次出现同一个表达式,为方便起见可以用赋值伪操作给表达式赋予一个名字。见可以用赋值伪操作给表达式赋予一个名字
18、。格式:格式:表达式名表达式名 EQU 表达式表达式表达式名表达式名:凡用到该表达式之处就可以用表达:凡用到该表达式之处就可以用表达 式名来代替式名来代替表达式表达式:操作数、可求出常数值的表达式、有:操作数、可求出常数值的表达式、有效的助记符效的助记符 例例:CONSTANT EQU 256 数赋以符号名 ALPHA EQU CONSTANT+7“”伪操作也可作为赋值伪操作使用,伪操作也可作为赋值伪操作使用,并且并且“”伪操作允许重复定义。伪操作允许重复定义。例:EMP=7 EMP=EMP+1 而EQU伪操作中的表达式名是不允许重复定义的。3段定义伪操作段定义伪操作存储器的存储器的物理地址物
19、理地址是是由段地址和偏移地址由段地址和偏移地址组组成的,当汇编程序把源程序转换为目标程序成的,当汇编程序把源程序转换为目标程序时,必须时,必须确定标号和变量的偏移地址确定标号和变量的偏移地址,并把,并把有关的信息通过目标模块传送给连接程序,有关的信息通过目标模块传送给连接程序,以便以便连接程序把不同的段连接程序把不同的段和模块连接在一起和模块连接在一起形成一个可执行的程序形成一个可执行的程序。段定义伪操作的格式段定义伪操作的格式 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 使用类型使用类型 类别类别 例如:例如:DATA1 SEGMENT PARA PRIVATE USE16
20、 DATA DATA1 ENDS段定义格式:段定义格式:SEGMENT ;ENDS对于数据段,附加段,堆栈段来说,是存对于数据段,附加段,堆栈段来说,是存储单元的定义分配储单元的定义分配对于代码段则是指令及伪操作。对于代码段则是指令及伪操作。段名段名必须由必须由SEGMENT定义的段中的段名定义的段中的段名 各段的作用:是通过它与段寄存器的关各段的作用:是通过它与段寄存器的关系语句声明指定的。语句格式:系语句声明指定的。语句格式:ASSUME 段寄存器段寄存器:段名段名段寄存器段寄存器CS,DS,ES,SS例如:例如:ASSUME DS:DATA1例如:data_seg1 segment ;定
21、义数据段定义数据段 data_seg1 ends data_seg2 segment ;定义附加段定义附加段 data_seg2 ends code_seg segment assume cs:code_seg,ds:data_seg1,es:data_seg2 start:mov ax,data-seg1 ;数据段地址放入数据段地址放入ds mov ds,ax mov ax,data-seg2 ;附加段地址放入附加段地址放入es mov es,ax Code_seg ends ;代码段结束代码段结束 end start ASSUNE伪操作只指定某一个段分配给哪一个段伪操作只指定某一个段分配给
22、哪一个段寄存器,它并不把段地址装入段寄存器中,所以在寄存器,它并不把段地址装入段寄存器中,所以在代码段中必须把段地址装入相应的段寄存器中。代码段中必须把段地址装入相应的段寄存器中。SEGMENT伪操作还可以增加类型及属性的说明;伪操作还可以增加类型及属性的说明;格式如下:格式如下:Segname segment 定位类型定位类型 组合类型组合类型 使用类型使用类型 类别类别 Segname ends 段定义伪操作的格式段定义伪操作的格式 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 使用类型使用类型 类别类别 例如:例如:DATA1 SEGMENT PARA PRIVATE U
23、SE16 DATA DATA1 ENDS 定位类型:段起始位置的边界值的情况定位类型:段起始位置的边界值的情况 PARA:指定段的起始地址必须从小段边界开始指定段的起始地址必须从小段边界开始,小段边界是,小段边界是指段的地址的最低的指段的地址的最低的16进制数位必须为进制数位必须为0。BYTE:该段可以从任何地址开始,这样定义段的时候等于:该段可以从任何地址开始,这样定义段的时候等于对段的起始位没有限制。对段的起始位没有限制。WORD:该段必须从字的边界开始,即段地址必须为偶数。:该段必须从字的边界开始,即段地址必须为偶数。PAGE:该段必须从页的边界开始,即段地址的最低两个:该段必须从页的边
24、界开始,即段地址的最低两个16进制数位必须为进制数位必须为0(该地址能被(该地址能被256整除整除)段定义伪操作的格式段定义伪操作的格式 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 使用类型使用类型 类别类别 例如:例如:DATA1 SEGMENT PARA PRIVATE USE16 DATA 组合类型:程序连接时的段合并方法。组合类型:程序连接时的段合并方法。PUBLIC:该段连接时将:该段连接时将与有相同名字的其他分段连与有相同名字的其他分段连接在一起接在一起,连接次序由连接命令指定。,连接次序由连接命令指定。COMMON:会产生覆盖会产生覆盖。该段在连接时与其它同。该
25、段在连接时与其它同名分段具有相同的起始地址,所以会产生覆盖,名分段具有相同的起始地址,所以会产生覆盖,COMMON连接长度是各分段中的最大长度。连接长度是各分段中的最大长度。PRIVATE:该段为私有段,在:该段为私有段,在连接时将不与其他模连接时将不与其他模块中的同名分段合并块中的同名分段合并组合类型的默认值是组合类型的默认值是PRIVATE。段定义伪操作的格式段定义伪操作的格式 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 使用类型使用类型 类别类别 DATA1 SEGMENT PARA PRIVATE USE16 DATA(3)使用类型:用来说明使用使用类型:用来说明使用
展开阅读全文