收藏 分销(赏)

十三次课子程序说明文件微机原理.ppt

上传人:精*** 文档编号:1679612 上传时间:2024-05-07 格式:PPT 页数:24 大小:1.67MB
下载 相关 举报
十三次课子程序说明文件微机原理.ppt_第1页
第1页 / 共24页
十三次课子程序说明文件微机原理.ppt_第2页
第2页 / 共24页
十三次课子程序说明文件微机原理.ppt_第3页
第3页 / 共24页
十三次课子程序说明文件微机原理.ppt_第4页
第4页 / 共24页
十三次课子程序说明文件微机原理.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、4.3 汇编语言程序言程序设计的基本方法的基本方法一、程序一、程序设计步步骤二、源程序的二、源程序的汇编、连接与接与调试三、三、IBM PC 汇编语言程序源程序的完整言程序源程序的完整结构及构及伪指令指令四、四、顺序序结构构五、分支五、分支结构构六、循六、循环结构构七、子程序七、子程序八、八、DOS系系统功能功能调用用九、字符串九、字符串处理理十、宏指令十、宏指令1.七、七、子程序子程序1 1、过程定程定义2.六、六、子程序子程序概念:概念:子程序子程序为功能确定、且独立的程序段。功能确定、且独立的程序段。优点:点:1.1.可以将任何一段独立的程序可以将任何一段独立的程序归整整为一个子程序,一

2、个子程序,当需要当需要该段程序段程序时,只需,只需调用子程序即可,用子程序即可,调用后会自用后会自动返回到返回到调用指令的下一条指令。因用指令的下一条指令。因此采用子程序此采用子程序设计时,可以,可以简化程序化程序设计。2.2.从从调试程序的角度,由于原本在多程序的角度,由于原本在多处出出现的程的程序段,序段,缩减减为子程序子程序调用指令,使用指令,使调试程序更程序更加方便。加方便。3.缺点:缺点:采用子程序采用子程序设计后。由于后。由于调用子程序和从子程序用子程序和从子程序中返回需要中返回需要执行指令,并且行指令,并且为保保护某些寄存器的某些寄存器的内容,需要内容,需要进行行压入堆入堆栈和和

