第3章-汇编语言程序格式课件

PPT
  • 阅读 39 次
  • 下载 0 次
  • 页数 82 页
  • 大小 162.000 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
第3章-汇编语言程序格式课件
可在后台配置第一页与第二页中间广告代码
第3章-汇编语言程序格式课件
可在后台配置第二页与第三页中间广告代码
第3章-汇编语言程序格式课件
可在后台配置第三页与第四页中间广告代码
第3章-汇编语言程序格式课件
第3章-汇编语言程序格式课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 82
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】第3章-汇编语言程序格式课件.ppt,共(82)页,162.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44746.html

以下为本文档部分文字说明:

第3章汇编语言程序格式第3章汇编语言程序格式3.1汇编程序功能3.2伪操作3.3汇编语言程序格式3.4汇编语言程序的上机过程3.5DOS系统功能调用开始3.1汇编程序功能1.程序的建立及汇编过程⑴用编辑程序建立ASM源文件源

文件就是用汇编语言的语句格式编写的程序-源程序。它是不能被机器所识别的,所以要经过汇编程序加以翻译。我们通常用编辑程序(全屏幕编辑程EDIT)产生汇编语言的源程序。返回本章首页⑵用MASM程序把源程序ASM转换成OBJ文件。汇编语言的作用就是把源文件转换成二进制代码表示的目标文件(称为OBJ

文件)。在转换的过程中,汇编程序对源程序进行二遍扫视,如果源程序中有语法错误,则汇编结束后,汇编程序将指出源程序中的错误,用户还可以用编辑程序来修改源程序中的错误,最后得到无语法错误的OBJ文件。⑶用LINK

程序把OBJ文件转换成EXE文件OBJ文件虽然已经是二进制文件,但它还不能直接上机运行;OBJ文件必须经过连接程序(LINK)把目标文件与库文件或其他目标文件连接在一起形成可执行文件(EXE文件)。这个文件可以由DOS装入存储器,并在机

器上运行。⑷用DOS文件命令直接键入文件名就可以执行改程序。用图来表示对汇编语言的处理过程:2.汇编程序的主要功能:⑴检查源程序;⑵测出源程序中的语法错误,并给出出错信息⑶产生源程序的目标程序,并给出列表文件⑷展开宏指令编辑程序ABC.ASM文件汇编程序ABC

.OBJ文件连接程序ABC.EXE文件3.2伪操作汇编语言程序由指令、伪操作和宏指令组成。伪操作又称伪指令,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,它们可以完成如数据定义,分配

存储区,指示程序结束等功能。返回本章首页1.数据定义及存储器分配伪操作伪操作的格式:【变量】助记符操作数1,操作数2,…【;注释】其中变量字段是可有可无的,它是符号地址,(1)变量是“操作数1”的偏移地址。(2)助记符(操作项):说明伪操作的功能。【说明所定义

的数据类型】(3)操作数:是存放到数据区的数据,以备程序使用。(4)注释:说明该伪操作的功能,它是可有可无的。1.数据定义及存储器分配伪操作(2)助记符(操作项):说明伪操作的功能【说明所定义的数据类型】DB:用来定义字节,其后的每一个操作数都占一个字节。DW:用来定

义字,其后的每一个操作数都占一个字(低位字节在第一个字节地址中,高位字节在第二个字节地址中)。DD:定义双字,其后的每个操作数占有二个字。DQ:定义四个字,其后的每个操作数占四个字DT:定义十个字节,其后

每个操作数占10个字节。1.数据定义及存储器分配伪操作这些伪操作可以把数据存入指定的存储单元或者只分配存储器空间而并不存入确定的数据。(3)操作数:是存放到数据区的数据,以备程序使用。①操作数可以是常数或表达式,但在存储区中存放的是数据。1.数据定义及

存储器分配伪操作例3.7数据的定义:DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,+5DATE_DWDD3*20,0FFFDHARYDW1,1,1,2,2,2解:DB:100AH,DW:100D0064H+5

