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

课次14_第5章_ASM_Step课件.ppt

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

第 5 章 作业;5.4 宏指令语句;例 4.11 (Page 125); 宏调用的格式为: 宏指令名 [实际参数] 这就是说,只要在源程序中写上已定义过的宏指令名就算是调用该宏指令了。 具有宏调用的源程序被汇编时,每个宏调用将被MASM进行宏展开。宏展开实际上是用宏定义式设计的宏体去代替相应的宏指令,并用实际参数一一取代形参。;使用 “宏” 的过程共有三步:① 进行宏定义; ② 进行宏调用; ③ 汇编时由 MASM 进行宏展开。 [例] 若源程序中多处需要将 AL 和 CL 寄存器中的两位压缩型的 BCD 数相加,并将和送回 BL 寄存器,则可象下述这样定义宏指令,然后在需要的地方进行调用。 DECADD MACRO ;宏定义 ADD AL,CL DAA ENDM ;宏定义结束 显而易见,这是一个无形式参数的宏定义。;如果对分别存放在任意8位寄存器或存储单元中的两个压缩型的BCD数进行加法运算,则可将上例宏定义改写为: DECADD1 MACRO OPR1,OPR2 ;带有形参宏定义 MOV AL , OPR1 ADD AL , OPR2 DAA MOV OPR1 , AL ENDM ;宏定义结束 这是一个带有两个形式参数的宏定义。宏指令为DECADD1。例如有以下宏调用: DECADD1 DL , BUFFER DECADD1 AREA1, AREA2;则汇编时进行宏展开,得到以下指令: DECADD1 DL, BUFFER + MOV AL, DL + ADD AL, BUFFER + DAA + MOV DL, AL DECADD1 AREA1, AREA2 + MOV AL, AREA1 + ADD AL, AREA2 + DAA + MOV AREA1, AL 宏扩展后,宏体中的指令前都加上了符号“+”,以示区别。;宏指令与子程序的区别 宏指令和子程序都是由设计者根据需要按一定格式进行定义, 并在程序中可多次调用的独立功能程序段。 宏指令(MACROENDM)和子程序(PROC ENDP) 定义方法不同。 调用方式、汇编程序处理方式不同。 ⑴ 子程序由CALL指令调用,由RET指令返回,汇编后子程序的机器码只有一个片段,节约内存。宏指令在每次宏调用处宏展开时,宏体都形成一个片段,占用内存多。 ⑵ 子程序调用时,都要保护和恢复返回地址(断点)及寄存器内容(现场)等,宏指令调用时不需要。;5.5 汇编语言程序上机过程;5.5.1 用编辑程序建立汇编语言源程序文件(.ASM);5.5.2 将.ASM文件汇编成 .OBJ(目标程序文件);MASM 宏汇编的提示信息及回答;5.5.3 生成可执行程序文件(.EXE 文件);LINK 程序的提示信息及回答;5.5.5 汇编语言和DOS操作系统的接口; 可执行程序和 DOS 之间的接口通过 INT 20H 软 中断指令来实现。 在 PSP 区的前几个单元中即存放了INT 20H 指 令操作码。用户在组织程序时,使程序运行 完后,能去执行存放于PSP区开始位置的 INT 20H 指令,方可返回DOS 管理的状态。 ⑵ 把要执行的程序从磁盘上装入到内存中并为其 定位。在程序定位时,内存分配见下图。;中断向量表;程序段前缀区(PSP)结构说明:;⑶ 设置段寄存器的值;(DOS系统初始化执行现场) ①使DS和ES指向PSP的段基址,即INT 20H的存放地址; ②将CS设置为PSP后面代码段的段基址,IP设置为指向代码段中第一条要执行的指令位置; ③把SS设置为指向堆栈段的段基址,让SP指向堆栈段的栈底。 ⑷ 开始执行程序。;DOS 环境下执行程序的过程:;☆ 用户程序执行完后返回 DOS 的两种方法: ① 标准方法 (INT 20H) A、将用户程序的主程序定义成一个FAR过程,用户在汇 编程序中用 RET 指令返回 DOS。 B、在代码段的主程序的开始部分用如下三条指令将PSP中 INT 20H 指令的段基址及偏移地址压入堆栈: PUSH DS MOV AX, 0 PUSH AX 这样,当程序执行到指令 RET 时,INT 20H 指令得以 执行,保证了控制返回 DOS 状态。;② 非标准方法 不将用户的主程序定义为过程段,只在需要返回 DOS 处增加下两条指令:(完成返回 DOS 的操作) MOV AH , 4CH INT 21H 则程序执行

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档