资源描述:
《东北大学汇编语言第07章 循环结构程序ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章循环结构程序7.1循环结构程序的提出7.2循环结构程序的组成7.3循环控制指令7.4数据串操作指令7.5循环程序的控制方法7.6单重循环程序举例7.7多重循环程序设计7.8循环程序的效率7.1循环结构程序的提出在许多实际应用问题中,经常遇到某一段操作需反复进行的情况。例7.1设内存DATA1和DATA2开始分别存放50个无符号字数据,编制程序将两个存储区对应字数据求和并存入SUM开始的单元。利用顺序结构编写求和程序,首先设置源操作数和目的操作数指针,设置存放结果指针,接着从源指针指出的字单元取出数据,与目的指针指出的字单
2、元的数据相加,和存入结果的字单元,然后,修改各地址指针,使之指向下一个字数据,求和,保存结果,...直至50对字数据全部求和后,程序结束。7.1循环结构程序的提出1:;*****EXAM7.1.1*****2:SSEGSEGMENTSTACK3:STACKDB 50DUP(0)4:SSEGENDS5:DATASEGMENT6:DATA1DW15H,36H,45H,27BH,...7:DATA2DW174H,03H,5BCH,390H,26H,...8:SUMDW50DUP(0)9:DATAENDS10:CSEG
3、SEGMENT11:ASSUMECS:CSEG,DS:DATA12:ASSUMESS:SSEG13:START:MOVAX,DATA14:MOVDS,AX15:MOVAX,SSEG16:MOVSS,AX17:MOVSP,SIZESTACK18:LEABX,DATA119:LEASI,DATA220:LEADI,SUM21:MOVAX,[SI]22:ADDAX,[BX]23:MOV[DI],AX24:ADDBX,225:ADDSI,226:ADDDI,227:MOVAX,[SI]28:ADDAX,[
4、BX]29:MOV[DI],AX30:ADDBX,231:ADDSI,232:ADDDI,2:315:MOVAX,[SI]316:ADDAX,[BX]317:MOV[DI],AX318:MOVAH,4CH319:INT21H320:CSEGENDS321:ENDSTART7.1循环结构程序的提出1:*****EXAM7.1.2*****:....;第2~20行与EXAM7.1.1相同21:MOVCX,5022:AGAIN:MOVAX,[SI]23:ADDAX,[BX]24:MOV[DI],AX2
5、5:ADDBX,226:ADDSI,227:ADDDI,228:DECCX29:JNZAGAIN30:MOVAH,4CH31:INT21H7.2循环结构程序的组成1.初始化部分初始化部分是为循环程序做好准备、以保证循环程序能够正常运行的部分。这一部分往往在循环程序的开头,逻辑上先从这部分开始执行。这一部分一般设置地址指针的初值、计数器的初值及程序中用到的某些寄存器和某些内存单元的初值,初始化部分只执行一遍。2.工作部分工作部分是循环程序的主体,它从初始化部分设置的初值开始,动态地反复执行相同的操作。这一部分完
6、成循环程序所要实现的功能,即需要重复进行的工作。3.修改部分这一部分与工作部分协调配合,对参加运算的数据或地址指针以及结果单元的地址指针进行恰当的修改,以保证循环程序在循环的过程中,每次循环都能正确地得到参加运算的数据,并正确地存放运算结果。4.控制部分控制部分是保证循环程序按预定的循环次数或某种预定的条件正常循环,且能控制循环程序正常退出循环的部分。7.3循环控制指令1.LOOP重复控制2.LOOPE/LOOPZ条件重复控制3.LOOPNE/LOOPNZ条件重复控制4.JCXZCX为0转1.LOOP重复控制指令汇编格
7、式:LOOPshortlabel操作:计数寄存器CX减1,如果新的CX值不为0,则转向shortlabel指定的循环入口执行;若CX=0,则退出循环,执行后续指令。受影响的状态标志位:没有。举例:1.LOOP重复控制21:MOVCX,5022:AGAIN:MOVAX,[SI]23:ADDAX,[BX]24:MOV[DI],AX25:ADDBX,226:ADDSI,227:ADDDI,228:DECCX29:JNZAGAIN30:MOVAH,4CH31:INT21HLOOPAGAIN2.LOOPE/LOO
8、PZ条件重复控制指令汇编格式:LOOPE/LOOPZshortlabel操作:计数寄存器CX减1,如果零标志位ZF=1且CX≠0时,转向shortlabel指定的循环入口执行,如果ZF=0或CX=0则执行后续指令。受影响的状态标志位:没有。例子:比较两个数据