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

[工学]微型计算机原理与汇编语言 第5章 汇编语言程序设计.ppt

[工学]微型计算机原理与汇编语言 第5章 汇编语言程序设计.ppt

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

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 宏扩展后,原来宏体中的指令前面都加上了符号“+”,以示区别。 宏取消 格式:PURGE 宏指令名[,……] 可同时取消多个宏指令 宏指令名与指令或伪指令助记符相同时,宏指令优先级高,同名指令或伪指令无效,因此要用PURGE取消已定义的宏指令,恢复指令、伪指令的原始含义。 如有宏定义: ADD MACRO OPR1,OPR2,RESULT …… …… ENDM 则宏调用时:ADD XX,YY,ZZ …… PURGE ADD …… ADD AX,BX 宏操作符的用法: 如用一条宏指令实现算术和逻辑的左、右移位,定义如下: SHIFT MACRO A,B,C MOV CL,C SA B, CL ENDM 宏调用:SHIFT AL,AX,4 …… SHIFT HR,DX,4 …… MOV CL, 4 SAL AX,CL MOV CL, 4 SHR AX,CL 宏指令与子程序的区别 在宏指令和子程序的区别,主要是空间和时间的差异。 ⑴ 子程序由CALL指令调用,由RET指令返回,所以汇编后子程序的机器码只占有一个程序段,不管调用多少次均如此,较为节约内存。宏指令在每次宏调用处宏展开时,宏体都要占一个程序段,调用次数愈多,占用内存愈多。因此从内存空间开销来说,子程序优于宏指令。 ⑵ 从程序的执行时间来分析,每调用一次子程序都要保护和恢复返回地址(断点)及寄存器内容(现场)等,要消耗较多的时间。宏指令调用时不需要这个过程,执行时间较短。因此,从执行时间来分析,宏指令又优于子程序。 综上所述,当某一需多次访问的程序段较长,访问次数又不是太多时,选用子程序结构较好。当某一需多次访问的程序段较短,访问次数又很频繁时,选用宏指令结构显然要更好些。 (2) ASSUME伪指令 段定义后,还必须明确段和段寄存器的关系,这可由ASSUME语句来实现。 格式: ASSUME SEG:段名[, SEG:段名…] 其中段寄存器必须是CS、DS、ES或SS中的一个,而段名则是由SEGMENT及ENDS定义的段名。需指出的一点,ASSUME伪指令只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值,所以还要用MOV指令为DS,ES,SS赋初值,而CS内容不需要用户装入。 (3)ORG伪指令 伪指令ORG规定了目标程序存放单元的偏移地址,其格式为: ORG 表达式 表达式的值即为16位偏移地址,表示从此地址开始连续存放程序。 例:ORG 2000H;该伪指令使得(IP)=2000H,目标程序从2000H单元开始存放。 4 过程定义伪指令 过程的含义和子程序是一样的,一个过程可以被其它程序所调用,这个过程的最后一条指令,一般是返回指令。 过程定义伪指令的格式为: 过程名 PROC [NEAR] 或 过程名 PROC FAR ┇ RET 过程名 ENDP 过程定义的属性有两种,标有NEAR(或不标,默认为NEAR)表示在段内被调用,标有FAR属性可以被其它段调用。这两种调用的返回指令都是RET,但在汇编时产生的代码不同。 5 源程序结束伪指令END 汇编程序对源程序进行汇编的过程中,如遇到END,得知源程序到此结束。 格式: END 表达式 表达式通常就是程序第一条指令的标号。 例:汇编语言程序的典型结构 Stack Segment DW 200 DUP (0) Stack EndS Data Segment String DB Hello!$ Data EndS

文档评论(0)

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

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

1亿VIP精品文档

相关文档