- 1、本文档共104页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分支结构 分支程序结构可以有两种形式,如图所示 判断条件 Y N 判断条件 …… 分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。 例:设内存中有三个互不相等的无符号字数据,分别是放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。 分析:求三个无符号数中的最大值,只要把三个数据两两比较,用JA/JNB/JNA/JC等指令就可判断两数的大小,从而选出其中最大值。 源程序如下: SSEG SEGMENT STACK STK DB 20 DUP (0) SSEG ENDS DSEG SEGMENT ARG DW 7138H,84A6H,29EH MAX DW ? DESG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEG FMAX:MOV AX,DSEG MOV DS,AX MOV SS,AX MOV SP,SIZE STK LEA SI,ARG MOV AX,[SI] MOV BX,[SI+2] CMP AX, BX JAE FMAX1 MOV AX,BX FMAX1:CMP AX,[SI+4] JAE FMAX2 MOV AX,[SI+4] FMAX2:MOV MAX,AX MOV AH,4CH INT 21H CSEG ENDS END FMAX R 循环程序设计 当在程序中碰到某些需要多次重复执行的工作时,就可用循环程序来实现。 循环程序一般由四个部分组成: 循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件的初值。 工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。 修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。 控制部分:用来保证循环程序按规定的次数或特写条件正常循环。 例:已知道有N个元素存放在以BUF为首址的字节存储区中,试统计其中负元素的个数。显然,每个元素为一个8位有符号二进制数。统计其中负元素的个数的工作可用循环程序实现。 存储单元及寄存器分配如下: BX:BUF存储区的地址指针,初值为BUF的偏移地址,每循环一次之后,其值增1。 CX:循环计数器,初值为BUF区中元素的个数N,每循环一次之后,其值减1。 AX:用来记录负元素的个数,初值为0。 字变量R用来存放负元素的个数。 源程序如下: STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT BUF DB -2,5,-3,6,100 DB 0,-20,-9,8,-110,20 N = $-BUF R DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CX,N MOV AX,0 LOPA:CMP [BX],BYTE PTR 0 JGE NEXT INC AX NEXT:INC BX DEC CX JNE LOPA MOV R,AX MOV AH,4CH INT 21H CODE ENDS END BEGIN 循环程序设计 循环的控制方法:计数控制和条件控制。 计数控制 当循环次数已知时,通常使用计数控制法。假设循环次数为n,常常用以下三种方法实现计数控制。 先将循环次数n送入循环体计数器中,然后,每循环一次,计数器减1,直至循环计数器中的内容为0时结束循环。如: MOV CX,n … ;循环初值部分 LOOPA: … ;工作部分 … ;修改部分 DEC CX ;控制部分 JNZ LOOPA
文档评论(0)