资源描述:
《南京邮电大学微型计算机原理与接口技术 第5章 孙力娟.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章汇编语言程序设计一.EXE文件编程格式允许源程序使用多个逻辑段,适合编写大型程序,最终能生成.EXE文件例:将N1和N2两个单字节数以28为模求和→SUM单元5.1汇编源程序的编程格式.486DATASEGMENTUSE16N1DBxxN2DBxxSUMDB?DATAENDSSTACK_SEGMENTSTACK‘STACK’USE16DB128DUP(?)STACK_ENDSBEG:MOVAX,DATAMOVDS,AXMOVAX,STACK_MOVSS,AXMOVSP,128MOVAL,N1A
2、DDAL,N2MOVSUM,ALMOVAH,4CHINT21HCODEENDSENDBEG可省CODESEGMENTUSE16ASSUMECS:CODE,DS:DATA,SS:STACK_说明:.EXE文件中堆栈段的设置本例以“STACK_”为段名的逻辑段,选用了“STACK”链接参数,DOS自动认为“STACK_”段为堆栈段。所以,DOS将自动给SS:SP赋初值因此,源程序给SS:SP赋初值的三条语句是多余的。链接程序要求:.EXE文件中的源程序必须有堆栈段,否则链接时将给出警告信息Warni
3、ngnostacksegment但这不代表源程序有错,仅仅是警告而已如果源程序中不设置堆栈段(在链接时,会给出错误信息),DOS将自动给程序分配最少128字节的堆栈区,故源程序中,如果没有大量数据压栈的话,可以不设置堆栈段,从而简化程序。二.COM文件的编程格式1.汇编语言规定:COM文件的源程序只能有一个段:代码段,不允许有堆栈段在代码段偏移地址=100H处,必须是程序的启动指令程序中使用的数据可以放在代码段的开始或结尾.486.486CODESEGMENTUSE16CODESEGMENT
4、USE16ASSUMECS:CODEASSUMECS:CODEORG100HORG100HBEG:JMPSTARTBEG:MOVAL,N1N1DBXXADDAL,N2N2DBXXMOVSUM,ALSUMDB?MOVAH,4CHSTART:MOVAL,N1INT21HADDAL,N2N1DBXXMOVSUM,ALN2DBXXMOVAH,4CHSUMDB?INT21HCODEENDSCODEENDSENDBEGENDBEG2.例:上例,写成COM格式源程序3.COM文件的生成设上例的文件名为N1ADDN
5、2.ASM编辑生成N1ADDN2.ASM调用TASM.EXE生成N1ADDN2.OBJTASMN1ADDN2调用TLINK.EXE生成N1ADDN2.COMTLINKN1ADDN2/t注意:链接参数为小写字母t三.EXE文件、COM文件的内存映像INT20H…...数据段代码段堆栈段DS=ESCS:IPSS:SPPSP用户程序EXE文件内存映像EXE文件的内存映像DOS把EXE文件调入内存之后,自动在目标程序上方(低地址处)生成一个有256字节的数据块——程序段前缀(PSP)DOS令DS=
6、ES=PSP段基址,即DS≠用户数据段段基址,ES≠用户附加段段基址DOS令CS:IP=代码段启动指令的逻辑地址三.EXE文件、COM文件的内存映像INT20H…...数据段代码段堆栈段DS=ESCS:IPSS:SPPSP用户程序EXE文件内存映像EXE文件的内存映像DOS令SS:SP=用户堆栈段(如果有堆栈段的话)栈顶的逻辑地址,所以:用户程序必须给DS赋值,使DS=用户数据段段基址;用户程序必须给ES赋值,使ES=用户附加段段基址FS=GS=0,如果用户程序使用了FS、GS附加段,则必须给F
7、S、GS赋初值三.EXE文件、COM文件的内存映像INT20H…...代码段堆栈段00H00HCS=DS=ES=SSIP=100HSPPSP64K-256COM文件内存映像2.COM文件内存映像COM文件调入内存后,DOS也在其上方生成一个PSPCS=DS=SS=ES=PSP段基址,即用户程序的代码段、数据段、ES附加段和堆栈区都在一个64k的逻辑段中DOS自动使IP=100H,自动执行偏移地址为100H处的那条指令三.EXE文件、COM文件的内存映像INT20H…...代码段堆栈段00H00
8、HCS=DS=ES=SSIP=100HSPPSP64K-256COM文件内存映像2.COM文件内存映像DOS自动使SP=FFFEH,且SS:[SP]=SS:[SP+1]=0,这就意味在COM文件中代码段以下,FFFEH以上这一片存储单元都是用户的堆栈区FS=GS=0四.程序段前缀—PSPPSP是一个有256字节的数据块,由DOS在装载可执行文件时自动生成。DOS通过PSP向用户程序传递数据,PSP是程序运行不可缺少的部分每一个可执行文件都伴随有自己的PSP五.返回