《宏汇编语言书》PPT课件.ppt

上传人:wuy****n92 文档编号:80437473 上传时间:2023-03-23 格式:PPT 页数:82 大小:302.49KB
返回 下载 相关 举报
《宏汇编语言书》PPT课件.ppt_第1页
第1页 / 共82页
《宏汇编语言书》PPT课件.ppt_第2页
第2页 / 共82页
点击查看更多>>
资源描述

《《宏汇编语言书》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《宏汇编语言书》PPT课件.ppt(82页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第3 3章章 汇编语言程序格式汇编语言程序格式母亲卡 第3章 汇编语言程序格式汇编语言程序格式 3.1汇编程序功能汇编程序功能3.2伪操作伪操作3.3汇编语言程序格式汇编语言程序格式3.4汇编语言程序的上机过程汇编语言程序的上机过程3.5DOS系统功能调用系统功能调用开开始始第第3 3章章 汇编语言程序格式汇编语言程序格式3.1汇编程序功能汇编程序功能 1.程序的建立及汇编过程程序的建立及汇编过程 用编辑程序建立用编辑程序建立ASM源文件源文件源源文文件件就就是是用用汇汇编编语语言言的的语语句句格格式式编编写写的的程程序序源源程程序序。它它是是不不能能被被机机器器所所识识别别的的,所所以以要

2、要经经过过汇汇编编程程序序加加以以翻翻译。译。我我们们通通常常用用编编辑辑程程序序(全全屏屏幕幕编编辑辑程程EDIT)产生汇编语言的源程序)产生汇编语言的源程序。返回本章首页返回本章首页第第3 3章章 汇编语言程序格式汇编语言程序格式用用MASM程序把源程序程序把源程序ASM转换成转换成OBJ文件。文件。汇编语言的作用汇编语言的作用就是把源文件转换成二进制就是把源文件转换成二进制代码表示的目标文件(称为代码表示的目标文件(称为OBJ文件)。文件)。在转换的过程中,汇编程序对源程序进行二在转换的过程中,汇编程序对源程序进行二遍扫视,如果源程序中有语法错误,则汇编遍扫视,如果源程序中有语法错误,则

3、汇编结束后,汇编程序将指出源程序中的错误,结束后,汇编程序将指出源程序中的错误,用户还可以用编辑程序来修改源程序中的错用户还可以用编辑程序来修改源程序中的错误,最后得到无语法错误的误,最后得到无语法错误的OBJ文件。文件。第第3 3章章 汇编语言程序格式汇编语言程序格式用用LINK程序把程序把OBJ文件转换成文件转换成EXE文件文件OBJ文文件件虽虽然然已已经经是是二二进进制制文文件件,但但它它还还不能直接上机运行;不能直接上机运行;OBJ文文件件必必须须经经过过连连接接程程序序(LINK)把把目目标标文文件件与与库库文文件件或或其其他他目目标标文文件件连连接接在在一一起起形形成可执行文件(成

4、可执行文件(EXE文件)。文件)。这这个个文文件件可可以以由由DOS装装入入存存储储器器,并并在在机机器上运行。器上运行。用用DOS文件命令直接键入文件名就可以执行文件命令直接键入文件名就可以执行改程序。改程序。第第3 3章章 汇编语言程序格式汇编语言程序格式用图来表示对汇编语言的处理过程:用图来表示对汇编语言的处理过程:2汇编程序的主要功能:汇编程序的主要功能:检查源程序;检查源程序;测出源程序中的语法错误,并给出出错信息测出源程序中的语法错误,并给出出错信息产生源程序的目标程序,并给出列表文件产生源程序的目标程序,并给出列表文件展开宏指令展开宏指令 编辑程序编辑程序ABC.ASM文件文件汇

5、编程序汇编程序ABC.OBJ文件文件连接程序连接程序ABC.EXE文件文件第第3 3章章 汇编语言程序格式汇编语言程序格式3.2 伪操作伪操作 汇汇编编语语言言程程序序由由指指令令、伪伪操操作作和和宏宏指指令令组成。组成。伪伪操操作作又又称称伪伪指指令令,它它不不象象机机器器指指令令那那样样是是在在程程序序运运行行期期间间由由计计算算机机来来执执行行的的,它它是是在在汇汇编编程程序序对对源源程程序序汇汇编编期期间间由由汇汇编编程程序序处处理理的的操操作作,它它们们可可以以完完成成如如数数据据定定义义,分分配配存存储储区区,指指示程序结束示程序结束等功能。等功能。返回本章首页返回本章首页第第3

