十三次课子程序说明文件微机原理_第1页
十三次课子程序说明文件微机原理_第2页
十三次课子程序说明文件微机原理_第3页
十三次课子程序说明文件微机原理_第4页
十三次课子程序说明文件微机原理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.3汇编语言程序设计的基本方法一、程序设计步骤二、源程序的汇编、连接与调试三、IBMPC汇编语言程序源程序的完整结构及伪指令四、顺序结构五、分支结构六、循环结构七、子程序八、DOS系统功能调用九、字符串处理十、宏指令1.七、子程序1、过程定义2.六、子程序概念:子程序为功能确定、且独立的程序段。优点:可以将任何一段独立的程序归整为一个子程序,当需要该段程序时,只需调用子程序即可,调用后会自动返回到调用指令的下一条指令。因此采用子程序设计时,可以简化程序设计。从调试程序的角度,由于原本在多处出现的程序段,缩减为子程序调用指令,使调试程序更加方便。3.缺点:采用子程序设计后。由于调用子程序和从子程序中返回需要执行指令,并且为保护某些寄存器的内容,需要进行压入堆栈和弹出堆栈的操作,因此会使程序执行速度受到一定的影响。

六、子程序4.实现:子程序调用是通过自动修改(IP)和/或(CS)的内容实现的。为了确保子程序调用后能够返回到调用指令之后,CALL指令会自动保存返回地址(IP和/或CS),而RET指令会自动返回到CALL指令的下一条指令。

六、子程序5.2、调用和返回指令CALL指令:段内调用段间调用段内直接调用段内间接调用段间直接调用段间间接调用六、子程序6.(IP)(cs)7.段内调用子过程与原调用程序在同一代码段,在调用之前会自动把断点的偏移地址压栈(调用指令的下一条指令的地址)断点入口地址CALLTIMERCALLWORDPTR[SI]六、子程序8.段间调用子过程与原调用程序不在同一代码段,在调用之前会自动把断点的段基地址和偏移地址压栈。先将断点的CS压栈,再压入IP。CALLFARPTRTIMERCALLDWORDPTR[SI]六、子程序9.返回指令格式:

RETRETF近返回:从栈顶弹出两个字节内容送IP,

SP内容加2远返回:从栈顶弹出四个字节内容分别送CS和IP,SP内容加4从堆栈中弹出断点地址,返回源程序。段内返回(近返回)段间返回(远返回)断点入口地址六、子程序10.3、主程序和子程序间的参数传递入口参数:将主程序给子程序提供的初始数据或获得初始数据的信息称为子程序的入口参数。出口参数:子程序返回给主程序的结果称为子程序的出口参数。参数传递可用以下3种方法完成:*利用寄存器*利用内存单元(变量)传递参数。*利用堆栈六、子程序11.4、子程序说明文件

六、子程序12.5、过程的嵌套、递归调用

过程的嵌套六、子程序递归调用当子程序嵌套时,若某子程序要调用的子程序就是其本身,则称为递归调用。13.例1

子程序设计,编写子程序实现统计一个字(AX)中“1”的个数。解:利用移位指令或循环移位指令,每次对CF位进行检测:当CF=1时,则总个数加1;当CF=0时,则总个数不变。这种操作可以采用有条件转移指令来实现,也可采用方便的ADC指令实现。子程序如下:

六、子程序14.COUNTER1PROCNEARPUSHAX MOVCX,16 XORBL,BLCOU1: SHRAX,1 ADCBL,0 LOOPCOU1POPAXRETCOUNTER1ENDP六、子程序15.例1

子程序应用。利用上例设计的子程序,统计字型变量VAR1中1的个数。解:在数据段中定义变量VAR1和CounterVar1:

VAR1 DW 1234H CounterVar1 DB?则可在代码段中编写程序:

MOVAX,VAR1 CALLCOUNTER1 MOV CounterVar1,BL执行后,结果单元CounterVar1的值为5,说明1234H中包含有5个“1”。

六、子程序16.例2

编写程序,完成将一组BCD数转换成16位二进制数。(BCD数转换成16位二进制数用子程序实现)

BCD数转换成16位二进制数的算法步骤为:①DX=0;(用DX存放结果)②取要转换的一组BCD数中的高位→(AX)③(DX)=(DX)*10+(AX)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论