IBM-PC汇编语言程序设计5课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《IBM-PC汇编语言程序设计5课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM PC 汇编语言 程序设计 课件
- 资源描述:
-
1、第五章第五章 循环与分支程序设计循环与分支程序设计 1.编写汇编语言程序步骤编写汇编语言程序步骤 l l 分析实际问题,确定解决问题的算法分析实际问题,确定解决问题的算法 l l 按算法画出程序流程图按算法画出程序流程图 l l 按流程图编写程序按流程图编写程序 l l上机调试上机调试,运行程序运行程序 注:本教材所讨论的编程环境只限于注:本教材所讨论的编程环境只限于 在在DOSDOS操作系统下的实模式操作系统下的实模式2.判断程序质量的标准判断程序质量的标准l 程序的正确性程序的正确性l 程序的可读性程序的可读性l 程序的执行时间程序的执行时间l 程序所占内存大小程序所占内存大小3几种程序结
2、构几种程序结构l 顺序结构顺序结构l 循环结构循环结构l 分支结构分支结构l子程序结构子程序结构顺序结构形式顺序结构形式循环结构形式循环结构形式当型循环当型循环(当条件成立进入循环当条件成立进入循环)循环初始设置循环初始设置循环体循环体循环条件判断循环条件判断?YN直到型循环直到型循环(直到条件成立退出循环直到条件成立退出循环)YN循环初始设置循环初始设置循环体循环体循环条件判断循环条件判断?两个分支两个分支YN 、CMP AL,BL JG great JMP exitgreat:exit:、ALBL处理处理AL BL处理处理分支结构形式分支结构形式三个分支三个分支 、CMP AL,0 JG
3、great JL less JMP exitless:JMP exitgreat:exit:、AL=0处理处理AL0处理处理AL=bx+2=bx+2 xchgxchg ax,abx+2 ax,abx+2 ;=,转移转移,不换不换xchg es:di+2,axmov es:di,axsub bx,bx ;排序标志排序标志cont:loop nextcmp bx,0 ;bx=1,已排好已排好je initsorted:mov di,start_addr练习5.11:从键盘输入一系列以$结束的字符串,统计数字字符的个数data segmentcount dw 0buff db 50 dup(?)da
4、ta endsprognam segmentmain proc farassume cs:prognamstart:push dssub ax,axpush axmov ax,datamov ds,axlea bx,buff ;取缓冲地址input:mov ah,01 ;从键盘读串int 21H ;存入al中mov bx,al ;保存字符inc bx ;buff数组下标cmp al,$;是不是$jnz input ;是,结束读lea bx,buff ;取串地址mov ax,0next:mov cl,bx;取串中字符inc bx;指向下一字符cmp cl,$;是不是$jz disp ;是,zf=
5、1,转移cmp cl,30h;与0比较jb cont ;9,不计数inc ax ;计数cont:jmp nextdisp:retmain endpprognam endsend start练习5.11:测试一字符串是否存在数字,若存在,置CL第5位置1,否则置0data segmentstring db abcqdefghijklmnopqrsdata endsprognamsegmentmain proc farassume cs:prognam,ds:data,es:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov es,ax
6、begin:mov cx,20 ;字符个数mov si,0 ;数组下标again:mov al,stringsicmp al,30h ;与0比较jb goon ;,转移or cl,20h ;有数字,置5位jmp exitgoon:inc si ;数组下标加1loop againand cl,0dfh ;无数字,清5位exit:retmain endpprognam endsend start循环程序设计小结循环程序设计小结1 1、循环控制条件的选择:、循环控制条件的选择:a.a.循环次数已知,采用循环次数已知,采用LOOPLOOPb.b.循环次数已知,但有可能使用其他特征或条件结束循环,循环次
7、数已知,但有可能使用其他特征或条件结束循环,可采用可采用LOOPZLOOPZ和和LOOPNZLOOPNZc.c.循环次数未知,具体问题具体分析循环次数未知,具体问题具体分析2 2、设立条件标志位的方法设立条件标志位的方法5.2 分支程序设计分支程序设计5.2.1分支程序的结构形式分支程序的结构形式双分支与多分支的共同特点:双分支与多分支的共同特点:运行方向是向前的在某一种特定条件下,只能执行其中的一个分支5.2.1分支程序设计方法分支程序设计方法1 1、使用、使用CMPCMP、TESTTEST等运算型指令等运算型指令+条件转移指令条件转移指令2 2、使用逻辑尺的方法、使用逻辑尺的方法3 3、使
8、用跳跃表法实现、使用跳跃表法实现CASECASE结构结构例例5.9 折半查找:附加段有一个有序字数组,首字表示数折半查找:附加段有一个有序字数组,首字表示数组长度,组长度,AX是待查字,若找到是待查字,若找到CF=0,否则否则CF=1dseg segmentlow_idxdw?high_idxdw?listdw12,11,22,33,44,55,66,77,88,99,111,222,333targetdw77dseg endscseg segmentmain proc farassume cs:cseg,ds:dseg,es:dsegstart:push dssub ax,axpush ax
9、mov ax,dsegmov ds,axmov es,ax例例5.9 折半查找:附加段有一个有序字数组,首字表示折半查找:附加段有一个有序字数组,首字表示数组长度,数组长度,AX是待查字,若找到是待查字,若找到CF=0,否则否则CF=1mov ax,target;lea di,list;取数组首地址cmp ax,es:di+2;取第1个数ja chk_last;第1个,检查最后1个lea si,es:di+2;=第1个je exit;,退出stc;CF=1,没找到jmp exitchk_last:mov si,es:di;下面三条使SI指向shl si,1;数组末元素add si,dicmp
10、ax,es:si;与末元素比较jb search;,头到末之后add cx,dx;以下三条计算shr cx,1;头与末的中点mov si,cxshl si,1;对准中间字0500100102104106108list10A(1+5)/2=3 3*2=6 DI偏移6,即106,即第3字compare:cmp ax,es:bx+si;比较,bx指向数组首元素je exit;,找到,退出ja highter;,调节搜索头dec cx;=mov high_idx,cx;调节搜索末jmp midhighter:inc cxmov low_idx,cx;调节搜索头jmp midno_match:stcex
展开阅读全文