6、3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分配伪操作伪操作的格式伪操作的格式:【变量】变量】助记符助记符操作数操作数1,操作数,操作数2,【;注释】【;注释】其中变量字段是可有可无的,它是符号地址,其中变量字段是可有可无的,它是符号地址,(1)变量变量是是“操作数操作数1”的的偏移地址。偏移地址。(2)助记符(操作项)助记符(操作项):说明伪操作的功能。:说明伪操作的功能。【说明所定义的数据类型】【说明所定义的数据类型】(3)操作数:操作数:是存放到数据区的数据是存放到数据区的数据,以备程序使用。以备程序使用。(4)注释注释:说明该伪操作的功能,它是可

7、有可无的。:说明该伪操作的功能,它是可有可无的。第第3 3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分配伪操作(2)助记符)助记符(操作项操作项):说明伪操作的功能:说明伪操作的功能【说明所定义的数据类型】【说明所定义的数据类型】DB:用来定义字节,其后的每一个操作数都占一个字节。用来定义字节,其后的每一个操作数都占一个字节。DW:用用来来定定义义字字,其其后后的的每每一一个个操操作作数数都都占占一一个个字字(低低位位字字节节在在第第一一个个字字节节地地址址中中,高高位位字字节节在在第第二二个个字节地址中)。字节地址中)。DD:定义双字,其后的每个操作数

8、占有二个字。:定义双字,其后的每个操作数占有二个字。DQ:定义四个字,其后的每个操作数占四个字:定义四个字,其后的每个操作数占四个字DT:定义十个字节,其后每个操作数占:定义十个字节,其后每个操作数占10个字节。个字节。第第3 3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分配伪操作这这些些伪伪操操作作可可以以把把数数据据存存入入指指定定的的存存储储单单元元或或者者只只分分配配存存储储器器空空间间而而并并不不存存入入确确定定的的数数据。据。(3)操作数:操作数:是存放到数据区的数据,以备是存放到数据区的数据,以备程序使用。程序使用。操操作作数数可可以以是是

9、常常数数或或表表达达式式,但但在在存存储储区区中存放的是数据。中存放的是数据。第第3 3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分配伪操作例3.7 数据的定义:DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,+5DATE_DWDD3*20,0FFFDHARYDW1,1,1,2,2,2解:解:DB:100AH,DW:100D0064H+50005HDD:3*20=60D=3CH=0000003CH0FFFDH=0000FFFFDH 第第3 3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分

10、配伪操作DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,+5DATE_DWDD3*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 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 0

11、0 00 00 00-00 00 00 00 00 00 00 00 .第第3 3章章 汇编语言程序格式汇编语言程序格式1数据定义及存储器分配伪操作数据定义及存储器分配伪操作操作数也可以是字符串操作数也可以是字符串例例3.8:MESSAGEDBHELLODBAB用用ASCII码值一个字节来表示一个字符码值一个字节来表示一个字符H48H;E45H;L4CH;L4CH;O4FH;A41H;B42H用十六进制表示的用十六进制表示的ASCII码字符。码字符。DS=0B45ES=0B35SS=0B47CS=0B54IP=0005-D0B45:00000B45:000048454C4C4F414201-0

12、001000100020002HELLOAB.0B45:00100002000600000000-0000000000000000.第第3 3章章 汇编语言程序格式汇编语言程序格式操作数可以保留存储空间,但不存入数据。操作数可以保留存储空间,但不存入数据。例3.9:ABC DB 0,?,?,?,0 DEF DW?,60,?0B45:0000 00 00 00 00 00 00 00 3C-00 00 00 00操操作作数数字字段段还还可可以以使使用用复复制制操操作作符符来来复复制制一一个个多个或操作数。多个或操作数。格式:复制数格式:复制数DUP(操作数,(操作数,操作数),操作数)复复制制数

