资源描述:
《第五章汇编语言程序设计new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章汇编语言程序设计32位微机系统中,CPU可以工作在实模式、保护虚拟模式下,本章仅介绍基于实模式的程序设计。5.1汇编源程序的编程格式EXE格式COM格式COM文件的执行级别高于EXE文件。5.1.1EXE文件的编程格式源程序可使用多逻辑段在实模式下,每个逻辑段大小不超过64KB适合编写大型程序例显示10行HELLO(EXE文件的编程格式);FILENAME:611.ASM.486DATASEGMENTUSE16MESGDB‘HELLO’,0DH,0AH,’$’DATAENDSSTACKSEGMENTDB100DUP(?)STACKENDSCODESEG
2、MENTASSUMECS:CODE,DS:DATA,SS:STACK_SEGMENT;段约定BEG:MOVAX,STACK_SEGMENT;程序启动地址指令MOVSS,AXMOVSP,100;以上置堆栈段初值,可以省略MOVAX,DATAMOVDS,AX;以上设置DS初值MOVCX,10LAST:MOVAH,9MOVDX,OFFSETMESGINT21HLOOPLASTMOVAH,4CH;返回DOSINT21HCODEENDSENDBEG;显示一行HELLO5.1.2COM文件的编程格式源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;数据可以集
3、中设置在段的开始或末尾;程序的启动指令必须存放在偏移地址为100H的单元;代码段长度小于64KB,适合于编写中小型程序。例显示10行HELLO(COM文件的编程格式);FILENAME:612.ASM.486CODESEGMENTASSUMECS:CODEORG100HBEG:JMPSTART;程序的启动指令须放在偏移地址为100H的单元MESGDB‘HELLO’,0DH,0AH,’$’;用户程序数据区START:MOVCX,10LAST:MOVAH,9MOVDX,OFFSETMESGINT21HLOOPLASTMOVAH,4CHINT21HCODEENDSEND
4、BEGDOS把COM文件调入内存后,自动使DS=CS,所以DS不必初始化。COM文件的生成首先源程序的编程格式必须符合以上规定。如果使用低版本的汇编和链接程序,生成COM文件需4步:①编辑生成ASM文件②汇编生成OBJ文件③链接生成EXE文件④用EXE2BIN.EXE文件将EXE文件转换成COM文件。COM文件的生成使用高版本的汇编和链接程序,需要3步:①编辑生成ASM文件②汇编生成OBJ文件③链接时使用小写‘t’做链接参数即可直接生成COM文件由汇编语言源程序到可执行文件的处理过程5.1.3EXE和COM文件的内存映象1.EXE文件的内存映像EXE文件包括
5、:装入模块和“重定位信息”。DOS装入文件时两部分都调入内存,DOS根据重定位信息,完成对装入模块的重定位后就丢弃重定位信息。程序段前缀(PSP)DOS在用户程序上方(低地址)偏移地址为00~FFH的内存单元中生成一个256个字节的数据块,即程序段前缀(PSP)。EXE文件的内存映像DOS自动使CS:IP指向用户程序的启动指令所在的存储单元,SS:SP指向用户堆栈段的栈顶(SS指向堆栈段的段基址),同时自动给DS、ES、FS和GS赋值,使DS=ES=PSP所在段的段基址,FS=GS=0。然后,把计算机的控制权交给用户程序。EXE文件的内存映象图:用户程序无须对CS
6、,SS进行赋值。在程序开始需重新给DS和ES赋初值。DOS对DS和ES赋给的初值并不等于用户程序中数据段和附加段的段基址,所以在程序开始需重新给DS和ES赋初值。2.COM文件的内存映像COM文件没有重定位信息,文件体积比EXE小。程序段前缀(PSP)DOS装入COM文件时会在用户程序上方(低地址)偏移地址为00~FFH的内存单元中生成一个256个字节的数据块,即程序段前缀(PSP)。在偏移地址为100H的内存单元开始存放程序的第一条指令。DOS自动使CS=DS=ES=SS=PSP所在段的段基址,FS=GS=0,且IP=100H,SP=FFFEH(SS:SP指向用
7、户堆栈段的栈顶)。然后,把计算机的控制权交给用户程序。COM文件的内存映象图IP=100HSP=FFFEH5.1.4程序段前缀PSP程序段前缀PSP程序段前缀占256B的存储单元,其中的信息是DOS装载可执行文件时自动生成的。PSP是程序运行不可分割的部分,内存中的每一个执行程序都有相应的PSP。DOS是通过PSP管理用户程序的。DOS通过PSP向用户程序传递参数,通过PSP向用户程序提供程序正常结束或者异常结束时返回DOS的途径。当程序结束返回DOS,程序以及相应的PSP所占据的内存空间同时释放,交还给DOS。PSP格式PSP+00~01HINT20H返回D
8、OSPSP