微机原理与接口第4章汇编语言及其程序设计.ppt

微机原理与接口第4章汇编语言及其程序设计.ppt

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

* 4.4.4 循环程序设计 循环程序结构由循环初始化、循环体和循环控制三部分组成。循环程序结构有两种:先执行后判断和先判断后执行。 设置循环初值 设置循环初值 满足循环控制条件吗?吗? 循环体 循环体 满足循环控制条件吗?吗? 是 是 否 否 图4-10 循环控制程序结构 * ① 循环初始化,用来设置循环初始值,如设置循环计数器初值、设置地址指针首地址和初始数据等。 ② 循环体,是循环的主体,包括循环要完成的具体操作和修改循环参数,如地址指针修改、计数值的修改。 ③ 循环控制,测试循环条件,判断是否继续循环,使循环能在有限的次数后结束。 在循环次数确定的情况下,可用循环次数作为控制条件,这时常用LOOP指令实现控制循环。循环控制的方法有很多,如标记控制循环,开关量控制循环,逻辑尺控制循环等,在不同的场合使用不同的方法。 * DATA SEGMENT BUFF DB 100 DUP(?) ;定义100个数据 MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 99 ;设置循环次数 LEA SI, BUFF ;数据首地址送SI MOV AL, [SI] ;取第一个数 INC SI CON: CMP AL, [SI] ;与第二个数比较大小 JNC NEXT ;若AL≥[SI],则跳转NEXT处 MOV AL, [SI] ;AL [SI], 替换AL NEXT: INC SI ;修改地址指针 LOOP CON ;测试循环条件CX=0? MOV MAX, AL MOV AH, 4CH INT 21H CODE ENDS END START 【例4-10】在数据段中从BUFF单元开始存放100个字节类型的无符号数,编写程序找出其中最大的数并存入MAX单元中。 * 4.4.5 过程设计 过程又称为子程序。子程序使程序结构模块化,程序更加清晰、易读易懂。如果在一个程序的多个地方或多个程序中都用到相同功能的程序段,这时常采用子程序设计方法。 (1)过程定义 过程定义就是子程序定义,由伪指令完成。 例如计算S=12+22+…+N2的子程序: * GO PROC FAR ;过程定义 MOV DX, 0 MOV BL, 1 ;BL表示自然数 MOV AL, BL CC: MUL BL ;AL*BL结果存在AX中 ADD DX, AX ;当 N≤50时,不会产生进位 INC BL MOV AL, BL LOOP CC ;CX为计数器 RET ;过程返回 GO ENDP ;过程定义结束 这个子程序可以称为平方和子程序,CX是入口参数,调用之前应该预置CX=N。DX为出口参数,N个数的平方和存在DX中。 * (2)过程调用和返回 过程调用通过CALL指令实现,调用时注意子程序的属性,NEAR属性的子程序必须和调用程序在同一个段;FAR属性的子程序可以随意。 CALL指令执行时将当前IP或CS和IP压入栈堆中,然后将子程序的首地址赋给IP或CS和IP,CPU开始执行子程序。 RET指令执行时弹出栈中的数据,修改IP或CS和IP的内容,从而实现返回调用程序的目的。为保证正确返回调用程序,应注意子

文档评论(0)

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

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

1亿VIP精品文档

相关文档