书签 分享 收藏 举报 版权申诉 / 82
上传文档赚钱

类型第3章-汇编语言程序格式课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4374620
  • 上传时间:2022-12-03
  • 格式:PPT
  • 页数:82
  • 大小:162KB
  • 【下载声明】
    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)使用类型:用来说明使用使用类型:用来说明使用

    26、16位寻址方式,还是位寻址方式,还是32位寻位寻址方式。它们是:址方式。它们是:USE 16:使用:使用16位寻址方式;位寻址方式;USE 32:使用:使用32位寻址方式。位寻址方式。使用使用类型默认项为USE 16(4)类别类别:在引号中给出类型名:在引号中给出类型名,连接时连接时把相同类型的段把相同类型的段的位置靠在一起的位置靠在一起。4存储模型与简化段定义伪操作存储模型与简化段定义伪操作 简化段定义简化段定义 例:例:.MODEL SMALL .STACK 100H .DATA A1 DB 08H ;定义数据区定义数据区 .CODE START:MOV AX,DATA MOV DS,AX

    27、 MOV AX,4C00H INT 21H END STARTMODEL伪操作伪操作 用来说明在存储器中是用来说明在存储器中是如何存放各个段如何存放各个段的。的。Ting:所有:所有数据和代码都放在一个段内数据和代码都放在一个段内,其数,其数据和代码都是近访问。据和代码都是近访问。近访问:位移量是近访问:位移量是16位,范围在位,范围在-32768+32767之间。之间。Small:所有:所有数据放在一个数据放在一个64K的数据段内的数据段内,所有所有代码放在另一个代码放在另一个64K的代码段内。的代码段内。5程序开始和结束伪操作程序开始和结束伪操作 在程序的开始可以用在程序的开始可以用NAM

    28、E或或TITLE为模块取名字。为模块取名字。(1)NAME:模块名:模块名 例:例:NAME:EX_MOVS 汇编程序把汇编程序把NAME后边给出的名字作为模块名。后边给出的名字作为模块名。程序中也可使用程序中也可使用TITLE伪操作:伪操作:(2)TITLE TEXT 例:例:TITLE EX_MOVS TITLE伪操作可指定每一页上打印标题;汇编程序可伪操作可指定每一页上打印标题;汇编程序可以将以将TEXT的前六个字符作为模块名。的前六个字符作为模块名。若既无若既无NAME,又无,又无TITLE,则把源文件名作为模块名。,则把源文件名作为模块名。表示源程序结束的伪操作的格式为:表示源程序结

    29、束的伪操作的格式为:END LABEL 例:例:END START其中其中label标号指示程序开始执行的起始地址标号指示程序开始执行的起始地址,如果是多个程序模块相连接,则只有主程序才如果是多个程序模块相连接,则只有主程序才使用标号,其它子程序则只用使用标号,其它子程序则只用END而不必指定而不必指定标号。标号。title给出标题,用给出标题,用end start表示程序结束;表示程序结束;汇编程序遇到汇编程序遇到END时结束汇编,并指出从时结束汇编,并指出从START开始执行。开始执行。例如:设计一个程序,实现三个数例如:设计一个程序,实现三个数10H、3BH和和42H的加法运算,源程的加

    30、法运算,源程序的名字为序的名字为ABCASM。STACK SEGMENT DB 20 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AL,10H ADD AL,3BH ADD AL,42H MOV AH,4CH INT 21H CODE ENDS END START6对准伪操作和地址计数器EVEN伪操作使下一个字节地址是偶数一个字的地址最好从偶地址开始,对于字数组,为保证其从偶地址开始,可以在它前面用EVEN来实现。DATA SEGMENT EVEN WARRY DW

    31、100 DUP(?)DATA ENDSORG 常用的表达式常用的表达式 设置当前地址计数器的值使下一个字节的地址是常数表设置当前地址计数器的值使下一个字节的地址是常数表达式的值。达式的值。例如:例如:VECTORS SEGMENTS ORG 10H VECT1 DW 1234H ORG 20H VECT2 DW 5678H VECTORS ENDSVECT1的偏移地址值为的偏移地址值为1010H,而,而VECT2偏移值为偏移值为2020H 地址计数器的值可用地址计数器的值可用$来表示,并可直接用来表示,并可直接用$来引用地址计数器来引用地址计数器的值。的值。在对源程序进行汇编时,使用地址计数器

    32、来保存当前正在汇编的指令的地址。例如:VECTORS SEGMENTS ORG 10H VECT1 DW$1234H ;(VECT1)=1244H ORG 20H VECT2 DW$5678H ;(VECT2)=5688HVECTORS ENDSALIGN伪操作 设置地址值是4的倍数。格式为:ALIGN boundary 其中 boundary 必须是2的幂例:DATA ALIGN 4 ARRAY DB 100 DUP(?)保证了ARRAY的值为4的倍数。例例1:定义数据段中变量:定义数据段中变量A=10,数组,数组WARRY有有10个元素个元素11,再定义变量再定义变量B10DATA SEG

    33、MENT A DB 10 WARRY DW 10 DUP(11)B DB 10DATA ENDS 例例 2:定 义 数 据 段 中 变 量:定 义 数 据 段 中 变 量 A 1 0,数 组,数 组WARRY有有10个元素个元素11,但该数组应从偶但该数组应从偶地址开始存放数据地址开始存放数据,再定义变量,再定义变量B10DATA SEGMENT A DB 10 EVENWARRY DW 10 DUP(11)B DB 10DATA ENDS 例例3:定义数据段中变量:定义数据段中变量A=10,存入数组存入数组WARRY时,应用时,应用20H开始,存放开始,存放10个元素个元素11,再存放,再存

    34、放B=10变量并从变量并从30H开始开始 DATA SEGMENT A DB 10 ORG 20H WARRY DW 10 DUP(11)ORG 30H B DB 10 DATA ENDS 7.基数控制伪操作基数控制伪操作 汇编程序默认的数为汇编程序默认的数为10进制数,因而除非专门指进制数,因而除非专门指定,汇编程序把程序中出现的数均看作定,汇编程序把程序中出现的数均看作10进制数。进制数。当使用其他基数表示的常数时,需要专门给以标记。当使用其他基数表示的常数时,需要专门给以标记。二进制数二进制数 由一串由一串0,1组成其后跟以字母组成其后跟以字母B,如:,如:00101100B十进制数:由

    35、十进制数:由09数字组成的数,后面可以跟字母数字组成的数,后面可以跟字母D,如,如178D十六进制数:由数字十六进制数:由数字09,A-F组成的数,后面组成的数,后面跟字母跟字母H.如果这个数的第一个字符是如果这个数的第一个字符是A-F时,应在其前时,应在其前加上数字加上数字0,如,如0FFFF八进制数:由数字八进制数:由数字07组成的数,后面可跟字母组成的数,后面可跟字母O或或Q,如:,如:1777O RADIX:可把默认的基数改变为:可把默认的基数改变为216范围内的任何基数范围内的任何基数 RADIX 表达式表达式 表达式的值为默认的基数值(十进制表示)表达式的值为默认的基数值(十进制表

    36、示)例:例:MOV BX,0FFH RADIX 16 MOV BX,178 MOV BX,0FF MOV BX,178D 是是等价等价的。的。把基数定为把基数定为16进制数后,十进制数后跟进制数后,十进制数后跟D,如果某,如果某16进制进制数末字符为数末字符为D,则应在其后跟字母,则应在其后跟字母H,以免与,以免与10进制混淆。进制混淆。字符串字符串可以看成串常数,可以可以看成串常数,可以用双引号或单引号用双引号或单引号把字符串把字符串放在其中,得到的是字符串的放在其中,得到的是字符串的ASCII码值码值.例如:例如:DB DB ABCD db “good”3.3 汇编语言程序格式 汇编语言源

    37、程序中的每个汇编语言源程序中的每个语句语句可以可以由四项组成由四项组成,语句格式语句格式:名字名字 操作项操作项 操作数操作数;注释;注释其中,其中,名字项是一个符号名字项是一个符号;操作项操作项是一个是一个操作码的助记符操作码的助记符,它,它可以是指令,伪操作可以是指令,伪操作或宏指令名。或宏指令名。操作数操作数项是项是由由一个或多个一个或多个表达式组成表达式组成,它为执行操作提,它为执行操作提供需要的信息。供需要的信息。注释项注释项用来用来说明程序或语句功能说明程序或语句功能 “;”为识别为识别注释项的开始注释项的开始。以上四项中,以上四项中,带括号的两项是可有可无带括号的两项是可有可无的

    38、;的;各项间用各项间用“空格空格”符隔开。符隔开。语句格式语句格式:名字名字 操作项操作项 操作数操作数;注释;注释 1名字项名字项:源程序中用下列字符来表示名字:源程序中用下列字符来表示名字:(1)字母)字母A-Z;(2)数字数字09;(3)专用字符)专用字符?._$除了数字外,所有字符都可以放在源语句的第一除了数字外,所有字符都可以放在源语句的第一个位置个位置。名字中如果遇到名字中如果遇到“.”则必须是第一个字府。则必须是第一个字府。可以用很多字符来说明名字,但可以用很多字符来说明名字,但只有前面的只有前面的31个字符个字符能被汇编程序所识别。能被汇编程序所识别。名字项可以是标号或变量,名

    39、字项可以是标号或变量,它们都用来表示本语句的它们都用来表示本语句的符号地址。符号地址。它是可有可无的,只有用符号地址来访问该语句时它它是可有可无的,只有用符号地址来访问该语句时它才需要出现。才需要出现。语句格式语句格式:名字名字 操作项操作项 操作数操作数;注释;注释标号标号:标号在代码段中定义,后面根冒号:标号在代码段中定义,后面根冒号“:”,它也可以用它也可以用LABEL或或EQU伪操作来定义。伪操作来定义。标号经常在转移指令用以表示转向地址。标号经常在转移指令用以表示转向地址。三种属性:段,偏移和类型三种属性:段,偏移和类型 段属性段属性:标号的段地址已隐含给出标号的段地址已隐含给出,标

    40、号的段地标号的段地址总在址总在CS寄存器中。寄存器中。偏移偏移:标号的偏移地址标号的偏移地址是是16位无符号数,它位无符号数,它代表代表从段起始地址到定义标号的位置之间的字节数从段起始地址到定义标号的位置之间的字节数类型类型:用来:用来指出该标号是在本段内引用还是在其指出该标号是在本段内引用还是在其它段中引用它段中引用,如在段内则称为,如在段内则称为NEAR指针长度为指针长度为2字字节。如在段外引用则称为节。如在段外引用则称为FAR指针长度指针长度4字节。字节。变量变量:变量在除代码段以外的其他段中变量在除代码段以外的其他段中定 义定 义,后 面 不 根 冒 号后 面 不 根 冒 号,它 也

    41、可 以 用,它 也 可 以 用LABLE或或EQU伪操作来定义。伪操作来定义。变量经常在操作数字段出现。变量经常在操作数字段出现。三种属性:段,偏移和类型。三种属性:段,偏移和类型。段属性段属性:具有段地址:具有段地址。定义变量的段起始地址,此值必须定义变量的段起始地址,此值必须在一个段寄存器中;在一个段寄存器中;偏移偏移:变量的:变量的偏移地址偏移地址是是16位无符号数,位无符号数,它它代表从段的起始地址到定义变量的位置之间代表从段的起始地址到定义变量的位置之间的字节数。的字节数。类型类型:定义该变量所保留的字节数定义该变量所保留的字节数。如:如:BYTE(1个字节长个字节长)WORD(2个

    42、字节长)个字节长)DWORD(4个字节长)个字节长)DQ(8个字节长)个字节长)在程序中,标号或变量的定义只允许出现一在程序中,标号或变量的定义只允许出现一次。次。语句格式语句格式:名字名字 操作项操作项 操作数操作数;注释;注释 2.操作项操作项:操作项可以是指令助记符操作项可以是指令助记符,伪操作或宏指令的助记符。伪操作或宏指令的助记符。对于指令,汇编程序将其翻译为机器语言指令。对于指令,汇编程序将其翻译为机器语言指令。对于伪操作,汇编程序将按其功能进行处理。对于伪操作,汇编程序将按其功能进行处理。对于宏指令,则将根据其定义展开。对于宏指令,则将根据其定义展开。3.操作数项操作数项:由一个

    43、表达式由一个表达式或多个表达式或多个表达式组成组成,多个操作数项,多个操作数项之间一般用逗号分开。之间一般用逗号分开。在指令中,操作在指令中,操作数数项的位置被翻译成操作数地址项的位置被翻译成操作数地址。操作数项可以是常数,寄存器,标号,变量操作数项可以是常数,寄存器,标号,变量,表达式表达式 表达式表达式:是由常数,寄存器,标号,变量与一些操作是由常数,寄存器,标号,变量与一些操作符组合的序列符组合的序列。有数字表达式和地址表达式两种有数字表达式和地址表达式两种算术操作符算术操作符:,:,*,/,mod(除法求余)(除法求余)算术操作符可以用于数字表达式或地址表达式中算术操作符可以用于数字表

    44、达式或地址表达式中地址地址数字量是是某一单元的地址数字量是是某一单元的地址:SUM1:SUM字节单元的下一个字节单元的地址字节单元的下一个字节单元的地址 SUM1:SUM字节单元的前一个字节单元的地址字节单元的前一个字节单元的地址例例1:要求把首地为:要求把首地为BLOCK的字数组的第的字数组的第1个字个字传送到传送到DX寄存器,可用指令。寄存器,可用指令。MOV DX,BLOCK例例2:数组:数组A定义如下,试写出把数组长度(字定义如下,试写出把数组长度(字数)存入数)存入CX寄存器的指令。寄存器的指令。A DW 1,2,3,4,5,6,7 END DW?其中其中END是为计算数组长度而是为

    45、计算数组长度而建立建立的符号地址的符号地址 MOV CX,(END-A)/2 MOV CX,70500:0000 01 00 02 00 03 00 04 00-05 00 06 00 07 00 0000偏移地址偏移地址:00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E0F (0E-00)/2=7 逻辑操作符逻辑操作符:AND,OR,XOR,NOT 逻辑操作符是位操作,它逻辑操作符是位操作,它只能用于数字表达式中。只能用于数字表达式中。例例3:IN AL,PORT OUT PORT+1,AL其中,其中,PORT为端口号,为端口号,OUT指令中表达式说明

    46、指令中表达式说明从从PORT 重读出数据重读出数据,将该数据在将该数据在PORT+1中输中输出。出。关系操作符关系操作符:两个操作数两个操作数必须必须为数字为数字或或同一段同一段内两存储器地址内两存储器地址,结果有,结果有6种种:LT(小于)(小于),LE(小于等于)(小于等于)GT(大于)(大于),GE(大于等于)(大于等于)EQ(相等)(相等),NE(不等)(不等)例例5:MOV BX,PORT LT 5 当当PORT5为真时,为真时,(BX)=0FFFFH,当当PORT=5为真时为真时,(BX)=0 数值回送操作符数值回送操作符 将变量或表号作为数值回送。将变量或表号作为数值回送。TYP

    47、E1)如果是变量,则汇编程序将回送该变量类型如果是变量,则汇编程序将回送该变量类型包含的字节数包含的字节数:DB=1,DW=2,DD=4,DT=10.2)如果是标号,回送该标号类型的数值如果是标号,回送该标号类型的数值。NEAR1,FAR2例例6:ARRAY DW 1,2,3 ADD SI,TYPE ARRAY 汇编:汇编:ADD SI,2 LENGTH 变量中使用变量中使用DUP的情况时回送该变量单元的情况时回送该变量单元数数;其他情况回送;其他情况回送1 例例7:FEES DW 100 DUP (0)MOV CX,LENGTH FEES 汇编:汇编:MOV CX,100例例8:ARRAY

    48、DW 1,2,3 MOV CX,LENGTH ARRAY 汇编:汇编:MOV CX,1 SIZE:汇编程序应回送分配给该变量的字节数,此值是LENGTH和TYPE值的乘积。FEES DW 100 DUP (0)MOV SI,TYPE FEES MOV CX,LENGTH FEES MOV DX,SIZE FEES汇编:汇编:MOV SI,2 MOV CX,100 MOV DX,200OFFSET:回送变量或标号的偏移地址。:回送变量或标号的偏移地址。格式为:格式为:OFFSET Variable或或label 例:例:MOV BX,OFFSET FEES 将将OPER的偏移地址作为立即数回送给

    49、指令的偏移地址作为立即数回送给指令而在执行时,则将该偏移地址装入而在执行时,则将该偏移地址装入BX寄存器寄存器中。中。与与 LEA BX,FEES等价。等价。SEG:回送变量的段地址或标号的段地址回送变量的段地址或标号的段地址 例:数组例:数组A定义如下定义如下DATA SEGMENT A DW 1,2,3,4,5,6,7 END DW?DATA ENDS MOV BX,SEG A DATA是从存储器的是从存储器的05000H地址开始的一个地址开始的一个数据段的段名,数据段的段名,A是该段中的一个变量名,是该段中的一个变量名,将将把把0500H赋值给赋值给BX。属性操作属性操作符符包括包括6种

    50、种:PTR段操作符段操作符SHORTTHISHIGHLOW PTR 类型类型 PTR 表达式表达式 (type PTR expression)用来用来给已分配的存储地址赋予另一种属性给已分配的存储地址赋予另一种属性使使该地址该地址具有另一种类型具有另一种类型。类型类型:类型字段类型字段表示所赋予的新类型表示所赋予的新类型属性。属性。表达式表达式:表达式字段是:表达式字段是原有类型的符号字段原有类型的符号字段。OPER2 DW 1234H,5678HMOV AL,BYTE PTR OPER2(AL)=34H例:已有数据定义如下:例:已有数据定义如下:TWO_BYTE DW?用下列语句对这两个字节

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第3章-汇编语言程序格式课件.ppt
    链接地址:https://www.163wenku.com/p-4374620.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库