0005HDD:3*20=60D=3CH=0000003CH0FFFDH=0000FFFFDH1.数据定义及存储器分配伪操作DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,+5DATE_DWDD3*2

0,0FFFDHNUMDW1,1,1,2,2,2DS=0B45ES=0B35SS=0B48CS=0B55IP=0010NVUPEIPLNZNAPONC-D0B45:00000B45:00000A04106400000105

-003C000000FD0F00...d.....0B45:00100001000100010002-0002000200000000.........0B45:00200000000000000000

-0000000000000000.........1.数据定义及存储器分配伪操作②操作数也可以是字符串例3.8:MESSAGEDB‟HELLO‟DB„AB‟用ASCII码值一个字节来表示一个字符H-48H;E-45H;L-

4CH;L-4CH;O-4FH;A-41H;B-42H用十六进制表示的ASCII码字符。DS=0B45ES=0B35SS=0B47CS=0B54IP=0005-D0B45:00000B45:000048454C4C4F414201-0001000100020002HELLOAB...0B4

5:00100002000600000000-0000000000000000..........③操作数可以保留存储空间,但不存入数据。例3.9:ABCDB0,?,?,?,0DEFDW?,60,?0B45

:0000000000000000003C-00000000④操作数字段还可以使用复制操作符来复制一个多个或操作数。格式:复制数DUP(操作数,…,操作数)复制数指定括号中的操作数被重复的次数,它可以是一个表达式。例3.10:ARRAY1DB2DUP(0,1

,2,?)ORG10HARRAY2DB5DUP(?)ORG20HARRAY3DB5DUP(8)语句1与ARRAY1DB0,1,2,?,0,1,2,?等价0B45:00000001020000010200-00000000000000000

B45:00100000000000000000-00000000000000000B45:00200808080808000000-0000000000000000⑤DUP操作可嵌套例:ARRAY4DB2DUP(0,2DUP(1,2),3)(1+2×2+1)×2=6×2=12字节

⑥变量的类型属性:1)变量是第一个数据项的偏移地址。2)用来表示每一个数据项的长度,它是以字节为单位来表示的。用DB定义的变量占1字节。DW=2,DD=4,DQ=8,DT=10汇编语言用隐含的类型属性来确定某些指令是字指令还是字节指令在赋值语句中,两个

操作数类型要一致。例7:OPER1DB1,2OPER2DW1234H,5678H┆MOVAL,OPER1(赋值语句)MOVAX,OPER2∴OPER1为字节类型属性,AL为字节类型属性,OPER2为字类型属性,AX为字类型属性。若改为MOVAX

,OPER1MOVAL,OPER2错误:汇编程序在汇编时,能发现两条MOV指令中的两个操作数的类型不匹配。可以用“PTR”属性操作符指定操作数的类型属性,其格式:类型PTR变量±常量类型:BYTE,WORD,DWORD(双字

)格式:类型PTR变量±常量类型:BYTE,WORD,DWORD(双字)改正:MOVAX,WORDPTROPER1→(AX)=0201HMOVAL,BYTEPTROPER2→(AL)=34H这样OPER1类型属性为字,两个操作数(AX,OPER1)的类型一致,汇编时不会出错,运行时把OPER1

的字内容送入AX,即将OPER1的内容送AL,把OPER1+1的内容送AH,执行后(AX)=0201H,而第二条指令应把OPER2的第一个字节内容送AL,即(AL)=34H⑦LABEL:用来使同一个变量具有不同的属性(与PT

R属性操作符类似)格式:变量LABEL类型其中:类型-BYTE,WORD,DWORD例8:B_ARRAYLABELBYTEW_ARRAYDW1122H,1122H数据1122H的第一个字节的地址赋予2个不同类型的变量名:字

节类型变量B_ARRAY和字类型变量W_ARRAY。MOVAL,B_ARRAY;(AL)=22HMOVBX,W_ARRAY;(BX)=1122H2.表达式赋值伪操作有时程序中多次出现同一个表达式,为方便起见可以用赋值伪操作给表达式赋予一个

