l第4章汇编语言.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
l第4章汇编语言

汇编语言程序设计 第四章 汇编语言程序设计 汇编语言介绍 第4.1节 汇编语言介绍 一. 汇编语言种类 绝对汇编:只能将助记符转换成机器码 符号汇编:增加了段的定义,可用符号表示变量、常数、地址等 宏汇编:增加了宏指令、结构、记录等高级功能 二. 伪指令 编译后不产生代码,仅在编译时起控制或指示作用。如:OFFSET 三. 宏指令 将常用的一系列指令定义成一条宏指令,编译时先对宏指令进行预处理(宏展开),再对展开之后的程序进行编译。 四. 汇编程序开发过程 汇编语言介绍 1. 编辑 — 编辑后形成源程序文件 *.asm,以ASCII码形式存盘 2. 编译 — 对源程序*.asm进行编译,形成*.obj文件,以二进制形式存盘 编译工具: masm / tasm 例: masm auto.asm 3. 连接 — 将1个或多个*.obj文件进行连接,形成*.exe或*.com文件 连接工具: link / tlink 例: link auto.obj 4. 调试 — 对程序进行调试,调试工具:TD.exe 或 debug.exe .COM文件与.EXE文件的区别 .COM文件是内存映像文件,直接装入内存即可执行,其中代码、数据、堆栈、扩展4个段完全重合,程序不超过64KB,装入执行较快 .EXE文件不是内存映像文件,执行时需要把代码段、数据段、堆栈段等重新定位,然后才能执行,装入执行速度相对较慢。 .COM或.EXE文件装入内存时都会产生一个256字节的程序段前缀PSP(Program Segment Prefix),包含程序运行的基本信息,存放在程序开始的0~FFH处,具体格式如下: 程序段前缀说明 PSP+0H处存放了一条指令,是用于结束程序的DOS中断,即INT 20H PSP+2H处是程序可用的内存空间,以小段为单位,每小段为16字节 PSP+5H处是DOS功能调用INT 21H的入口地址。 PSP+0AH~0DH是INT 22H的入口IP和CS PSP+0EH~11H是INT 23H的入口IP和CS PSP+12H~15H是INT 24H的入口IP和CS PSP+2CH处是环境块地址 汇编语言介绍 参数传递 早期的DOS支持格式化参数,例: COPY A:\file1.asm C:\file2.asm 将A:\file1.asm格式化参数1存于PSP+5CH处,格式为: 将B:\file2.asm格式化参数2存于PSP+6CH处 非格式化参数存于PSP+80H处 汇编语言格式 五. 汇编语言格式 1. 段的定义:由SEGMENT和ENDS定义段 seg_name SEGMENT [align_type] [combine_type] [‘class’] …… ;[ ]中的参数为可选参数 seg_name ENDS 例:data1 segment para public ‘data’ ;数据段定义 string db ‘Hello!’, 7, ‘$’ data1 ends 1)段名seg_name代表了所定义段的起始地址 2)align_type 表明该段起始位置在内存中的对齐类型 para 指定该段从一个小段(16字节)的边界开始; byte 指定该段从任一位置开始; word 指定该段从一个字边界开始 page 指定该段从一个页(256字节)的边界开始 汇编语言格式 3) combine_type 指出不同程序模块中具有相同段名的分段的连接类型 public 表示该段在连接时,将与有相同名字的其他分段连接在一起,且仅有一个起始地址; common 表示该段连接时将与其他同名分段重叠,也只有一个起始地址,不同分段会产生覆盖; stack 表示该段是堆栈段,连接时不同模块中的堆栈段连接在一起 4) ‘class’ 类别,连接时用于组成段组名 当连接两个源模块时,具有相同‘class’名的两个段在存储器中的位置是紧靠在一起的,但两个段并不会合并成一个段。 汇编语言格式 例1 combine_type 连接类型举例,两个模块定义如下 ;source module1 ;source module2 data_seg segment common data_seg segment common … … … … data_seg ends data_seg ends ss_seg segment stack ss_seg segment stack dw 20

文档评论(0)

xiaoyi2013 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档