网站大量收购独家精品文档,联系QQ:2885784924

汇编语言基础5教程.ppt

  1. 1、本文档共192页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言基础5教程

第五章 汇编语言程序设计;5.1 汇编源程序的编程格式;5.1.1 EXE文件的编程格式;例 显示10行HELLO (EXE文件的编程格式); MOV CX,10 LAST: MOV AH,9 MOV DX,OFFSET MESG INT 21H LOOP LAST MOV AH,4CH ;返回DOS INT 21H CODE ENDS END BEG;5.1.2 COM文件的编程格式;例 显示10行HELLO (COM文件的编程格式); DOS把COM文件调入内存后,自动使DS=CS,所以DS不必初始化。 COM文件的生成 ?首先源程序的编程格式必须符合以上规定。 ?如果使用低版本的汇编和链接程序,生成COM文件需4步: ①编辑生成ASM文件 ②汇编生成OBJ文件 ③链接生成EXE文件 ④用EXE2BIN.EXE文件将EXE文件转换成COM文件。;COM文件的生成 ? 使用高版本的汇编和链接程序,需要3步: ①编辑生成ASM文件 ②汇编生成OBJ文件 ③链接时使用小写‘t’做链接参数即可直接生成COM文件;由汇编语言源程序到可执行文件的处理过程;5.1.3 EXE和COM文件的内存映象;EXE文件的内存映像 DOS自动使CS:IP指向用户程序的启动指令所在的存储单元, SS:SP指向用户堆栈段的栈顶(SS指向堆栈段的段基址), 同时自动给DS、ES、FS和GS赋值,使DS=ES=PSP所在段的段基址,FS=GS=0。 然后,把计算机的控制权交给用户程序。 ;EXE文件的内存映象图: ;用户程序无须对CS,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指向用户堆栈段的栈顶)。 然后,把计算机的控制权交给用户程序。;? COM文件的内存映象图;5.1.4 程序段前缀PSP; ? PSP格式 ;5.1.5 返回DOS的其他方法; ⑵对COM文件返回DOS另外三种方法: 直接调用INT 20H; 调用INT 21H 的0号功能; 执行RET功能。 (必须保证此时SP=FFFEH, CPU将无条件转入PSP的首单元,执行那里的INT 20H, 返回DOS. );⑶ 对于EXE文件返回DOS的另一种方法: 当用户程序执行完成后,设法修改CS:IP的值,让它们指向PSP中第一个存储单元开始存储的INT 20H指令。 以下三个步骤缺一不可: ①把整个用户程序定义在一个类型属性为FAR的远过程中; ②在对DS赋初值之前,使用以下三条指令压栈保存PSP第一个字节单元的地址: PUSH DS MOV AX,0 PUSH AX ; ③在用户程序末尾添加一条RET指令。 因为在这个FAR类型的过程中,执行RET指令会从堆栈的栈顶指示的存储单元开始,弹出两个字长的数据(即PSP首单元的地址),分别送入IP和CS。于是,在执行完用户程序的最后一条指令以后,CPU紧接着执行PSP首单元指示的指令INT 20H,从而返回DOS。;例5.1.3 显示10行HELLO; MOV CX,10 LAST: MOV AH,9 MOV DX,OFFSET MESG INT 21H LOOP LAST RET ; ③弹出 PSP首单元的地址 MAIN ENDP CODE ENDS END BEG;5.1.6 源程序堆栈段的设置;5.2 DOS系统的I/O功能调用;[功能号00H] 结束一个程序。在COM格式的文件中,可以用来结束当前程序。 入口参数

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档