名字。格式:⑴表达式名EQU表达式表达式名:凡用到该表达式之处就可以用表达式名来代替表达式:操作数、可求出常数值的表达式、有效的助记符例:CONSTANTEQU256数赋以符号名ALPHAEQUCONSTANT+7⑵“=”伪操作也可作为赋值伪操作使用,并且“=”伪操作允

许重复定义。例:EMP=7EMP=EMP+1而EQU伪操作中的表达式名是不允许重复定义的。3.段定义伪操作存储器的物理地址是由段地址和偏移地址组成的,当汇编程序把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并把有关的信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在

一起形成一个可执行的程序。段定义伪操作的格式段名SEGMENT定位类型组合类型使用类型‘类别’例如:DATA1SEGMENTPARAPRIVATEUSE16„DATA‟DATA1ENDS段定义格式:SEGMENT;ENDS①对于数据段,附加段,堆栈段来说,是存储单元的定义分配②对于代码段则

是指令及伪操作。段名—必须由SEGMENT定义的段中的段名各段的作用:是通过它与段寄存器的关系语句声明指定的。语句格式:ASSUME段寄存器:段名段寄存器—CS,DS,ES,SS例如:ASSUMEDS:DATA1例如:data_seg1segment;定义数据段……data_seg1end

sdata_seg2segment;定义附加段……data_seg2endscode_segsegmentassumecs:code_seg,ds:data_seg1,es:data_seg2start:movax,data-seg1;数据段地址放入dsmovds

,axmovax,data-seg2;附加段地址放入esmoves,ax……Code_segends;代码段结束endstart∵ASSUNE伪操作只指定某一个段分配给哪一个段寄存器,它并不把段地址装入段寄存器中,所以在代码段中必须把段地址装入

相应的段寄存器中。SEGMENT伪操作还可以增加类型及属性的说明;格式如下:Segnamesegment定位类型组合类型使用类型类别……Segnameends段定义伪操作的格式段名SEGMENT定位类型组合类型使用类型‘类别’例如:DAT

A1SEGMENTPARAPRIVATEUSE16„DATA‟DATA1ENDS⑴定位类型:段起始位置的边界值的情况PARA:指定段的起始地址必须从小段边界开始,小段边界是指段的地址的最低的16进制数

位必须为0。BYTE:该段可以从任何地址开始,这样定义段的时候等于对段的起始位没有限制。WORD:该段必须从字的边界开始,即段地址必须为偶数。PAGE:该段必须从页的边界开始,即段地址的最低两个16进制数位必须

为0(该地址能被256整除)段定义伪操作的格式段名SEGMENT定位类型组合类型使用类型‘类别’例如:DATA1SEGMENTPARAPRIVATEUSE16„DATA‟⑵组合类型:程序连接时的段合并方法。PUBLIC:该段连接时将与有相同名字的其他分段连接在一起,连

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

SEGMENT定位类型组合类型使用类型‘类别’DATA1SEGMENTPARAPRIVATEUSE16„DATA‟(3)使用类型:用来说明使用16位寻址方式,还是32位寻址方式。它们是:USE16:使用16位寻址方式;USE32:使用32位寻址

方式。使用类型默认项为USE16(4)„类别’:在引号中给出类型名,连接时把相同类型的段的位置靠在一起。4.存储模型与简化段定义伪操作简化段定义例:.MODELSMALL.STACK100H.DATAA1DB08H;定义数据区┆.CODESTART:MOVAX,@DATAMOVDS,A

X……MOVAX,4C00HINT21HENDSTART⑴MODEL伪操作用来说明在存储器中是如何存放各个段的。Ting:所有数据和代码都放在一个段内,其数据和代码都是近访问。近访问:位移量是16位,范围在-327

68~+32767之间。Small:所有数据放在一个64K的数据段内,所有代码放在另一个64K的代码段内。5.程序开始和结束伪操作在程序的开始可以用NAME或TITLE为模块取名字。(1)NAME:模块名例:NAME:EX_MOVS汇编程序把NAME后边给出的名字作为模块名。