13、数指指定定括括号号中中的的操操作作数数被被重重复复的的次次数数,它它可以是一个表达式。可以是一个表达式。第第3 3章章 汇编语言程序格式汇编语言程序格式 例例3.10:ARRAY1DB2DUP(0,1,2,?)ORG10HARRAY2DB5DUP(?)ORG20HARRAY3DB5DUP(8)语句语句1与与ARRAY1DB0,1,2,?,0,1,2,?等价等价0B45:00000001020000010200-00000000000000000B45:00100000000000000000-00000000000000000B45:00200808080808000000-000000000

14、0000000DUP操作可嵌套操作可嵌套例:例:ARRAY4DB2DUP(0,2DUP(1,2),3)(1+221)26212字节字节第第3 3章章 汇编语言程序格式汇编语言程序格式第第3 3章章 汇编语言程序格式汇编语言程序格式变量的类型属性:变量的类型属性:1)变量是第一个数据项的偏移地址变量是第一个数据项的偏移地址。2)用用来来表表示示每每一一个个数数据据项项的的长长度度,它它是是以以字字节节为单位来表示的。为单位来表示的。用用DB定义的变量占定义的变量占1字节。字节。DW=2,DD=4,DQ=8,DT=10汇汇编编语语言言用用隐隐含含的的类类型型属属性性来来确确定定某某些些指指令令是是

15、字指令还是字节指令字指令还是字节指令在赋值语句中,两个操作数类型要一致。在赋值语句中,两个操作数类型要一致。第第3 3章章 汇编语言程序格式汇编语言程序格式例例7:OPER1DB1,2OPER2DW1234H,5678H MOVAL,OPER1(赋值语句)(赋值语句)MOVAX,OPER2OPER1为字节类型属性,为字节类型属性,AL为字节类型属性,为字节类型属性,OPER2为字类型属性,为字类型属性,AX为字类型属性。为字类型属性。若若改为改为MOVAX,OPER1MOVAL,OPER2错误:汇编程序在汇编时,能发现两条错误:汇编程序在汇编时,能发现两条MOV指令中的指令中的两两个操作数的类

16、型不匹配个操作数的类型不匹配。可以可以用用“PTR”属性操作符指定操作数的类型属性属性操作符指定操作数的类型属性,其格式:其格式:类型类型PTR变量变量常量常量 类型:BYTE,WORD,DWORD(双字双字)第第3 3章章 汇编语言程序格式汇编语言程序格式格式:类型 PTR 变量常量 类型:BYTE,WORD,DWORD(双字)改正:MOV AX,WORD PTR OPER1 (AX)=0201H MOV AL,BYTE PTR OPER2(AL)=34H这这样样OPER1类类型型属属性性为为字字,两两个个操操作作数数(AX,OPER1)的的类类型型一一致致,汇汇编编时时不不会会出出错错,运

17、运行行时时把把OPER1的的字字内内容容送送入入AX,即即将将OPER1的的内内容容送送 AL,把把 OPER1+1的的 内内 容容 送送 AH,执执 行行 后后(AX)=0201H,而而第第二二条条指指令令应应把把OPER2的的第第一一个个字字节节内内容容送送AL,即,即(AL)=34H第第3 3章章 汇编语言程序格式汇编语言程序格式LABEL:用用来来使使同同一一个个变变量量具具有有不不同同的的属属性性(与(与PTR属性操作符类似)属性操作符类似)格式:变量格式:变量LABEL类型类型其中:类型其中:类型BYTE,WORD,DWORD例例8:B_ARRAYLABELBYTEW_ARRAYD

18、W1122H,1122H数数据据1122H的的第第一一个个字字节节的的地地址址赋赋予予2个个不不同同类类型型的的变变量量名名:字字节节类类型型变变量量B_ARRAY和字类型变量和字类型变量W_ARRAY。MOVAL,B_ARRAY;(AL)=22HMOVBX,W_ARRAY;(BX)=1122H第第3 3章章 汇编语言程序格式汇编语言程序格式2表达式赋值伪操作表达式赋值伪操作有有时时程程序序中中多多次次出出现现同同一一个个表表达达式式,为为方方便便起起见见可可以以用用赋赋值值伪伪操操作作给给表表达达式式赋赋予予一一个个名名字字。格式:格式:表达式名表达式名EQU表达式表达式表表达达式式名名:凡

