第5章汇编语言程序设计.ppt
《第5章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章汇编语言程序设计.ppt(53页珍藏版)》请在优知文库上搜索。
1、第第5章章 汇编语言程序设计汇编语言程序设计主要内容主要内容l顺序、分支、循环结构程序设计顺序、分支、循环结构程序设计l子程序设计子程序设计l转移指令、循环指令和子程序伪指令转移指令、循环指令和子程序伪指令教学要求教学要求l掌握:掌握:(1)分支程序的概念、结构和设计(2)循环程序的概念、结构和设计(3)子程序的概念、结构和设计l了解:了解:转移表法和地址表法多分支程序的设计原理;多重循环程序的结构形式,内层循环与外层循环遵守的层次结构规则,参数修改对各层的相互影响;汇编递归程序方法。编制一个汇编语言程序的步骤编制一个汇编语言程序的步骤(1)分析题意,确定算法。(2)根据算法,确定程序流程或画
2、出程序框图。(3)根据流程或框图编写程序。(4)上机调试程序。5.1 顺序程序设计顺序程序设计l顺序结构是最简单的程序结构,程序的执行顺序就是指令的编写顺序,所以,安排指令的先后次序就显得至关重要。【例例】设置光标到屏幕左上角设置光标到屏幕左上角SET_CUR PROCMOV AH,2 ;设置光标位置功能MOV BH,0 ;页号MOV DX,0 ;行DH,列DLINT 10H ;BIOS输出字符中断 RETSET_CUR ENDP 这个程序段是顺序执行的,一条指令执行后顺序执行紧接其后的另一条指令。【例例】设在设在X单元中存放一个单元中存放一个07之间的整数,用查表法求出其平之间的整数,用查表
3、法求出其平方值,并将结果存入方值,并将结果存入Y单元。单元。l分析:根据题意,首先将07所对应的平方值存入连续的8个单元中,构成一张平方值表,其首地址为SQTAB。l由表的存放规律可知:表首址SQTAB与X单元中的数i之和,正是i2所在单元的地址。DATA SEGMENT;数据段定义SQTAB DB 0,1,4,9,16,25,36,49 ;平方值表X DB 5Y DB?DATA ENDSSTACK SEGMENT PARA STACK STACKTAPN DB 100 DUP(?)TOP EQU LENGTH TAPNSTACK ENDSCODE SEGMENTASSUME CS:CODE,
4、DS:DATA,SS:STACKSQRTSUB PROC FARPUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AL,X ;取数iMOV AH,0MOV BX,OFFSET SQTAB ;BX表首址ADD BX,AXMOV AL,BX ;取i2并保存MOV Y,ALRETSQRTSUB ENDPCODE ENDSEND SQRTSUB5.2 分支程序设计分支程序设计l分支结构是一种非常重要的程序结构,也是实现程序功能选择所必要的程序结构。l由于汇编语言需要用转移指令来实现分支结构,而转移指令肯定会破坏程序的
5、结构,所以,编写清晰的分支结构是掌握该结构的重点。l计算机可根据不同条件进行逻辑判断,从而选择不同的程序流向。程序的流向是由CS和IP值决定的,当程序的转移仅在同一段内进行时,只需修改偏移地址IP的值;如果程序的转移是在不同段之间进行的,则段基址CS和偏移地址IP的值均需要修改。5.2.1 转移指令转移指令l转移指令是汇编程序员经常要用到的一组指令。在高级语言中,时常有“尽量不要使用转移指令语句”的劝告。但是,在汇编语言程序中,不但要使用转移指令,而且还要灵活运用,因为指令系统中有大量的转移指令。l转移指令分为无条件转移指令和有条件转移指令。无条件转移指令无条件转移指令JMP l无条件转移指令
6、JMP指令是从程序当前执行的地方无条件地转移到另一个地方执行。指令格式JMP 地址表达式指令功能无条件地转移到由地址表达式所确定的目标单元,本指令对标志位无影响4种方式段内直接转移段内间接转移段间直接转移段间间接转移说 明这是一种相对寻址方式。它转移的目标地址是当前IP内容加上一个8位相对位移量(DISP),DISP是汇编程序在汇编源程序时,根据目标地址和当前IP之间的距离自动生成的它转移的目标地址可通过寄存器或存储单元来寻址 当一条无条件转移指令中的地址表达式是一个段间(FAR)标号或段间标号加减一常量(必须在该标号所在段内)时,则该指令被汇编成一个段间直接转移指令代码它转移的目标地址由存储
7、器寻址方式指定的内存中的连续两个字来决定,低地址的字取代IP,高地址的字取代CS功能IP=IP+DISPIP=Reg16 或 P=Mem16无条件转移指令无条件转移指令JMPlJMP指令转移可以是短(short)转移(偏移量在-128B,127B之内)、近(near)转移(偏移量在-32KB,32KB之内)、远(far)转移(在不同的代码段之间转移)。l短转移和近转移都是段内转移,JMP指令只将目标指令位置处的偏移量赋值给指令指针寄存器IP,从而实现转移功能l远转移属于段间转移,JMP指令不仅会把目标指令位置处的偏移量赋值给指令指针寄存器,同时还会把目标指令所处的代码段的段地址赋值给当前代码段
8、寄存器CS。有条件转移指令有条件转移指令 l有条件转移指令是一组及其重要的转移指令,它根据标志寄存器中的一个(或多个)标志位来决定是否需要转移,这就为实现多功能程序提供了必要的手段 有条件转移指令的格式和类型有条件转移指令的格式和类型 指令格式 指令说明当满足条件而发生转移的指令,称为条件转移指令。它们以某些标志位或这些标志位的逻辑运算作为依据,若满足指令所规定条件,则程序转移,否则顺序执行根据单个标志位的条件转移指令用于无符号数的条件转移指令用于带符号数的条件转移指令(1)有进位转移(JC)或无进位转移(JNC)(2)等于/为零转移(JE/JZ)或不等于/非零转移(JNZ)(3)负数转移(J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