程序中也可使用TITLE伪操作:(2)TITLETEXT例:TITLEEX_MOVSTITLE伪操作可指定每一页上打印标题;汇编程序可以将TEXT的前六个字符作为模块名。若既无NAME,又无TITLE,则把源文件名作为模块名。表示源程序结束的伪操作的格式为:END[LABEL]例:ENDS

TART其中label标号指示程序开始执行的起始地址,如果是多个程序模块相连接,则只有主程序才使用标号,其它子程序则只用END而不必指定标号。title给出标题,用endstart表示程序结束;汇编程序遇到END时结束汇编

,并指出从START开始执行。例如:设计一个程序,实现三个数10H、3BH和42H的加法运算,源程序的名字为ABC.ASM。STACKSEGMENTDB20DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STA

CKSTART:MOVAX,DATAMOVDS,AXMOVAL,10HADDAL,3BHADDAL,42HMOVAH,4CHINT21HCODEENDSENDSTART6.对准伪操作和地址计数器⑴EVEN伪操作使下一个字节地址是偶数∵一个字的地址最好从偶地址开始,∴对于字数组,为保证其

从偶地址开始,可以在它前面用EVEN来实现。DATASEGMENT┆EVENWARRYDW100DUP(?)┆DATAENDS⑵ORG『常用的表达式』设置当前地址计数器的值使下一个字节的地址是常数表达式的值。例

如:VECTORSSEGMENTSORG10HVECT1DW1234HORG20HVECT2DW5678HVECTORSENDS∴VECT1的偏移地址值为10H,而VECT2偏移值为20H⑶地址计数器的值可用$来表示,并可直接用$来引

用地址计数器的值。在对源程序进行汇编时,使用地址计数器来保存当前正在汇编的指令的地址。例如:VECTORSSEGMENTSORG10HVECT1DW$+1234H;(VECT1)=1244HORG20HVECT

2DW$+5678H;(VECT2)=5688HVECTORSENDS⑷ALIGN伪操作设置地址值是4的倍数。格式为:ALIGNboundary其中boundary必须是2的幂例:DATA┆ALIGN4ARRAYDB100DUP(?)保证了ARRAY的值为4的倍数。例1:定义数据段中变

量A=10,数组WARRY有10个元素11,再定义变量B=10DATASEGMENTADB10WARRYDW10DUP(11)BDB10DATAENDS例2:定义数据段中变量A=10,数组WARRY有10个元素11,但该数组应从偶地址开始存放数据,再定义变量B=10DATASE

GMENTADB10EVENWARRYDW10DUP(11)BDB10DATAENDS例3:定义数据段中变量A=10,存入数组WARRY时,应用20H开始,存放10个元素11,再存放B=10变量并从30H开始DATASEGMENTADB10ORG20HWARRYD

W10DUP(11)ORG30HBDB10DATAENDS7.基数控制伪操作汇编程序默认的数为10进制数,因而除非专门指定,汇编程序把程序中出现的数均看作10进制数。当使用其他基数表示的常数时,需要专门给以标记。⑴二进制数由一串

0,1组成其后跟以字母B,如:00101100B⑵十进制数:由0-9数字组成的数,后面可以跟字母D,如178D⑶十六进制数:由数字0-9,A-F组成的数,后面跟字母H.如果这个数的第一个字符是A-F时,应在其前加上数字0,如0FFFF⑷八进制数:由数字0-7组成的数,

后面可跟字母O或Q,如:1777O⑸RADIX:可把默认的基数改变为2-16范围内的任何基数RADIX表达式表达式的值为默认的基数值(十进制表示)例:MOVBX,0FFHRADIX16MOVBX,178M

OVBX,0FFMOVBX,178D是等价的。∴把基数定为16进制数后,十进制数后跟D,如果某16进制数末字符为D,则应在其后跟字母H,以免与10进制混淆。⑹字符串可以看成串常数,可以用双引号或单引号把字符串放

