位和位微处理办法器指令系统和汇编语言编程.ppt

位和位微处理办法器指令系统和汇编语言编程.ppt

  1. 1、本文档共198页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.2.6 子程序设计 四、主程序和子程序间的参数传递 主程序在调用子程序之前,必须把需要子程序处理的原始数据传递给子程序,即为子程序准备入口参数。子程序对入口参数进行一系列处理之后得到处理结果,该结果必须送给调用它的主程序,即提供出口参数以便主程序使用。这种主程序为子程序准备入口参数、子程序为主程序提供处理结果的过程称为主程序和子程序间的参数传递。常用的参数传递方法有寄存器法、约定单元法和堆栈法三种,本节主要讲解前两种方法 1.寄存器法 寄存器法就是子程序的入口参数和出口参数都在约定的寄存器中。此法的优点是参数传递快,编程也较方便,且节省内存单元。但由于寄存器个数有限,而且在处理过程中要经常使用寄存器,如果要传递的参数很多,将导致无空闲寄存器供编写程序使用。所以寄存器法只适用于要传递参数较少的情况 4.2.6 子程序设计 例【4-34】寄存器法参数传递举例,编写子程序求两个数的最大公约数 【分析】 X和Y中放着两个整数,在主程序中分别用寄存器AX和BX将这两个整数传递给计算这两个整数最大公约数的子程序GCDP,子程序GCDP将计算结果用寄存器AX传回主程序,存放在GCD中。这道题的核心是求两个整数最大公约数的子程序GCDP,它用的是辗转相减法。当两个整数不相等时用大数减去小数,直到两个数相等为止。假定X、Y的值分别为32、24,处理过程见表4-24 4.2.6 子程序设计 2.约定单元法 约定单元法是把入口参数和出口参数都在约定的存储单元中。此法的优点是每个子程序要处理的数据或送出的结果都有独立的存储单元,编写程序时不易出错。缺点是要占用一定数量的存储单元 例【4-35】用约定单元法重写例【4-34】,求两个整数最大公约数和最小公倍数 【分析】 数据段的变量X、Y、GCD、LCM是约定的存储单元,这些存储单元主、子程序都可使用。参数存放在X、Y中可由GCDP子程序使用,子程序处理结束后将结果存入GCD,主程序计算最小公倍数送LCM,计算X、Y最小公倍数的方法是:LCM=(X*Y)/GCD 4.2.6 子程序设计 子程序也可以不带参数,只是完成某种功能。下面的程序是在屏幕上输出一个空行。 NEWLINE PROC PUSH AX PUSH DX MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H POP DX POP AX RET NEWLINE ENDP 4.2.7 常用的DOS和BIOS调用 我们在编制汇编源程序时,常常希望能从键盘输入字符或在显示器上显示出程序运行的结果。但由于计算机机种的不同、外设型号的差异,控制它们工作的程序也会有差异。如果每次都需要我们根据自己的工作环境来设计控制这些外设工作的程序,则必须要先搞清楚与之有关的设备、电路、接口等各方面的问题,既复杂,效率又低,也没有通用性 正确的做法是:把这些控制过程编写成程序,作为操作系统的一部分事先放在系统盘上,用户在需要时只要按规定的格式设置好参数,直接调用即可。这种方式叫做利用操作系统的标准功能调用进行输入/输出。这样既便于操作系统对外设进行统一管理,也便于用户在编制程序时,不用考虑输入/输出的控制细节,提高了工作效率,使编制出来的程序更具有通用性 4.2.7 常用的DOS和BIOS调用 DOS提供了系统功能调用,编号从0~57H,主要分为设备管理、文件管理、目录管理、及其它功能调用四大类 在微机的只读存储器ROM中的程序,一部分是BASIC语言解释程序,另一部分是基本输入/输出系统BIOS。BIOS的主要功能是驱动系统中所配置的常用外设,如显示器、键盘、打印机、磁盘驱动器以及异步通信接口等,使程序员不必过多地关心这些设备具体的物理特性和逻辑结构细节(如外设寄存器地址、命令及状态格式等),从而能方便地控制各种输入/输出操作。与DOS的设备管理系统功能调用相比,使用BIOS能完成更复杂的输入/输出操作 表4-25中列出了最常用的DOS和BIOS调用,更详细的内容要查阅有关的资料 4.3.1 80286相对8086增加的指令 1. 立即数入栈指令 格式:PUSH nnnn, 功能:将字立即数nnnn压入堆栈 2.将所有寄存器的内容压入堆栈指令 格式:PUSHA, 功能:将8个16位通用寄存器的内容按AX、CX、DX、BX、SP、BP、SI、DI的顺序入栈。 4.3 32位微处理器的寻址方式与指令系统 格式:POPA, 功能:将从栈顶开始的8个存储字依次弹出堆栈并按DI、SI、BP

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档