资源描述:
《【12】宏汇编语言程序设计[4-3]》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、微机原理与接口技术微机原理与接口技术第十一讲第十一讲§§44--55宏汇编语言程序设计宏汇编语言程序设计内容提要内内容容提提要要一、汇编语言程序格式一、汇编语言程序格式二、二、MASMMASM中的表达式中的表达式三、伪指令语句三、伪指令语句四、四、DOSDOS系统功能调用和系统功能调用和BIOSBIOS中断调用中断调用五、程序设计方法五、程序设计方法2§§44--55程序设计方法和上机调试程序设计方法和上机调试内内容容提提要要程序设计方法程序设计方法ò顺序结构ò分支结构ò循环结构ò子程序结构汇编语言上机调试过程汇编语言上机调试过程宏汇编和条件汇编宏汇编和条件汇编3§§44--55程序设计方法
2、程序设计方法【【子程序结构子程序结构】】四、子程序结构1.子程序使用子程序将多次使用的程序段写成一个相对独立的程序段。子程序结构的定义使用过程定义语句PROC…ENDP属性调用程序和过程在同一代码段中,则用NEAR属性调用程序和过程不在同一代码段中,使用FAR属性主过程定义为FAR属性,看作DOS调用的一个子过程子程序说明⑴功能描述:名称,功能及性能⑵寄存器和存储单元⑶入口参数,出口参数⑷调用其它子程序的名称4§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】例:有一个子程序说明如下:;名称:BCD2BIN;功能:将一个字节的BCD码转换成二进制数;所用寄存器:CX;入口参
3、数:AL存放两位BCD码;出口参数:AL存放二进制数;调其它子程序:无子程序形式如下;5§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】BCD2BINPROCNEAR(或FAR)PUSHCX;保存CXMOVCH,ALANDCH,0FH;存低8位→CHMOVCL,4SHRAL,CL;高8位右移4位后乘10MOVCL,10MULCLADDAL,CH;高8位加低8位POPCX;恢复CXRETBCD2BINENDP6§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】注意:⑴保护调用程序的断点:由CALL指令本身完成。要注意堆栈的使用,防止弹出地址值错误。⑵保护某
4、些寄存器内容:在子程序开头,用一组PUSH指令,保护的寄存器原来(先进后出)。⑶主程序与子程序相互之间参数的传递:参数传递的方法有3种:①用寄存器传递参数:参数较少,速度较快。②用存储器传递参数:参数较多,需事先在存储器中建立一个参数表。③用堆栈传递参数:参数较多,多用在子程序嵌套与递归调用中。7§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】例4-75:数据段定义两个数组,编程序实现数组段分别求和(不计溢出)。解:本例通过存储器来传递参数。相应程序如下:DATASEGMENTARY1DW100DUP(?);定义数组1SUM1DW?ARY2DW100DUP(?);定义数组
5、2SUM2DW?DATAENDSSTACKSEGMENTSTACKSADW50DUP(?)TOPEQULENGTHSASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK8§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】MAINPROCFARSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOPLEASI,ARY1;数组1首地址,入口参数MOVCX,LENGTHARY1;数组1长度,入口参数CALLSUM;调用求和子程序LEASI,ARY2;数组2首地址,入口参数MOVCX,
6、LENGTHARY2;数组2长度,入口参数CALLSUM;调用求和子程序MOVAH,4CHINT21HRETMAINENDP9§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】SUMPROCNEAR;子程序XORAX,AX;AX清0LP1:ADDAX,WORDPTR[SI];加数组元素INCSIINCSILOOPLP1MOVWORDPTR[SI],AX;数组和送入SUMRETSUMENDP;子程序返回CODEEDNSENDSTART10§§44--55程序设计方法程序设计方法【【子程序结构子程序结构】】例4-76:通过堆栈传递参数,实现十进制数数组求和。要求主程序和过程不在
7、同一个代码段中,要进行段间调用。相应程序如下:MDATASEGMENTARY1DW20DUP(?);定义数组1SUM1DW?ARY2DW20DUP(?);定义数组2SUM2DW?MDATAENDSMSTACKSEGMENTSTACKSBDW100DUP(?)TOPLABELWORDMSTACKENDSMCODESEGMENT;主程序段ASSUMECS:MCODE,DS:MDATA,SS:MSTACKMAINP