在其中,得到的是字符串的ASCII码值.例如:DB‘ABCD‟db“good”3.3汇编语言程序格式汇编语言源程序中的每个语句可以由四项组成,语句格式:『名字』操作项操作数『;注释』其中,名字项是一个符号;操作项是一个操作码

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

注释』1.名字项:源程序中用下列字符来表示名字:(1)字母A-Z;(2)数字0~9;(3)专用字符?.@_$除了数字外,所有字符都可以放在源语句的第一个位置。名字中如果遇到“.”则必须是第一个字府。可以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所识

别。名字项可以是标号或变量,它们都用来表示本语句的符号地址。它是可有可无的,只有用符号地址来访问该语句时它才需要出现。语句格式:『名字』操作项操作数『;注释』⑴标号:标号在代码段中定义,后面根冒号“:”,它也可以用LABEL或EQU伪操作来定义。标号经常在转

移指令用以表示转向地址。三种属性:段,偏移和类型①段属性:标号的段地址已隐含给出,标号的段地址总在CS寄存器中。②偏移:标号的偏移地址是16位无符号数,它代表从段起始地址到定义标号的位置之间的字节数③类型:用来指出该标号是在本段

内引用还是在其它段中引用,如在段内则称为NEAR指针长度为2字节。如在段外引用则称为FAR指针长度4字节。⑵变量:变量在除代码段以外的其他段中定义,后面不根冒号,它也可以用LABLE或EQU伪操作来定义。变量经常在操作数字段出现。三种属性:

段,偏移和类型。①段属性:具有段地址。定义变量的段起始地址,此值必须在一个段寄存器中;②偏移:变量的偏移地址是16位无符号数,它代表从段的起始地址到定义变量的位置之间的字节数。③类型:定义该变量所保留的字节数。如:BYTE(1个字节长)WORD(2个字

节长)DWORD(4个字节长)DQ(8个字节长)在程序中,标号或变量的定义只允许出现一次。语句格式:『名字』操作项操作数『;注释』2.操作项:操作项可以是指令助记符,伪操作或宏指令的助记符。对于指令,汇编程序

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

达式表达式:是由常数,寄存器,标号,变量与一些操作符组合的序列。有数字表达式和地址表达式两种⑴算术操作符:+,-,*,/,mod(除法求余)算术操作符可以用于数字表达式或地址表达式中地址±数字量是是某一单元的地址:SUM+1:SUM字节单元的下一个字节单元的地

址SUM-1:SUM字节单元的前一个字节单元的地址例1:要求把首地为BLOCK的字数组的第1个字传送到DX寄存器,可用指令。MOVDX,BLOCK例2:数组A定义如下,试写出把数组长度(字数)存入CX寄存器的指令。ADW1,2,3,4,5,6,7ENDDW?其中E

ND是为计算数组长度而建立的符号地址MOVCX,(END-A)/2→MOVCX,70500:00000100020003000400-0500060007000000偏移地址:00-01-02-03-04-05-06-07-08-09-0A-0B-0C-

0D-0E0F(0E-00)/2=7⑵逻辑操作符:AND,OR,XOR,NOT逻辑操作符是位操作,它只能用于数字表达式中。例3:INAL,PORTOUTPORT+1,AL其中,PORT为端口号,OUT指令中表达式说明从PORT重读出数据,将该数据在PORT+1中输出。⑶关

系操作符:两个操作数必须为数字或同一段内两存储器地址,结果有6种:LT(小于),LE(小于等于)GT(大于),GE(大于等于)EQ(相等),NE(不等)例5:MOVBX,PORTLT5当PORT<5为真时,(BX)=0F

FFFH,当PORT>=5为真时,(BX)=0⑷数值回送操作符将变量或表号作为数值回送。①TYPE1)如果是变量,则汇编程序将回送该变量类型包含的字节数:DB=1,DW=2,DD=4,DT=10.2)如果是标号,回送该标

