资源描述:
《微机原理(第12讲)第5章控制转移和程序结构ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章控制转移和程序结构5.3循环程序结构第5章控制转移和程序结构5.1目标地址寻址方式5.1.1转移范围5.1.2寻址方式5.1.3无条件转移指令5.2分支程序结构5.2.1条件转移指令5.2.2单分支结构5.2.3双分支结构5.2.4多分支结构5.3循环程序结构5.3.1循环指令5.3.2计数控制循环5.3.3条件控制循环5.4子程序结构5.4.1子程序指令5.4.2子程序设计5.4.3参数传递5.4.4程序模块5.3循环程序结构5.3.1循环指令5.3.2计数控制循环5.3.3条件控制循环循环控制方法循环程序结构当型循环先判断,后循环直到型循环先循环,后判
2、断循环程序的组成参数初始化部分循环次数、各变量的初值等工作部分为完成程序功能而设计的主要程序段参数修改部分修改循环计数据及操作数地址等循环控制部分判断是否结束循环5.3.1循环指令LOOPlabel;ECX←ECX-1若ECX≠0,循环到LABEL;否则,顺序执行JECXZlabel;ECX=0,转移;否则顺序执行JCXZlabel;CX=0,转移;否则顺序执行注意跳转范围均为相对短转移:-128~+12732位段使用ECX(16位段使用CX)作为计数器DECECXJNZlabel;计数控制循环常用循环控制方法计数控制循环次数已知,每循环一次加/减1实现:常用L
3、OOP指令条件控制循环次数未知,须根据条件控制循环实现:用条件转移指令状态控制根据事先设置或实时检测的状态来控制循环[例题5-11]数组求和程序-1movecx,lengthofarrayxoreax,eax;求和初值为0movebx,eax;数组指针为0again:movzxedx,array[ebx*(typearray)]addeax,edx;求和incebxloopagainmovsum,eax;保存结果循环初始循环体循环控制计数控制[例题5-11]数组求和程序-2movecx,lengthofarrayxoreax,eax;求和初值为0jecxzdon
4、e;数组元素为0个,不求和movebx,eax;数组指针为0again:movzxedx,array[ebx*(typearray)]addeax,edx;求和incebxloopagaindone:movsum,eax;保存结果计数控制0A号DOS功能调用——字符串输入功能编号AH=0AH入口参数DS∶DX=键盘输入缓冲区逻辑地址(段地址∶偏移地址)功能说明读取从键盘输入的一个字符串(有回显),直到按下回车键。键盘输入缓冲区的第1个字节是缓冲区字节大小(最大为255),第2个字节在调用结束时被功能调用填进输入的字符个数,第3个字节开始存放输入字符的ASCII码
5、,最后是回车字符(0DH)。[例题5-12]输入字符串大小写转换程序-1;数据段keynum=255keybufdbkeynum;键盘输入缓冲区db0dbkeynumdup(0);代码段movdx,offsetkeybuf;设置入口参数DXmovah,0ahint21h;用户用回车键结束movdl,0ah;回车后再进行换行movah,2int21h输入“Hi”,回车,缓冲区:FF0248690D00…[例题5-12]输入字符串大小写转换程序-2movbx,offsetkeybuf+1;输入字符个数movcl,[bx];作为循环的次数movch,0again:in
6、cbx;BX指向输入字符movdl,[bx];取出一个字符cmpdl,'a';小于小写字母“a”jbdispcmpdl,'z';大于小写字母“z”jadisp;直接去显示subdl,20h;小写字母转换为大写字母disp:movah,2;显示一个字符int21hloopagain;循环计数控制[例题5-13]记录字符串特定字符个数程序movesi,offsetstringxorebx,ebx;EBX用于记录空格数again:moval,[esi]cmpal,0;判断字符串是否结束jzdonecmpal,20h;空格的ASCII码是20Hjnenext;不相等、不
7、是空格,转移incbx;相等、是空格,个数加1next:incesijmpagain;继续循环done:movspace,ebx;保存结果条件控制例1.统计字节数据块:-1,-3,5,6,9,…中负元素的个数数据段定义如下:DATASEGMENTBUFDB-1,-3,5,6,9,…;定义若干字节带符号数CUNTEQU$-BUF;计算数据块长度RESULTDW?;定义存放结果单元DATAENDS;代码段程序:MOVBX,OFFSETBUF;建立数据指针MOVCX,CUNT;设置循环次数MOVDX,0;置结果初值LP1:MOVAL,[BX];取数据ANDAL,AL;
8、设置标志位JNSPLUS