19、凡用用到到该该表表达达式式之之处处就就可可以以用用表表达达 式名来代替式名来代替表表达达式式:操操作作数数、可可求求出出常常数数值值的的表表达达式式、有有效的助记符效的助记符 例例:CONSTANT EQU 256 数赋以符号名 ALPHA EQU CONSTANT+7第第3 3章章 汇编语言程序格式汇编语言程序格式“”伪操作也可作为赋值伪操作使用,伪操作也可作为赋值伪操作使用,并且并且“”伪操作允许重复定义。伪操作允许重复定义。例:EMP=7 EMP=EMP+1 而EQU伪操作中的表达式名是不允许重复定义的。第第3 3章章 汇编语言程序格式汇编语言程序格式3段定义伪操作段定义伪操作存存储储器

20、器的的物物理理地地址址是是由由段段地地址址和和偏偏移移地地址址组组成成的的,当当汇汇编编程程序序把把源源程程序序转转换换为为目目标标程程序序时时,必必须须确确定定标标号号和和变变量量的的偏偏移移地地址址,并并把把有有关关的的信信息息通通过过目目标标模模块块传传送送给给连连接接程程序序,以以便便连连接接程程序序把把不不同同的的段段和和模模块块连连接接在在一一起起形形成成一一个个可可执行的程序执行的程序。段定义伪操作的格式段定义伪操作的格式段段名名SEGMENT定定位位类类型型组组合合类类型型使使用用类类型型类类别别例如:例如:DATA1 SEGMENT PARA PRIVATE USE16 DA

21、TADATA1ENDS第第3 3章章 汇编语言程序格式汇编语言程序格式段定义格式:段定义格式:SEGMENT;ENDS对对于于数数据据段段,附附加加段段,堆堆栈栈段段来来说说,是是存存储单元的定义分配储单元的定义分配对于代码段则是指令及伪操作。对于代码段则是指令及伪操作。段名段名必须由必须由SEGMENT定义的段中的段名定义的段中的段名各各段段的的作作用用:是是通通过过它它与与段段寄寄存存器器的的关关系语句声明指定的。语句格式:系语句声明指定的。语句格式:ASSUME段寄存器段寄存器:段名段名段寄存器段寄存器CS,DS,ES,SS例如:例如:ASSUMEDS:DATA1第第3 3章章 汇编语言

22、程序格式汇编语言程序格式例如:data_seg1segment;定义数据段定义数据段data_seg1endsdata_seg2segment;定义附加段定义附加段data_seg2endscode_segsegmentassumecs:code_seg,ds:data_seg1,es:data_seg2start:movax,data-seg1;数据段地址放入数据段地址放入dsmovds,axmovax,data-seg2;附加段地址放入附加段地址放入esmoves,axCode_segends;代码段结束代码段结束endstart第第3 3章章 汇编语言程序格式汇编语言程序格式ASSUNE

23、伪伪操操作作只只指指定定某某一一个个段段分分配配给给哪哪一一个个段段寄寄存存器器,它它并并不不把把段段地地址址装装入入段段寄寄存存器器中中,所所以以在在代码段中必须把段地址装入相应的段寄存器中。代码段中必须把段地址装入相应的段寄存器中。SEGMENT伪伪操操作作还还可可以以增增加加类类型型及及属属性性的的说说明明;格式如下:格式如下:Segnamesegment定位类型定位类型组合类型组合类型使用类型使用类型类别类别Segnameends第第3 3章章 汇编语言程序格式汇编语言程序格式段定义伪操作的格式段定义伪操作的格式段段名名SEGMENT定定位位类类型型组组合合类类型型使使用用类类型型类类