号类型的数值。NEAR=-1,FAR=-2例6:ARRAYDW1,2,3ADDSI,TYPEARRAY汇编:ADDSI,2②LENGTH变量中使用DUP的情况时回送该变量单元数;其他情况回送1例7:FEESDW100DUP(0)MOVCX,LENGTH

FEES汇编:MOVCX,100例8:ARRAYDW1,2,3MOVCX,LENGTHARRAY汇编:MOVCX,1③SIZE:汇编程序应回送分配给该变量的字节数,此值是LENGTH和TYPE值的乘积。FEESDW100DUP(0)

MOVSI,TYPEFEESMOVCX,LENGTHFEESMOVDX,SIZEFEES汇编:MOVSI,2MOVCX,100MOVDX,200④OFFSET:回送变量或标号的偏移地址。格式为:OFFSETVariable或label例:MOVBX,OFFSE

TFEES将OPER的偏移地址作为立即数回送给指令而在执行时,则将该偏移地址装入BX寄存器中。与LEABX,FEES等价。⑤SEG:回送变量的段地址或标号的段地址例:数组A定义如下DATASEGMENTADW1,2,3,4,5,6,7ENDDW?DATAENDSMO

VBX,SEGADATA是从存储器的05000H地址开始的一个数据段的段名,A是该段中的一个变量名,将把0500H赋值给BX。⑸属性操作符包括6种:①PTR②段操作符③SHORT④THIS⑤HIGH⑥LOW

①PTR类型PTR表达式(typePTRexpression)用来给已分配的存储地址赋予另一种属性使该地址具有另一种类型。类型:类型字段表示所赋予的新类型属性。表达式:表达式字段是原有类型的符号字段。OPER2DW1234H,5678HMOVAL,BYTEPTROPER2→(AL)

=34H例:已有数据定义如下:TWO_BYTEDW?用下列语句对这两个字节赋予另一类型定义:ONE_BYTEEQUBYTEPTRTWO-BYTE这里ONE-BYTE和TWO-BYTE两个符号地址具有相同

的段地址和偏移地址。但类型属性不同,ONE_BYTE为字节变量,TWO-BYTE为字节变量.∵说明类型可有:BYTE,WORD,DWORD,NEAR,FAR几种。∴PTR可用来建立字,双字,段内或段间指令单元②段操作符用来表示一个标号,变量或地址表达式的段属性例如:用段前缀指定某段的地址操作数

。MOVAX,ES:[BX+SI]表示形式:段名:地址表达式③SHORT用来修饰指令中转向地址的属性指出转向地址是在下一条指令地址的±127个字节范围内④THIS⑤格式:THIS属性或类型该操作数的段地址和偏移地址与下一个存储

单元地址相同。它可以象PTR一样建立一个指定类型或指定距离的地址操作数。例如:FIRST_TYPEEQUTHISBYTEWORD_TABDW100DUP(?)此时FIRST_TYPE的偏移地址和WORD_TAB完

全相同,但它是字节类型的,而WORD_TAB是字类型的。⑤HIGH和LOW:称为字节分离操作符,它接收一个数或地址表达式,HIGH取其高字节,LOW取其低字节。例:CONSTEQU0ABCDH则MOVAH,HIGHCONST将汇

编成MOVAH,0ABH以上说明了五种类型的常用操作符。表达式是常数,寄存器,标号,变量和操作符的组合.在计算表达式时,应该先计算优先级高的操作符。然后从左到右的对优先级相同的操作符进行计算。优先级从高到低排列如下,共11级。(P109)语句格式:『名字』操作项操作

数『;注释』⑷注释项:说明一段程序或一条指令的功能,是可有可无的。语句中分号“;”后面是注释项.3.4汇编语言程序的上机过程1.建立汇编语言的工作环境:EDIT.COM;编辑程序MASM.EXE;汇编程序LINK

