《微机原理与应用》ppt课件

《微机原理与应用》ppt课件

ID:40004571

大小:355.50 KB

页数:65页

时间:2019-07-17

《微机原理与应用》ppt课件_第1页
《微机原理与应用》ppt课件_第2页
《微机原理与应用》ppt课件_第3页
《微机原理与应用》ppt课件_第4页
《微机原理与应用》ppt课件_第5页
资源描述:

《《微机原理与应用》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、子程序调用指令CALLCALL指令用在主程序中,实现子程序的调用分成段内调用(近调用)和段间调用(远调用)目标地址采用相对寻址、直接寻址或间接寻址入栈返回地址:将CALL下一条指令的地址压入堆栈16位段段内:16位偏移地址,段间:再加16位段地址32位段段内:32位偏移地址,段间:再将16位段选择器零位扩展为32位保存到堆栈CALLlabel;调用标号指定的子程序CALLreg16/reg32;调用寄存器指定地址的子程序CALLmem16/mem32;调用存储单元指定地址的子程序子程序返回指令RETRET指令用在子程序结束,实现返回主程序RET

2、;无参数返回:出栈返回地址RETi16;有参数返回:出栈返回地址,ESP←ESP+i16过程定义过程定义伪指令获得子程序信息过程名PROC……;过程体过程名ENDP;过程名为符合语法的标识符PROC后面可加参数:NEAR或FARCSEGSEGMENTASSUMECS:CSEGSTART:….CALLSUBT….MOVAH,4CHINT21HSUBTPROC(NEAR)….RETSUBTENDPCSEGENDSENDSTART子程序设计利用过程定义,获得子程序名和调用属性RET指令返回主程序,CALL指令调用子程序压入和弹出操作要成对使用,保持堆

3、栈平衡开始保护寄存器,返回前相应恢复安排在代码段的主程序之外子程序允许嵌套和递归可共用一个数据段,也可具有独立数据段最好有完整的注释难点是参数传递子程序的参数传递主程序与子程序间通过参数传递建立联系入口参数(输入参数):主程序→子程序出口参数(输出参数):子程序→主程序传递参数的多少反映程序模块间的耦合程度参数的具体内容数据本身(传递数值)数据的存储地址(传递地址,传递引用)参数传递方法:寄存器、变量或堆栈寄存器传递参数(例5-16)最简单和常用的参数传递方法把参数存于约定的寄存器少量数据直接传递数值大量数据只能传递地址带有出口参数的寄存器不保

4、护带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致[例题5-16]字符串显示程序-1;数据段msgdb'Well,Imadeit!',0;代码段(主程序)movsi,offsetmsg;主程序提供显示字符串calldpstri;调用子程序movah,4chint21h子程序名DPSTRI入口参数DS:SI=字符串首地址功能说明显示字符串(以0结尾)寄存器地址参数传递[例题5-16]字符串显示程序-2;代码段(子程序)dpstriproc;子程序:显示字符串pushax;寄存器保护dps1:moval,[si];取显示字符cmpal

5、,0;是结尾,则显示结束jzdps2calldpchar;调用字符显示子程序incsijmpdps1dps2:popax;寄存器恢复retdpstriendp子程序名DPCHAR入口参数AL=ASCII码功能说明显示字符寄存器数值参数传递[例题5-16]字符串显示程序-3dpcharproc;子程序显示字符pushax;顺序入栈,保护寄存器pushdxmovah,2movdl,al;显示一个字符int21hpopdx;逆序出栈,恢复寄存器popaxretdpcharendp子程序名DPCHAR入口参数AL=ASCII码功能说明显示字符共享变量传

6、递参数子程序和主程序使用同一个变量名存取数据变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTREN声明共享变量传递参数,子程序的通用性较差特别适合在多个程序段间、尤其在不同的程序模块间传递数据[例题5-19]有符号十进制数输出程序-1算法如下:首先判断数据是零、正数或负数,是零显示“0”退出;是负数,显示“-”,求数据的绝对值;接着数据除以10,余数加30H转换为ASCII码压入堆栈;重复第3步,直到商为0结束;依次从堆栈弹出各位数字,进行显示[例题5-19]有符号十进制数输出程序-2movecx,countmovebx,0aga

7、in:moveax,array[ebx*4]movdtemp,eax;入口参数存放到共享变量calldispsid;调用子程序显示一个数据incebxcalldpcrlf;光标回车换行loopagain子程序名DISPSID入口参数DTEMP=32位二进制补码功能说明有符号十进制数显示[例题5-19]有符号十进制数输出程序-3dispsidproc;显示有符号十进制数子程序pusheax;入口参数:共享变量DTEMPpushebxpushedxmoveax,dtemp;取出显示数据testeax,eax;判断数据是零、正数或负数jnzdsid1

8、movdl,'0';是零,显示“0”后退出movah,2int21hjmpdsid5[例题5-19]有符号十进制数输出程序-4dsid1:jnsdsi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。