3、弹出堆出堆栈的操作,因的操作,因此会使程序此会使程序执行速度受到一定的影响。行速度受到一定的影响。六、六、子程序子程序4.实现:子程序子程序调用是通用是通过自自动修改(修改(IPIP)和)和/或(或(CSCS)的内容的内容实现的。的。为了确保子程序了确保子程序调用后能用后能够返回到返回到调用指令之后,用指令之后,CALLCALL指令会自指令会自动保存返回地址(保存返回地址(IPIP和和/或或CSCS),),而而RETRET指令会自指令会自动返回到返回到CALLCALL指令的下一条指令。指令的下一条指令。六、六、子程序子程序5.2、调用和返回指令用和返回指令CALLCALL指令:指令:段内段内调

4、用用段段间调用用段内直接段内直接调用用段内段内间接接调用用段段间直接直接调用用段段间间接接调用用六、六、子程序子程序6.(IP)(cs)7.段内段内调用用子子过程与原程与原调用程序在同一代用程序在同一代码段,在段,在调用之前会自用之前会自动把断点的把断点的偏移地址偏移地址压栈(调用指令的下一用指令的下一条指令的地址条指令的地址)断点断点入口入口地址地址CALL TIMERCALL WORD PTR SI六、六、子程序子程序8.段段间调用用子子过程与原程与原调用程序不在同一代用程序不在同一代码段,在段,在调用用之前会自之前会自动把断点的段基地址和偏移地址把断点的段基地址和偏移地址压栈。先将断点的

5、先将断点的CSCS压栈,再,再压入入IPIP。CALL FAR PTR TIMERCALL DWORD PTR SI六、六、子程序子程序9.返回指令返回指令格式:格式:RET RET RETF RETF近返回:从近返回:从栈顶弹出两个字出两个字节内容送内容送IPIP,SPSP内容加内容加2 2远返回:从返回:从栈顶弹出四个字出四个字节内容分内容分别 送送CSCS和和IPIP,SPSP内容加内容加4 4从堆从堆栈中中弹出断点地址,返回源程序。出断点地址,返回源程序。段内返回(近返回)段内返回(近返回)段段间返回(返回(远返回)返回)断点断点入口入口地址地址六、六、子程序子程序10.3 3、主程序

6、和子程序、主程序和子程序间的参数的参数传递入口参数:将主程序入口参数:将主程序给子程序提供的初始数据或子程序提供的初始数据或获得初始数据的信息称得初始数据的信息称为子程序的入口参数。子程序的入口参数。出口参数:子程序返回出口参数:子程序返回给主程序的主程序的结果称果称为子程子程序的出口参数。序的出口参数。参数参数传递可用以下可用以下3 3种方法完成种方法完成 :*利用寄存器利用寄存器*利用内存利用内存单元(元(变量)量)传递参数。参数。*利用堆利用堆栈六、六、子程序子程序11.4 4、子程序、子程序说明文件明文件六、六、子程序子程序12.5 5、过程的嵌套、程的嵌套、递归调用用过程的嵌套程的嵌

7、套六、六、子程序子程序递归调用用 当子程序嵌套时,若某子程序要调用的子程序就是其本身,则称为递归调用。13.例例1 1 子程序子程序设计,编写子程序写子程序实现统计一一个字(个字(AXAX)中)中“1 1”的个数。的个数。解:利用移位指令或循解:利用移位指令或循环移位指令,每次移位指令,每次对CFCF位位进行行检测:p当当CF=1CF=1时,则总个数加个数加1 1;p当当CF=0CF=0时,则总个数不个数不变。这种操作可以采用有条件种操作可以采用有条件转移指令来移指令来实现,也可采用方便的也可采用方便的ADCADC指令指令实现。子程序如下:。子程序如下:六、六、子程序子程序14.COUNTER

8、1 PROC NEARCOUNTER1 PROC NEAR PUSH AX PUSH AX MOV CX,16 MOV CX,16 XOR BL,BL XOR BL,BLCOU1:COU1:SHR AX,1 SHR AX,1 ADC BL,0 ADC BL,0 LOOP COU1 LOOP COU1 POP AX POP AX RET RETCOUNTER1 ENDP COUNTER1 ENDP 六、六、子程序子程序15.例例1 1 子程序子程序应用。利用上例用。利用上例设计的子程序,的子程序,统计字型字型变量量VAR1VAR1中中1 1的个数。的个数。解:在数据段中定解:在数据段中定义变量量

9、VAR1VAR1和和CounterVar1CounterVar1:VAR1VAR1DWDW1234H1234HCounterVar1 CounterVar1 DB?DB?则可在代可在代码段中段中编写程序:写程序:MOV AX,VAR1MOV AX,VAR1CALL COUNTER1CALL COUNTER1MOVMOV CounterVar1,BL CounterVar1,BL执行后,行后,结果果单元元CounterVar1CounterVar1的的值为5 5,说明明1234H1234H中包含有中包含有5 5个个“1 1”。六、六、子程序子程序16.例例2 2 编写程序,完成将一写程序,完成将

10、一组BCD BCD 数数转换成成16 16 位二位二进制数。制数。(BCD BCD 数数转换成成16 16 位二位二进制数用子程序制数用子程序实现)BCD BCD 数数转换成成16 16 位二位二进制数的算法步制数的算法步骤为:DX=0;DX=0;(用(用DX DX 存放存放结果)果)取要取要转换的一的一组BCD BCD 数中的高位数中的高位(AX)(AX)(DX)=(DX)*10+(AX);(DX)=(DX)*10+(AX);重复重复、两步,直到两步,直到BCD BCD 码的所有位都的所有位都转换完完为止,止,结果果在在DX DX 中。中。六、六、子程序子程序17.18.19.20.21.22.23.谢谢观看!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服