.EXE;连接程序DEBUG.COM;调试程序EXE2BIN.EXE;转换成COM文件以上文件存放在磁盘上。返回本章首页2.建立ASM文件设用编辑软件建立一个文件名为:abc.asm的原文件.C>EDITabc.asm[BR]E存盘退出3.产生OBJ文件MASMABC[BR]源文件建立后,就用M

ASM对源文件汇编,汇编后产生二进制的目标文件(OBJ)4.用LINK产生EXE文件LINKABC[BR]5.程序的执行C>ABC[BR]C>DEBUGABC.EXE[BR]3.产生OBJ文件C>MASMABC[BR]TheIBMPersonlComputerAssemblerVersion

1.00(C)CopyrightIBMCORP(98)Obgectfilename[ABC.OBJ]:SourceListing[NUL.LST]:ABCCrossreference[NUL.CRF]:ABC第一个是OBJ文件-目标文件第二个是LST文件-列表文

件列表文件同时列出源程序和机器语言程序清单,并给出符号表,因而使程序调试更加方便。LST清单的最后部分为段名表和符号表,段的大小及有关属性,以及用户定义的符号名,类型及属性第三个是CRT文件-产生交叉引用表该表给出用户定义的所有符号,对于每个符

号列出了其定义所在行号及引用的行号。4.用LINK产生EXE文件LINK有两个输入文件OBJ和LIBOBJ是需要连接的目标文件,LIB则是程序中需要用到的库文件,如无特殊要求,则对[LIB]:回车LINK的另一个输出文件是MAP文件,它是连接程序的列表文件,称为连接映象,它

给出每个段在存储器中的分配情况。5.程序的执行C>ABCCSDSSSES000600000000030存储器40B数据┆a40B附加数据29B代码书P28段寄存器3.5DOS系统功能调用3.5.1概述3.5.2常用的DOS系统功能调用3.5.1概述对

8086系列机来说,MS-DOS操作系统是最主要的操作系统。MS-DOS操作系统除了具有较为完整的文件管理功能之外,同时还为各种应用程序、外围设备等提供软件接口。它由三部分组成:IO.SYS、MSDOS.SYSCOMMAND.COM。DOS系统功能调用的方

法一般可分为以下几步:①设置所要调用功能的入口参数。②在AH寄存器中存入所要调用功能的功能号。③INT21H指令自动转入中断子程序入口。④相应中断子程序运行完毕,可按规定取得出口参数。3.5.2常用的DOS系统

功能调用1.单字符输入(1号调用)2.单字符显示(2号调用)3.打印输出(5号调用)4.结束调用(4CH号调用)5.显示字符串(9号调用)6.字符串输入(10号调用)1.单字符输入(1号调用)格式:MOVAH,1INT21H功能:从键盘输入字符的ASCII码送入寄存器AL中,并

送显示器显示。2.单字符显示(2号调用)格式:MOVDL,待显示字符的ASCII码MOVAH,2INT21H功能:将DL寄存器中的字符送显示器显示。如果DL中为〈CTRL〉+〈BREAK〉的ASCII码,则退出。3.打印输出(5号调用)格

式:MOVDL,待打印字符的ASCII码MOVAH,5INT21H功能:将DL寄存器中的字符送打印机打印。4.结束调用(4CH号调用)格式:MOVAH,4CHINT21H功能:终止当前程序并返回调用(返回DOS)5.显示字符串(9号

调用)格式:LEADX,待显示字符串首偏移地址MOVAH,9INT21H功能:将当前数据区中以‘$’结尾的字符串送显示器显示。6.字符串输入(10号调用)格式:LEADX,缓冲区首偏移地址MOVAH,10INT21H功能:从键盘上输入一字

符串到用户定义的输入缓冲区中,并送显示器显示。【例3.25】若要在屏幕上显示字符串“Exampleofstringdisplay!”,则程序如下:DATASEGMENTSTRDB0DH,0AH,‘Exampleofstringdispl

ay!$’DATAENDSSTACKSEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CHIN

T21HCODEENDSENDBEGIN本章到此结束!返回本章首页结束

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?