《基本程序控制结构》PPT课件.ppt
《《基本程序控制结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本程序控制结构》PPT课件.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 顺序、分支、循环程序设计顺序、分支、循环程序设计(P(P160160)1.概述概述一一.汇编语言程序设计的基本步骤汇编语言程序设计的基本步骤1.分析题意,确定算法分析题意,确定算法(抽象出描述问题的数学模型或整理出若抽象出描述问题的数学模型或整理出若个个 条规律,找出合理的解法。条规律,找出合理的解法。)2.绘出程序流程图绘出程序流程图3.编制程序编制程序(采用分段结构,合理分配存储单元,合理分配寄存采用分段结构,合理分配存储单元,合理分配寄存器器)4.调试程序调试程序 判断程序质量的标准判断程序质量的标准(1)程序的执行时间程序的执行时间(2)程序所占用的内存程序所占用的内存字
2、节数字节数(3)程序的语句行数程序的语句行数二二.程序的基本结构程序的基本结构 顺序、分支、循环,每种结构只有一个入口和一个出口,三顺序、分支、循环,每种结构只有一个入口和一个出口,三种结构任意组合和嵌套,可构成任何复杂的程序。种结构任意组合和嵌套,可构成任何复杂的程序。1.顺序结构的程序设计1.1.顺序结构顺序结构先执行先执行A A操作,再执行操作,再执行B B操作操作。A BAB流程图流程图N-S图图Ex1:按公式按公式Y=X*X-50 mov al,mulbuf;(al)x mul al ;(ax)x*x sub ax,50 ;(ax)x*x-50 mov dstbuf,ax;(desb
3、uf)y Ex:Ex:写一个把压缩存放的写一个把压缩存放的BCDBCD码,转换为对应的十进制数码,转换为对应的十进制数字字ASCIIASCII码的程序。码的程序。Data segmentBcd DB 86HASCII DB 2 dup(0)Data endsCode segment assume cs:code,ds:dataMain proc far start:mov ax,data mov ds,ax mov al,bcd and al,0fh add al,30h mov ASCII+1,al Mov al,bcdMov cl,4Shr al,clAdd al,30hMov ASCII
4、,alMov ah,4chInt 21h Main endpCode ends end start863836ASCIIASCII+12.分支程序设计分支结构:根据条件判断决定程序的走向分支结构:根据条件判断决定程序的走向一一.转移指令转移指令 (P85)1.无条件转移指令无条件转移指令 格式:格式:JMP 说明:说明:常用标号表示。常用标号表示。EX:jmpjmp lab1 mov ax,0 Lab1:mov ax,0ffh (1)段内转移段内转移-只改变只改变IP,转移地址由新的,转移地址由新的IP取代。取代。1)段内直接短转移段内直接短转移 格式:格式:JMP SHORT OPR 操作:
5、操作:(IP)(IP)+D8 无条件转移可在段内进行,也可无条件转移可在段内进行,也可无条件转移可在段内进行,也可无条件转移可在段内进行,也可无条件转移可在段内进行,也可无条件转移可在段内进行,也可在段间进行,寻址有直接寻址和间接在段间进行,寻址有直接寻址和间接在段间进行,寻址有直接寻址和间接在段间进行,寻址有直接寻址和间接在段间进行,寻址有直接寻址和间接在段间进行,寻址有直接寻址和间接寻址,寻址,寻址,寻址,寻址,寻址,JMPJMPJMP不影响状态位。不影响状态位。不影响状态位。不影响状态位。不影响状态位。不影响状态位。说明:(1)Opr是一个带补码的带符号的数,以満足向前、是一个带补码的带
6、符号的数,以満足向前、向后转移向后转移(一般用符号地址一般用符号地址),只允许在,只允许在-128+127字节内字节内转移。转移。(2)两字节指令两字节指令Ex:jmp short hello Hello:mov al,3 Jmp指令指令E8 08老 IP B0 03新 IPMOV指令指令D8D8Cs:0100CPU一旦执行一旦执行JMP,(IP)=0102H(老老IP)D8=08H新的新的(IP)=0102+D8=010AH2)2)段内直接近转移段内直接近转移 格式:格式:JMP near ptr opr JMP near ptr opr 操作操作:(IP):(IP)(IP)+D(IP)+D
7、1616 说明:说明:OprOpr是一个带符号数,是一个带符号数,32K32K内转移,内转移,3 3字节指令字节指令3)3)段内间接转移段内间接转移 格式:格式:JMP Word ptr opr JMP Word ptr opr 操作操作:(IP):(IP)(EA)(EA)说明说明:有效地址来自内存单元中的内容,或一个有效地址来自内存单元中的内容,或一个1616位通用位通用寄存器中的内容寄存器中的内容。Ex:JMP bx (IP)Ex:JMP bx (IP)(BX)(BX)JMP WORD PTR BP+TABLE JMP BXSI JMP WORD PTR BP+TABLE JMP BXSI
8、 先计算先计算PAPA,找出,找出MEMMEM中的内容送给中的内容送给IPIP(2)(2)段间转移段间转移 从一个代码段转移到另一个代码段同,从一个代码段转移到另一个代码段同,JMPJMP同时修改同时修改CSCS和和IPIP内容。内容。1)1)段间直接段间直接(远远)转移转移 格式:格式:JMP FAR PTR OPRJMP FAR PTR OPR 操作:操作:(IP)(IP)OPR OPR的段内偏移地址的段内偏移地址 (CS)(CS)OPR OPR的所在的段地址的所在的段地址 说明:指令中直接指定要转向的说明:指令中直接指定要转向的IPIP和和CSCS ex:JMP far ptr next
9、_progJMP far ptr next_prog 50EA 02 00 20JMP新IP新CS(IP)=0250H,(CS)=2000H2)2)段间间接转移段间间接转移 格式:格式:JMP DWORD PTR OPRJMP DWORD PTR OPR 操作:操作:(IP)(IP)(EA)(EA)(CS)(CS)(EA+2)(EA+2)ex ex:JMP DWORD PTR ALPHASPDIJMP DWORD PTR ALPHASPDI (EA)=(sp)+(di)+alpha (EA)=(sp)+(di)+alpha 把把(EA)(EA)单元中的内容送入单元中的内容送入(IP)(IP)把
10、把(EA+2)(EA+2)单元中的内容送入单元中的内容送入(CS)(CS)2.条件转移指令 以某些标志位的逻辑运算作依据,满足规定的以某些标志位的逻辑运算作依据,满足规定的 条件转移,否则顺序执行,转向的目标地址必须在条件转移,否则顺序执行,转向的目标地址必须在 -128 -128+127+127之间。之间。(1)(1)格式:格式:Jxx Jxx (2)(2)说明:说明:JXX-JXX-转移条件转移条件 -标号标号 指令为指令为2 2字节字节 使用条件转移指令之前,必须选择影响标志位的使用条件转移指令之前,必须选择影响标志位的 指令指令(CMP(CMP、TESTTEST等等)。指令指令转移条件
11、转移条件含义含义 JCJC JNC JNC CF=1CF=1 CF=0 CF=0有进位有进位(借位借位)转移转移无进位无进位(借位借位)转移转移JE/JZJE/JZJNE/JNZJNE/JNZ ZF=1ZF=1 ZF=0 ZF=0 相等相等(等于等于0)0)转移转移不相等不相等(不等于不等于0)0)转移转移 JSJS JNS JNS SF=1SF=1 SF=0 SF=0 负数转移负数转移 正数转移正数转移 JOJO JNO JNO OF=1OF=1 OF=0 OF=0 有溢出转移有溢出转移 无溢出转移无溢出转移JP/JPEJP/JPEJNP/JPOJNP/JPO PF=1PF=1 PF=0 P
12、F=0 有偶数个有偶数个“1“1转移转移 有奇数个有奇数个“1“1转移转移(3)(3)单条件单条件 转移指令转移指令 1 1)单一标志位单一标志位2)JCXZ2)JCXZ格式:格式:JCXZ JCXZ 操作:操作:若若(CX)=0(CX)=0,转至,转至 ,否则顺序执行,否则顺序执行。(4)(4)无符号数比较无符号数比较 用来判断无符号数的大小,判断条件:用来判断无符号数的大小,判断条件:CFCF、ZFZF指令转移条件含义JA/JNLECF=0 AND ZF=0 AB转移JAE/JNBCF=0 OR ZF=1 A=B转移JB/JNAECF=1 AND ZF=0 AB转移JBE/JNA CF=1
13、 OR ZF=1 AB转移JGE/JNLSF=OF OR ZF=1 A=B转移JL/JNGECF=OF AND ZF=0 AB转移JLE/JNG A0 if:(ax)x0 x=0 (bx)y -1 x=0?NY=-1Y=0Y=1X=0?YYN流程图 .mov ax,x cmp ax,0 jge biger mov bx,-1 jmp nextBiger:jz equl mov bx,1 jmp nextEqul:mov bx,0Next:ex:已知两个整数变量已知两个整数变量A和和B,编程,编程:(1)若两个数中有一个奇数,则若两个数中有一个奇数,则将奇数存入将奇数存入ABUF单元,偶数存入单
14、元,偶数存入BBUF单元单元。(2)若两个数中均为奇数,则两数分别加若两个数中均为奇数,则两数分别加1,并存回原变量处。,并存回原变量处。(3)若两个数中均为偶数,若两个数中均为偶数,则两数不变则两数不变A、B同同类类?NYB偶?NB+1 BA+1 AB偶?YYYYA BData segmentAbuf db x1Bbuf db x2Data endsCode segmentAssume cs:code,ds:dataMain proc farStart:mov ax,data mov ds,ax mov al,abuf mov bl,bbuf xor al,bl test al,01h jz
15、 class test bl,01h jz exit xchg bl,abuf mov bbuf,bl jmp exitClass:test bl,01h jz exit inc abuf inc bbufExit:mov ah,4cH int 21H Main endpCode ends end start3.3.循环程序设计循环程序设计(P(P160160)在应用中,往往要求某一段程序重复执行多次,这时要用循环结构。在应用中,往往要求某一段程序重复执行多次,这时要用循环结构。一一.循环控制命令循环控制命令(P(P9595)1.LOOP 1.LOOP指令指令 格式:格式:LOOP OPR L
16、OOP OPR 测试条件测试条件(CX)(CX)0,0,循环循环 操作操作:(1)(CX):(1)(CX)(CX)-1(CX)-1 (2)(2)检测条件,若满足,转移至标号,否则,顺序执行检测条件,若满足,转移至标号,否则,顺序执行 说明:说明:(1)(1)使用使用LOOPLOOP前,循环次数送入前,循环次数送入CXCX (2)(2)本命令等价于:本命令等价于:DEC CX JNZ DEC CX JNZ 2.2.LOOPZ/LOOPELOOPZ/LOOPE指令指令(为为0 0或相等时循环或相等时循环)格式:格式:LOOPZ/LOOPELOOPZ/LOOPE OPR OPR 测试条件测试条件ZF
17、=1ZF=1且且(CX)(CX)0,0,循环循环 操作同上。本指令可以提前结束循环。操作同上。本指令可以提前结束循环。3.3.LOOPNZ/LOOPNELOOPNZ/LOOPNE指令指令(不为不为0 0或不相等时循环或不相等时循环)格式:格式:LOOPNZ/LOOPNE OPRLOOPNZ/LOOPNE OPR 测试条件测试条件ZF=0ZF=0且且(CX)(CX)0,0,循环循环 操作同上。本指令可以提前结束循环。操作同上。本指令可以提前结束循环。二二.循环程序的结构循环程序的结构1.循环程序的组成(1)初始化:设置循环计数值,设置变量等(2)循环体:程序的处理部分(3)循环控制部分:对循环是
18、否结束加以判定,修改变量、指针,为下一次循环作准备。(4)结束处理:分析、存放程序的结果。2.2.循环程序有两种结构形式循环程序有两种结构形式 (1)DOwhile(DOwhile(当型当型)循环初始状态循环控制条件?循环体结束处理NY 循环体条件?先判断条件,可能循环先判断条件,可能循环体一次也不执行,又称体一次也不执行,又称“零迭代次循环零迭代次循环”(2)DOUntil(DOUntil(直到型直到型)循环初始状态循环控制条件?循环体结束处理NY 循环体条件?先执行后判断,循环体先执行后判断,循环体至少执行一次。至少执行一次。三.循环程序的设计方法1.1.计数器控制循环计数器控制循环(若循
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本程序控制结构 基本 程序控制 结构 PPT 课件
限制150内