24、别别例如:例如:DATA1SEGMENTPARAPRIVATEUSE16DATADATA1ENDS定位类型:段起始位置的边界值的情况定位类型:段起始位置的边界值的情况PARA:指指定定段段的的起起始始地地址址必必须须从从小小段段边边界界开开始始,小小段段边边界界是是指段的地址的最低的指段的地址的最低的16进制数位必须为进制数位必须为0。BYTE:该该段段可可以以从从任任何何地地址址开开始始,这这样样定定义义段段的的时时候候等等于于对段的起始位没有限制。对段的起始位没有限制。WORD:该段必须从字的边界开始,即段地址必须为偶数。:该段必须从字的边界开始,即段地址必须为偶数。PAGE:该段必须从页

25、的边界开始,即段地址的最低两个:该段必须从页的边界开始,即段地址的最低两个16进制数位必须为进制数位必须为0(该地址能被(该地址能被256整除整除)第第3 3章章 汇编语言程序格式汇编语言程序格式段定义伪操作的格式段定义伪操作的格式段段名名SEGMENT定定位位类类型型组组合合类类型型使使用用类类型型类类别别例如:例如:DATA1 SEGMENT PARA PRIVATE USE16 DATA 组合类型:程序连接时的段合并方法。组合类型:程序连接时的段合并方法。PUBLIC:该该段段连连接接时时将将与与有有相相同同名名字字的的其其他他分分段段连连接在一起接在一起,连接次序由连接命令指定。,连接

26、次序由连接命令指定。COMMON:会会产产生生覆覆盖盖。该该段段在在连连接接时时与与其其它它同同名名分分段段具具有有相相同同的的起起始始地地址址,所所以以会会产产生生覆覆盖盖,COMMON连接长度是各分段中的最大长度。连接长度是各分段中的最大长度。PRIVATE:该该段段为为私私有有段段,在在连连接接时时将将不不与与其其他他模模块中的同名分段合并块中的同名分段合并组合类型的默认值是组合类型的默认值是PRIVATE。第第3 3章章 汇编语言程序格式汇编语言程序格式段定义伪操作的格式段定义伪操作的格式段名段名SEGMENT定位类型定位类型组合类型组合类型使用类型使用类型类别类别DATA1SEGME

27、NTPARAPRIVATEUSE16DATA(3)使使用用类类型型:用用来来说说明明使使用用16位位寻寻址址方方式式,还还是是32位位寻址方式。它们是:寻址方式。它们是:USE16:使用:使用16位寻址方式;位寻址方式;USE32:使用:使用32位寻址方式。位寻址方式。使用使用类型默认项为USE 16(4)类类别别:在在引引号号中中给给出出类类型型名名,连连接接时时把把相相同同类类型型的段的位置靠在一起的段的位置靠在一起。第第3 3章章 汇编语言程序格式汇编语言程序格式4存储模型与简化段定义伪操作存储模型与简化段定义伪操作简化段定义简化段定义例:例:.MODELSMALL.STACK100H.

28、DATAA1DB08H;定义数据区定义数据区.CODESTART:MOVAX,DATAMOVDS,AXMOVAX,4C00HINT21HENDSTART第第3 3章章 汇编语言程序格式汇编语言程序格式MODEL伪操作伪操作用来说明在存储器中是用来说明在存储器中是如何存放各个段如何存放各个段的。的。Ting:所所有有数数据据和和代代码码都都放放在在一一个个段段内内,其其数数据和代码都是近访问。据和代码都是近访问。近访问:位移量是近访问:位移量是16位,范围在位,范围在-32768+32767之间。之间。Small:所所有有数数据据放放在在一一个个64K的的数数据据段段内内,所有所有代码放在另一个

29、代码放在另一个64K的代码段内。的代码段内。第第3 3章章 汇编语言程序格式汇编语言程序格式5程序开始和结束伪操作程序开始和结束伪操作在程序的开始可以用在程序的开始可以用NAME或或TITLE为模块取名字。为模块取名字。(1)NAME:模块名:模块名例:例:NAME:EX_MOVS汇编程序把汇编程序把NAME后边给出的名字作为模块名。后边给出的名字作为模块名。程序中也可使用程序中也可使用TITLE伪操作:伪操作:(2)TITLETEXT例:例:TITLEEX_MOVSTITLE伪伪操操作作可可指指定定每每一一页页上上打打印印标标题题;汇汇编编程程序序可可以将以将TEXT的前六个字符作为模块名。

30、的前六个字符作为模块名。若既无若既无NAME,又无,又无TITLE,则把源文件名作为模块名。,则把源文件名作为模块名。第第3 3章章 汇编语言程序格式汇编语言程序格式表示源程序结束的伪操作的格式为:表示源程序结束的伪操作的格式为:ENDLABEL例:例:ENDSTART其其中中label标标号号指指示示程程序序开开始始执执行行的的起起始始地地址址,如如果果是是多多个个程程序序模模块块相相连连接接,则则只只有有主主程程序序才才使使用用标标号号,其其它它子子程程序序则则只只用用END而而不不必必指指定定标号。标号。title给给出出标标题题,用用endstart表表示示程程序序结结束束;汇汇编编程

31、程序序遇遇到到END时时结结束束汇汇编编,并并指指出出从从START开始执行。开始执行。第第3 3章章 汇编语言程序格式汇编语言程序格式例如:设计一个程序,实现三个数例如:设计一个程序,实现三个数10H、3BH和和42H的加法运算,源程的加法运算,源程序的名字为序的名字为ABCASM。STACKSEGMENTDB20DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAL,10HADDAL,3BHADDAL,42HMOVAH,4CHINT21HCODEENDSENDSTART第第3 3章章 汇编语

32、言程序格式汇编语言程序格式6对准伪操作和地址计数器EVEN伪操作使下一个字节地址是偶数一个字的地址最好从偶地址开始,对于字数组,为保证其从偶地址开始,可以在它前面用EVEN来实现。第第3 3章章 汇编语言程序格式汇编语言程序格式DATASEGMENT EVENWARRYDW100DUP(?)DATAENDSORG常用的表达式常用的表达式设设置置当当前前地地址址计计数数器器的的值值使使下下一一个个字字节节的的地地址址是是常常数数表表达式的值。达式的值。例如:例如:VECTORSSEGMENTSORG10HVECT1DW1234HORG20HVECT2DW5678HVECTORSENDSVECT1

33、的偏移地址值为的偏移地址值为1010H,而,而VECT2偏移值为偏移值为2020H第第3 3章章 汇编语言程序格式汇编语言程序格式地地址址计计数数器器的的值值可可用用$来来表表示示,并并可可直直接接用用$来来引引用用地地址址计计数数器器的的值值。在对源程序进行汇编时,使用地址计数器来保存当前正在汇编的指令的地址。例如:VECTORSSEGMENTSORG10HVECT1DW$1234H;(VECT1)=1244HORG20HVECT2DW$5678H;(VECT2)=5688HVECTORSENDS第第3 3章章 汇编语言程序格式汇编语言程序格式ALIGN伪操作 设置地址值是4的倍数。格式为:

34、ALIGN boundary 其中 boundary 必须是2的幂例:DATA ALIGN 4 ARRAY DB 100 DUP(?)保证了ARRAY的值为4的倍数。第第3 3章章 汇编语言程序格式汇编语言程序格式例例1:定定义义数数据据段段中中变变量量A=10,数数组组WARRY有有10个元素个元素11,再定义变量再定义变量B10DATASEGMENTADB10WARRYDW10DUP(11)BDB10DATAENDS第第3 3章章 汇编语言程序格式汇编语言程序格式例例 2:定定 义义 数数 据据 段段 中中 变变 量量 A 10,数数 组组WARRY有有10个个元元素素11,但但该该数数组

35、组应应从从偶偶地址开始存放数据地址开始存放数据,再定义变量,再定义变量B10DATA SEGMENT A DB 10 EVENWARRY DW 10 DUP(11)B DB 10DATA ENDS 第第3 3章章 汇编语言程序格式汇编语言程序格式例例 3:定定 义义 数数 据据 段段 中中 变变 量量 A=10,存存 入入 数数 组组WARRY时时,应应用用20H开开始始,存存放放10个个元元素素11,再存放,再存放B=10变量并从变量并从30H开始开始 DATA SEGMENT A DB 10 ORG 20H WARRY DW 10 DUP(11)ORG 30H B DB 10 DATA E

36、NDS 第第3 3章章 汇编语言程序格式汇编语言程序格式7.基数控制伪操作基数控制伪操作汇汇编编程程序序默默认认的的数数为为10进进制制数数,因因而而除除非非专专门门指指定定,汇汇编编程程序序把把程程序序中中出出现现的的数数均均看看作作10进进制制数数。当使用其他基数表示的常数时,需要专门给以标记。当使用其他基数表示的常数时,需要专门给以标记。二进制数二进制数由一串由一串0,1组成其后跟以字母组成其后跟以字母B,如:,如:00101100B十十进进制制数数:由由09数数字字组组成成的的数数,后后面面可可以以跟跟字字母母D,如,如178D第第3 3章章 汇编语言程序格式汇编语言程序格式十十六六进

37、进制制数数:由由数数字字09,A-F组组成成的的数数,后后面面跟跟字母字母H.如如果果这这个个数数的的第第一一个个字字符符是是A-F时时,应应在在其其前前加上数字加上数字0,如,如0FFFF八进制数:由数字八进制数:由数字07组成的数,后面可跟字母组成的数,后面可跟字母O或或Q,如:,如:1777O第第3 3章章 汇编语言程序格式汇编语言程序格式RADIX:可把默认的基数改变为:可把默认的基数改变为216范围内的任何基数范围内的任何基数RADIX表达式表达式表达式的值为默认的基数值(十进制表示)表达式的值为默认的基数值(十进制表示)例:例:MOVBX,0FFHRADIX16MOVBX,178M

38、OVBX,0FFMOVBX,178D是是等价等价的。的。把把基基数数定定为为16进进制制数数后后,十十进进制制数数后后跟跟D,如如果果某某16进进制制数末字符为数末字符为D,则应在其后跟字母,则应在其后跟字母H,以免与,以免与10进制混淆。进制混淆。字符串字符串可以看成串常数,可以可以看成串常数,可以用双引号或单引号用双引号或单引号把字符串把字符串放在其中,得到的是字符串的放在其中,得到的是字符串的ASCII码值码值.例如:例如:DB DB ABCDdb“good”第第3 3章章 汇编语言程序格式汇编语言程序格式3.3 汇编语言程序格式 汇编语言源程序中的每个汇编语言源程序中的每个语句语句可以

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

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

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

42、隐隐含含给给出出,标标号号的的段段地地址总在址总在CS寄存器中。寄存器中。偏偏移移:标标号号的的偏偏移移地地址址是是16位位无无符符号号数数,它它代代表表从段起始地址到定义标号的位置之间的字节数从段起始地址到定义标号的位置之间的字节数类类型型:用用来来指指出出该该标标号号是是在在本本段段内内引引用用还还是是在在其其它它段段中中引引用用,如如在在段段内内则则称称为为NEAR指指针针长长度度为为2字字节。如在段外引用则称为节。如在段外引用则称为FAR指针长度指针长度4字节。字节。第第3 3章章 汇编语言程序格式汇编语言程序格式变变量量:变变量量在在除除代代码码段段以以外外的的其其他他段段中中定定

43、义义,后后 面面 不不 根根 冒冒 号号,它它 也也 可可 以以 用用LABLE或或EQU伪操作来定义。伪操作来定义。变量经常在操作数字段出现。变量经常在操作数字段出现。三种属性:段,偏移和类型。三种属性:段,偏移和类型。段属性段属性:具有段地址:具有段地址。定定义义变变量量的的段段起起始始地地址址,此此值值必必须须在一个段寄存器中;在一个段寄存器中;第第3 3章章 汇编语言程序格式汇编语言程序格式偏偏移移:变变量量的的偏偏移移地地址址是是16位位无无符符号号数数,它它代代表表从从段段的的起起始始地地址址到到定定义义变变量量的的位位置置之之间间的的字节数。字节数。类型类型:定义该变量所保留的字

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

45、作,汇编程序将按其功能进行处理。对于宏指令,则将根据其定义展开。对于宏指令,则将根据其定义展开。3.操作数项操作数项:由由一一个个表表达达式式或或多多个个表表达达式式组组成成,多多个个操操作作数数项项之间一般用逗号分开。之间一般用逗号分开。在指令中,操作在指令中,操作数数项的位置被翻译成操作数地址项的位置被翻译成操作数地址。第第3 3章章 汇编语言程序格式汇编语言程序格式 操作数项可以是常数,寄存器,标号,变量操作数项可以是常数,寄存器,标号,变量,表达式表达式表表达达式式:是是由由常常数数,寄寄存存器器,标标号号,变变量量与与一一些些操操作作符组合的序列符组合的序列。有数字表达式和地址表达式

46、两种有数字表达式和地址表达式两种算术操作符算术操作符:,:,*,/,mod(除法求余)(除法求余)算术操作符可以用于数字表达式或地址表达式中算术操作符可以用于数字表达式或地址表达式中地址地址数字量是是某一单元的地址数字量是是某一单元的地址:SUM1:SUM字节单元的下一个字节单元的地址字节单元的下一个字节单元的地址SUM1:SUM字节单元的前一个字节单元的地址字节单元的前一个字节单元的地址第第3 3章章 汇编语言程序格式汇编语言程序格式例例1:要要求求把把首首地地为为BLOCK的的字字数数组组的的第第1个个字字传送到传送到DX寄存器,可用指令。寄存器,可用指令。MOVDX,BLOCK例例2:数

47、数组组A定定义义如如下下,试试写写出出把把数数组组长长度度(字字数)存入数)存入CX寄存器的指令。寄存器的指令。ADW1,2,3,4,5,6,7ENDDW?其中其中END是为计算数组长度而是为计算数组长度而建立建立的符号地址的符号地址MOVCX,(END-A)/2MOVCX,70500:00000100020003000400-0500060007000000偏移地址偏移地址:00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E0F(0E-00)/2=7第第3 3章章 汇编语言程序格式汇编语言程序格式逻辑操作符逻辑操作符:AND,OR,XOR,NOT逻辑操作

