- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]汇编语言4-1
教学重点 第3章学习了8086硬指令,第4章介绍MASM基本的伪指令。第4章重点掌握: 程序的格式、开发方法 参数的表达、变量的定义 变量和标号的属性 4.1 汇编语言程序的开发过程 开发过程1:源程序的编辑 源程序文件要以ASM为扩展名 源程序文件的形成(编辑)可以通过任何一个文本编辑器实现: DOS中的全屏幕文本编辑器EDIT 其他程序开发工具中的编辑环境 MASM程序员工作平台PWB中的编辑环境 EDIT lt301a.asm 开发过程2:源程序的汇编 汇编是将源程序翻译成由机器代码组成的目标模块文件的过程 MASM 5.x提供的汇编程序是masm.EXE: masm lt301a.asm 如果源程序中没有语法错误,MASM将自动生成一个目标模块文件(lt301a.obj);否则MASM将给出相应的错误信息 这时应根据错误信息,重新编辑修改源程序后,再进行汇编 开发过程3:目标模块的连接 连接程序能把一个或多个目标文件和库文件合成一个可执行程序(.EXE、.COM文件): LINK lt301a.obj 如果没有严重错误,LINK将生成一个可执行文件(lt301a.exe);否则将提示相应的错误信息 这时需要根据错误信息重新修改源程序后再汇编、链接,直到生成可执行文件 开发过程4:可执行程序的调试 经汇编、连接生成的可执行程序在操作系统下只要输入文件名就可以运行: lt301a 操作系统装载该文件进入主存,并开始运行 如果出现运行错误,可以从源程序开始排错,也可以利用调试程序帮助发现错误 采用DEBUG.EXE调试程序: DEBUG lt301a.exe 4.2 伪操作(伪指令) 硬指令——使CPU产生动作、并在程序执行时才处理的语句,就是第3章学习的处理器指令 伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 指定段寄存器伪指令 ASSUME 段寄存器:段名 [,段寄存器名:段名, ...] 通知MASM用指定的段寄存器来寻址对应的逻辑段,即建立段寄存器与段的缺省关系 在明确了程序中各段与段寄存器之间的关系后,汇编程序会根据数据所在的逻辑段,在需要时自动插入段超越前缀。这是ASSUME伪指令的主要功能 data segment ; 定义数据段 … data ends ; extra segment ; 定义附加段 … extra ends ; code segment ; 定义代码段 assume cs:code, ds:data, es:extra 地址装入 ASSUME伪指令并不为段寄存器设定初值,连接程序LINK将正确设置CS : IP 由于数据段通常都需要,所以在样板源程序中,首先为DS赋值;如果使用附加段,还要赋值ES,如果使用堆栈段,还要赋值SS data segment ; 定义数据段 … data ends ; code segment ; 定义代码段 assume cs:code, ds:data start: mov ax, data mov ds, ax ; 段地址 ? 段寄存器 完整段定义伪指令之属性定义 段名 segment 定位 组合 段字 类别 ... ;语句序列 段名 ends 完整段定义由SEGMENT和ENDS这一对伪指令实现,SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束 段定义指令后的4个关键字用于确定段的各种属性,堆栈段要采用stack组合类型,代码段应具有‘code’类别,其他为可选属性参数 如果不指定,则采用默认参数;但如果指定,注意要按照上列次序 段定位(align)属性 指定逻辑段在主存储器中的边界,可为: BYTE 段开始为下一个可用的字节地址(xxxx xxxxb) WORD 段开始为下一个可用的偶数地址(xxxx xxx0b) DWORD 段开始为下一个可用的4倍数地址(xxxxxx00b) PARA 段开始为下一个可用的节地址(xxxx 0000b) PAGE 段开始为下一个可用的页地址(0000 0000b) 简化段定义伪指令的代码和数据段默认采用WORD定位,堆栈段默认采用PARA定位 完整段定义伪指令的默认定位属性是PARA,其低4位已经是0,所以默认情况下数据段的偏移地址从0开始 段组合(combine)属性 指定多个逻辑段之
您可能关注的文档
最近下载
- (PPT)考勤管理制度.ppt VIP
- 安顺西秀富民村镇银行招聘考试真题及答案2022.pdf VIP
- 2021年青岛市临床营养质控中心年终考核暨下半年工作检查.docx VIP
- 2025年压力容器考试题库3带答案.doc VIP
- 2024贵州安顺普定富民村镇银行招聘笔试备考题库及答案解析.docx VIP
- 昆明元朔建设有限公司高速收费岗位笔试题.docx VIP
- 2021年安徽高考政治试卷.pdf VIP
- 九年级化学演示实验通知单(全册)资料.doc VIP
- 提高基建档案规范化管理——[ 获奖QC 成果发布 ].pdf VIP
- 2025贵州望谟富民村镇银行股份有限公司招聘考试参考题库附答案解析.docx VIP
文档评论(0)