微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt

微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt

ID:50454977

大小:462.50 KB

页数:69页

时间:2020-03-09

微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt_第1页
微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt_第2页
微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt_第3页
微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt_第4页
微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt_第5页
资源描述:

《微型计算机原理与汇编语言程序设计 曲凤娟 第9章 子程序.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章子程序设计本章内容提示本章讲述子程序的设计,介绍了中断调用程序设计。其中,详细阐述子程序的定义、子程序设计的基本过程和设计方法以及中断的相关知识。9.1子程序基本概念9.2子程序设计9.3子程序的嵌套与递归9.4中断调用程序9.1子程序结构的基本概念9.1.1子程序定义伪指令9.1.2调用与返回指令返回本章首页9.1.1子程序的定义1.子程序:功能独立、能反复调用的程序段或语句序列。在汇编语言中,子程序又称过程。2.主调程序:主程序,调用子程序的程序。子程序定义伪指令在汇编语言中,子程序要用过程定义伪指令进行定义,定义一般格式如下:Procedure

2、nameprocAttribute∶∶(子程序体)∶∶ProcedurenameendpProcedurename为子程序名,用以标识不同的子程序,是符合语法的标识符,它是子程序入口的符号地址;属性(Attribute)是指类型属性,有两种选择:NEAR或FAR,缺省时为NEAR。若调用程序和子程序在同一个代码段,子程序属性使用NEAR,若调用程序和子程序不在同一个代码段,则选择FAR。9.1.2子程序调用和返回指令CALLlabelRET回到CALL后的指令处——返回地址子程序CALL指令分成4种类型(类似JMP)CALLLABEL;段内调用、直接寻址C

3、ALLR16/M16;段内调用、间接寻址CALLFARPTRLABEL;段间调用、直接寻址CALLFARPTRMEM;段间调用、间接寻址CALL指令需保存返回地址:段内调用——偏移地址(IP)入栈SP←(SP)-2,SS:[SP]←(IP)段间调用——偏移地址(IP)和段地址(CS)入栈SP←(SP)-2,SS:[SP]←(IP)SP←(SP)-2,SS:[SP]←(CS)9.2子程序设计包括以下几个部分:(1)子程序说明(2)保护现场和恢复现场(3)子程序体(4)子程序返回例如例如例:若子程序PROG中改变了寄存器AX,BX,CX,DX的值,则可采用如下

4、方法保护和恢复现场。PROGPROCPUSHAXPUSHBXPUSHCX;保护现场PUSHDX┆┆POPDXPOPCXPOPBX;恢复现场POPAXRET;返回断点处PROCENDP9.2.3子程序的定义和参数传递1.子程序的定义过程名PROC[NEAR/FAR]┆过程名ENDP段属性、偏移地址属性、类型属性例如2.主程序对子程序的调用(1)子程序调用指令CALL①段内直接调用格式:CALLOPR执行操作:SP(SP)-2(SP)+1,(SP)(IP)IP(IP)+16位偏移量子程序名②段内间接调用格式:CALLOPR执行操作:SP(SP)-2(S

5、P)+1,(SP)(IP)IP(EA)存储单元或寄存器③段间直接调用格式:CALLOPR执行操作:SP(SP)-2(SP)+1,(SP)(CS)SP(SP)-2(SP)+1,(SP)(IP)IP偏移地址,CS段地址子程序名④段间间接调用格式:CALLDWORDPTROPR执行操作:SP(SP)-2(SP)+1,(SP)(CS)SP(SP)-2(SP)+1,(SP)(IP)IP(EA),CS(EA+2)存储单元(2)子程序返回指令格式:①RET②RETN;(N为偶数)3.主程序与子程序参数传递方式(1)寄存器法(2)约定单元法(3

6、)堆栈法返回本节9.2.4子程序应用举例例:将一个二进制数按位转换成ASCII码字符串,送到指定的存储单元并显示。如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,子程序应具有较好通用性,而且必须能实现对8位和16位二进制数的转换。DATASEGMENTNUM8EQU93HNUM16EQU0ABCDHASCBUFDB20DUP(0)DATAENDSSSEGSEGMENTSTACKDB100DUP(0)SSEGENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKSTART:MOVAX

7、,DATAMOVDS,AXMOVDX,0MOVDL,NUM8;二进制数送DXMOVCX,8;置位数8LEADI,ASCBUF;字符串首址→DICALLBTASC;调用BTASCMOV[DI],BYTEPTR0DHMOV[DI+1],BYTEPTR0AHMOV[DI+2],BYTEPTR‘$’LEADX,ASCBUFMOVAH,9INT21HMOVDX,NUM16MOVCX,16;置位数16LEADI,ASCBUFCALLBTASCMOV[DI],BYTEPTR0DHMOV[DI+1],BYTEPTR0AHMOV[DI+2],BYTEPTR‘$’;显示串LE

8、ADX,ASCBUFMOVAH,9INT21H;入口参数:DX存放

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

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

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