[微机原理][课件][第07讲][程序设计方法][2].ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[微机原理][课件][第07讲][程序设计方法][2].ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 课件 第07讲 程序设计方法 微机 原理 07 程序设计 方法
- 资源描述:
-
1、四、子程序结构四、子程序结构 将反复进行的操作编成一个子程序,这样,只需编写一将反复进行的操作编成一个子程序,这样,只需编写一次,测试一次便可以多次重复使用。从而提高开发的效次,测试一次便可以多次重复使用。从而提高开发的效率。率。 实现模块化的重要手段。使程序便于开发、测试和维护。实现模块化的重要手段。使程序便于开发、测试和维护。主程序主程序CALL SUB1子程序子程序SUB1 PROC断点地址断点地址转向子程序转向子程序RET返回主程序返回主程序子程序的设计方法子程序的设计方法1.功能分析与说明功能分析与说明*子程序的名称,功能及性能子程序的名称,功能及性能*子程序中用到的寄存器和存储单元
2、子程序中用到的寄存器和存储单元*子程序的入口参数,出口参数子程序的入口参数,出口参数*子程序中调用其它子程序的名称子程序中调用其它子程序的名称主控主控数据处理数据处理输入输入输出输出;名称:;名称:BCD2BIN;功能:一个字节的;功能:一个字节的BCD码转换成码转换成二进制数二进制数;所用寄存器:;所用寄存器:CX;入口参数:;入口参数:AL中存两位中存两位BCD数数;出口参数:;出口参数:AL存二进制数存二进制数;调用其它子程序:无;调用其它子程序:无BCD2BIN PROC NEAR(FAR) PUSH CX MOV CH,AL AND CH,0FH MOV CL,4 SHR AL,CL
3、 ;/16 MOV CL,10 MUL CL ;*10 ADD AL,CH ;+低位低位 POP CX RETBCD2BIN ENDP例例5-7 一个子程序一个子程序2.参数传递技术参数传递技术入口参数与出口参数入口参数与出口参数参数传递方法参数传递方法1)利用寄存器传递参数利用寄存器传递参数2)利用存储器传递参数利用存储器传递参数3)利用堆栈传递参数利用堆栈传递参数1) 利用寄存器传递参数利用寄存器传递参数上例上例5-7DATA SEGMENT ARY1 DW 100 DUP(?)(?) SUM1 DW ? ARY2 DW 100 DUP(?)(?) SUM2 DW ?DATA ENDSST
4、ACK SEGMENT STACK SA DW 50 DUP(?)(?) TOP EQU LENGTH SASTACK ENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACKMAIN PROC FAR例例5-8. 5-8. 数据段定义两个数组,编程实现数组段分别求和数据段定义两个数组,编程实现数组段分别求和(不计溢出)(不计溢出)。P182183P182183START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP TOP EQU
5、SIZE SA TOP LABEL WORD2) 利用存储器传递参数利用存储器传递参数 数据放在数据段中数据放在数据段中 LEA SI,ARY1;数组;数组1 1地址地址SISI MOV CX,LENGTH ARY1 CALL SUM;数组;数组1 1求和求和 LEA SI,ARY2;数组;数组2 2地址地址SISI MOV CX,LENGTH ARY2 CALL SUM ;数组;数组2 2求和求和 RETMAIN ENDPSUM PROC NEAR XOR AX,AX;AXAX清清0 0L1: ADD AX,WORD PTRSI INC SI INC SI LOOP L1 MOV WORD
6、PTR SI,AX RETSUM ENDPCODE ENDS END START2) 利用存储器传递参数利用存储器传递参数 数据放在数据段中数据放在数据段中 数据放在代码段中数据放在代码段中 获取参数的方法:获取参数的方法: 获得返回地址获得返回地址 根据返回地址实现参数传递根据返回地址实现参数传递 修改返回地址修改返回地址IPHIPLSPSP-1SP-2BPLBPHCALL SUBRDW BUFLDW BUFADW BUFBMOV AX, DXSUBR PROC PUSH BP MOV BP,SPMOV BX, BP+2 MOV CX, CS: BXMOV SI, CS:BX+2 MOV D
7、I, CS:BX+4 ADD BX,6 MOV BP+2,BX POP BP RETSUBRENDPMOV BX, SP+23)利用堆栈传递参数利用堆栈传递参数DATA SEGMENTBUFFER1 DW BUFA BUFFER2 DW BUFBBUFL DW NDATA ENDS主程序:主程序:LEA BX,BUFFER1PUSH BX PUSH BX+2PUSH BX+4CALL SUBRMOV AX, BXSP-2SP-1SPIPHBUFAHBUFALNLBUFBLNHBUFBHIPLSP-7SP-5SP-6SP-8SP-4SP-3BPLBPHSP-9SP-A子程序:子程序:SUBR:
展开阅读全文