48、符是位操作,它逻辑操作符是位操作,它只能用于数字表达式中。只能用于数字表达式中。例例3:INAL,PORTOUTPORT+1,AL其其中中,PORT为为端端口口号号,OUT指指令令中中表表达达式式说说明明从从PORT重重读读出出数数据据,将将该该数数据据在在PORT+1中中输输出。出。第第3 3章章 汇编语言程序格式汇编语言程序格式关关系系操操作作符符:两两个个操操作作数数必必须须为为数数字字或或同同一一段段内两存储器地址内两存储器地址,结果有,结果有6种种:LT(小于)(小于),LE(小于等于)(小于等于)GT(大于)(大于),GE(大于等于)(大于等于)EQ(相等)(相等),NE(不等)(

49、不等)例例5:MOVBX,PORTLT5当当PORT5为真时,为真时,(BX)=0FFFFH,当当PORT=5为真时为真时,(BX)=0第第3 3章章 汇编语言程序格式汇编语言程序格式数值回送操作符数值回送操作符将变量或表号作为数值回送。将变量或表号作为数值回送。TYPE1)如如果果是是变变量量,则则汇汇编编程程序序将将回回送送该该变变量量类类型型包含的字节数包含的字节数:DB=1,DW=2,DD=4,DT=10.2)如果是标号,回送该标号类型的数值如果是标号,回送该标号类型的数值。NEAR1,FAR2例例6:ARRAYDW1,2,3ADDSI,TYPEARRAY 汇编:汇编:ADDSI,2第

50、第3 3章章 汇编语言程序格式汇编语言程序格式 LENGTH 变变量量中中使使用用DUP的的情情况况时时回回送送该该变变量量单单元元数数;其他情况回送;其他情况回送1例例7:FEESDW100DUP(0)MOVCX,LENGTHFEES汇编:汇编:MOVCX,100例例8:ARRAYDW1,2,3MOVCX,LENGTHARRAY汇编:汇编:MOVCX,1第第3 3章章 汇编语言程序格式汇编语言程序格式SIZE:汇编程序应回送分配给该变量的字节数,此值是LENGTH和TYPE值的乘积。FEESDW100DUP(0)MOVSI,TYPEFEESMOVCX,LENGTHFEES MOVDX,SIZ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com