分支循环结构部分_第1页
分支循环结构部分_第2页
分支循环结构部分_第3页
分支循环结构部分_第4页
分支循环结构部分_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

分支循环结构部分第一页,共十四页,2022年,8月28日程序结构:

TEST/CMP指令

Jx标号1

处理体P1JMP标号2标号1:

处理体P2标号2:其他指令

…条件满足?处理P1处理P2标号1:标号2:条件1条件2IF…THEN…ELSE结构第二页,共十四页,2022年,8月28日标号1:条件1成立?P1NYCASE结构程序结构:

…TEST/CMP指令(测试条件1)

Jx标号1;不满足转标号1

处理体P1…

JMP标号n+1标号1:TEST/CMP指令(测试条件2)

Jx标号2;不满足转标号2

处理体P2…

JMP标号n+1标号2:TEST/CMP指令(测试条件3)

Jx标号3;不满足转标号3

处理体P3…JMP标号n+1标号3:TEST/CMP指令(测试条件4)

……标号n+1:(公共出口)条件2成立?条件n成立?…Pn+1标号2:标号n:标号n+1:P2PnNNYY例:P178,[例4-14],统计成绩。流程图中虚线框内第三页,共十四页,2022年,8月28日例题18:求某数X的绝对值,并送回原处。求X的绝对值,即要求完成下面的运算:X,X>=0Y=-X,X<0显然,这是一个分支程序,程序将根据X的值不同完成不同的运算,其流程图如图4-3所示,程序如下:首先是各个段寄存器的初始化部分:第四页,共十四页,2022年,8月28日STACK SEGMENT STACKDW 256DUP(?)STACK ENDSDATA SEGMENTXADR DW 3456H,8192H;定义变量XDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:第五页,共十四页,2022年,8月28日MOV AX,DATA ;数据段的段基址装入DSMOV DS,AXMOV AX,XADR ;变量X送SX寄存器AND AX,AX ;(AX)>=0?JNS DONE ;若(AX)>=0,则跳到DONENEG AX ;否则求(AX)的补码MOV XADR,AX ;存结果DONE: MOV AH,4CH;返回DOS INT21HCODE ENDSEND START第六页,共十四页,2022年,8月28日4.4.4循环程序1.DO…UNTIL<条件>结构先执行,再判断条件。工作部分至少执行一次。初始化循环体循环控制继续循环?YN第七页,共十四页,2022年,8月28日2.DOWHILE<条件>结构先判断条件,再执行。工作部分有可能一次都不执行。初始化循环体循环控制继续循环?YN第八页,共十四页,2022年,8月28日注意:循环可以嵌套(多重循环),但多个循环体之间不能交叉,控制条件不能混淆。例22:编制程序使S=1+2X3+3X4+4X5+….+N(N+1),直到N(N+1)项大于200为止。首先绘制流程图:如图4-8所示根据流程图编制的程序如下所示:第九页,共十四页,2022年,8月28日TITLEACCUMULATESUMCODE SEGMENT ASSUME CS:CODE,DS:CODE.SS:CODE ORG 100HSTART: MOV DX, ;DX-1 MOV BL,2 ;BL-2REPEAT:MOV AL,BL ;乘积项的两个因子分别递增

INC BL MUL BL ;N(N+1)-AX第十页,共十四页,2022年,8月28日

ADD DX,AX ;计算累加和-AXCMP AX,200 ;N(N+1)=<200?JNA REPEAT ;若N(N+1)=<200则重复

MOV RESULT,DX;否则N(N+1)>200存结果

MOV AH,4CH ;返回DOSINT 21HORG 200HRESULT DW ?;存放结果单元CODE ENDSEND START第十一页,共十四页,2022年,8月28日掌握以下几点:调用子程序用CALL指令,返回调用程序用RET指令。子程序允许嵌套调用。进入子程序后首先要保护主程序的运行状态(标志位)和使用的寄存器内容(称为保护现场),退出子程序前要恢复现场。调用前要预先确定子程序中要使用哪些寄存器,并定义入口参数和出口参数。参数传递可利用寄存器、存储单元或堆栈(要用BP寻址)。4.4.5子程序设计举例第十二页,共十四页,2022年,8月28日例1:

二进制数(0-F)转换成ASCII(‘0’-‘F’)的子程序。BIN2ASCPROC;要转换的数在AL的低四位

;转换结果仍在AL中

CMPAL,9JAA2FADDAL,30HJMPDONEA2F:ADDAL,37HDONE:RETBIN2ASCENDP

调用方法:(在主程序中)

…MOVAL,0

温馨提示

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

最新文档

评论

0/150

提交评论