教学课件PPT循环与分支程序设计.ppt

上传人:laozhun 文档编号:2278771 上传时间:2023-02-08 格式:PPT 页数:28 大小:142.02KB
返回 下载 相关 举报
教学课件PPT循环与分支程序设计.ppt_第1页
第1页 / 共28页
教学课件PPT循环与分支程序设计.ppt_第2页
第2页 / 共28页
教学课件PPT循环与分支程序设计.ppt_第3页
第3页 / 共28页
教学课件PPT循环与分支程序设计.ppt_第4页
第4页 / 共28页
教学课件PPT循环与分支程序设计.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《教学课件PPT循环与分支程序设计.ppt》由会员分享,可在线阅读,更多相关《教学课件PPT循环与分支程序设计.ppt(28页珍藏版)》请在三一办公上搜索。

1、1,第五章 顺序、循环与分支程序设计,5.1 顺序程序设计5.2 循环程序设计5.3 分支程序设计,2,顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构。,5.1 顺序程序设计,例5.1,例5.2,3,例5.1,Data segment X dw 33 Y dw 47 Z dw 65 W dw?Data endsCode segment assume cs:code,assume ds:dataBegin:mov ax,Xadd ax,Yadc ax,Zmov W,axmov ah,4ch int 21hCode ends end Begin,4,例5.2,qvard

2、q 1234567887654321h,mov al,byte ptr qvar6mov byte ptr qvar7,almov al,byte ptr qvar5mov byte ptr qvar6,almov al,byte ptr qvar4mov byte ptr qvar5,almov al,byte ptr qvar3mov byte ptr qvar4,al,mov al,byte ptr qvar2mov byte ptr qvar3,almov al,byte ptr qvar1mov byte ptr qvar2,almov al,byte ptr qvar0mov by

3、te ptr qvar1,almov byte ptr qvar0,0,12 34 56 78 87 65 43 21h,34 56 78 87 65 43 21 00h,移位后,图示,5,例5.2 64位数据左移8位的图示,12,34,56,78,87,65,43,21,00,qvar0,qvar1,qvar2,qvar3,qvar4,qvar5,qvar6,qvar7,6,循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体。循环指令和转移指令可以实现循环控制,5.2 循环程序设计,循环指令LOOPE:例5.4,转移指令:例5.5,多重循环:例5.6,循环指令LOOP:例5.3,

4、7,.model small.stack 256.data sum dw?.codebegin:mov ax,data mov ds,ax xor ax,ax;被加数AX清0mov cx,100 again:add ax,cx;loop againmov sum,ax;将累加和送入指定单元mov ah,4ch int 21hend begin,例5.3 计算1100数字之和,循环次数固定,8,begin:mov ax,wordX;测试目标送AXmov cx,16;循环计数器置初值mov dl,-1;计位器置初值again:inc dltest ax,1ror ax,1;循环指令不影响ZFloo

5、pe again;CX0且ZF=1(测试位为0);继续循环je notfoundmov byteY,dljmp donenotfound:mov byteY,-1;ZF=1,测试目标的16个位均为0done:mov ah,4ch int 21h,例5.4 确定wordX中1的最低位数,最大循环次数固定,满足条件退出。,9,Begin:mov bx,offset stringagain:mov al,bx;取一个字符or al,al;是否为结尾符0jz done;是,退出循环cmp al,A;是否为大写AZjb nextcmp al,Zja nextor al,20h;是,转换为小写字母(使D5

6、=1)mov bx,al;仍保存在原位置next:inc bxjmp again;继续循环done:mov ah,4ch int 21h,例5.5 大写字母改为小写字母,循环次数不定,利用标志退出。,10,mov cx,count;CX数组元素个数dec cx;元素个数减1为外循环次数outlp:mov dx,cx;DX内循环次数mov bx,offset arrayinlp:mov al,bx;取前一个元素cmp al,bx+1;与后一个元素比较jna next;前一个不大于后一个元素,则不进行交换xchg al,bx+1;否则,进行交换mov bx,alnext:inc bx;下一对元素d

7、ec dxjnz inlp;内循环尾loop outlp;外循环尾,例5.6 对数组元素排序:冒泡法,双重循环,内循环含分支,11,“冒泡法”是一种排序算法,不是最优的算法,但它易于理解和实现。冒泡法从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序。这是一个双重循环程序结构。外循环由于循环次数已知,可用loop指令实现;而内循环次数每次外循环后减少一次,我们用DX表示。内循环体比较两个元素大小,又是一个

8、分支结构。,冒泡法,12,例5.7 把BX中的二进制数以十六进制的形式显示在屏幕上。,13,mov ch,4rotate:mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h;0-9 ASCII 30H-39H cmp al,3ah jl printit add al,7h;A-F ASCII 41H-46Hprintit:mov dl,al mov ah,2 int 21h dec ch jnz rotate,14,例5.8 将正数n插入一个已整序的字数组的正确位置。x dw?array_head dw 3,5,15,23,37,49,52,6

9、5,78,99 array_end dw 105 n dw 32 mov ax,n mov array_head-2,0ffffh mov si,0compare:cmp array_endsi,ax jle insert mov bx,array_endsi mov array_endsi+2,bx sub si,2 jmp short compareinsert:mov array_endsi+2,ax,15,例5.9 将首地址为a的字数组从大到小排序(气泡算法,多重循环)a dw 100,30,78,99,15,-1,66,54,189,256 mov cx,10 dec cxloop1

10、:mov di,cx mov bx,0loop2:mov ax,abx cmp ax,abx+2 jge continue xchg ax,abx+2 mov abx,axcontinue:add bx,2 loop loop2 mov cx,di loop loop1,16,分支程序根据条件是真或假决定执行与否。判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志。转移指令Jcc和JMP可以实现分支控制;,5.3 分支程序设计,单分支:例5.10,双分支:例5.11,多分支:例5.12,17,例5.10,;计算XY的绝对值mov ax,Xsub ax,Yjns nonneg;条件满

11、足(X-Y 0)?neg ax;条件不满足,求补nonneg:mov result,ax;条件满足,18,例5.11,mov al,_bimul almov bx,axmov al,_aimul _cmov cx,4imul cxcmp bx,ax;比较二者大小jge yes;条件满足?mov tag,0;第一分支体:条件不满足,tag0jmp done;跳过第二个分支体yes:mov tag,1;Done:mov ah,4ch int 21h,前一个分支后要使用JMP指令,切切!,19,or ah,ah;等效于cmp ah,0jz function0;ah=0,转向function0dec

12、ah;等效于cmp ah,1jz function1;ah=1,转向function1dec ah;等效于cmp ah,2jz function2;ah=2,转向function2.,多分支结构,20,Tabledb disp1,disp2,disp3,disp4,.,例5.12 利用入口地址表,形成多分支,数据段,程序段,分支体,21,.datamsgdb Input number(18):,0dh,0ah,$msg1db Chapter1:Fundamentalsof Assembly Language,0dh,0ah,$msg2db Chapter2:8086 Instruction S

13、et,0dh,0ah,$msg3db Chapter3:Statements of Assembly Language,0dh,0ah,$msg4db Chapter4:Assembly Language Programming,0dh,0ah,$msg5db Chapter5:32-bitInstructionsand Programming,0dh,0ah,$msg6db Chapter 6:Mixed Programming with C/C+,0dh,0ah,$msg7db Chapter7:FP Instructions and Programming,0dh,0ah,$msg8db

14、 Chapter8:MMX Instructions and Programming,0dh,0ah,$tabledw disp1,disp2,disp3,disp4,disp5,disp6,disp7,disp8;取得各个标号的偏移地址,例5.12 数据段,22,start1:mov dx,offset msg;提示输入数字mov ah,9int 21hmov ah,1;等待按键int 21hcmp al,1;数字 8?ja start1and ax,000fh;将ASCII码转换成数字dec axshl ax,1;等效于add ax,axmov bx,axjmp tablebx;(段内)间

15、接转移:IPtable+bx,例5.12 程序段,23,start2:mov ah,9int 21h.exit 0;disp1:mov dx,offset msg1;处理程序1jmp start2disp2:mov dx,offset msg2;处理程序2jmp start2disp3:mov dx,offset msg3;处理程序3jmp start2disp4:mov dx,offset msg4;处理程序4jmp start2.,例5.12 分支体,24,例5.13 设有数组x(x1,x10)和y(y1,y10),编程计算 z1=x1+y1 z2=x2+y2 z3=x3-y3 z4=x4

16、-y4 z5=x5-y5 z6=x6+y6 z7=x7-y7 z8=x8-y8 z9=x9+y9 z10=x10+y10,逻辑尺:0 0 1 1 0 1 1 1 0 0 1 减法 0 加法,25,x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_rule dw 00dch mov bx,0 mov cx,10 mov dx,logic_rule next:mov ax,xbx shr dx,1 jc subtract add

17、 ax,ybx jmp short result;向前引用subtract:sub ax,ybx result:mov zbx,ax add bx,2 loop next,26,例5.14 根据AL寄存器中哪一位为1(从低位到高位)把程序 转移到8个不同的程序分支去。(寄存器间接寻址),branch_table dw routine1 dw routine2 dw routine3 dw routine4 dw routine5 dw routine6 dw routine7 dw routine8,cmp al,0 je continue lea bx,branch_tableL:shr a

18、l,1;逻辑右移 jnb add1;jnb=jnc jmp word ptr bx;段内间接转移add1:add bx,type branch_table jmp Lcontinue:routine1:routine2:,27,(基址变址寻址),cmp al,0 je continue lea bx,branch_table mov si,7*type branch_table mov cx,8L:shl al,1;逻辑左移 jnb sub1;jnb=jnc jmp word ptr bxsi;段内间接转移sub1:sub si,type branch_table loop Lcontinue:routine1:routine2:,28,(寄存器相对寻址),cmp al,0 je continue mov si,0 L:shr al,1;逻辑右移 jnb add1;jnb=jnc jmp branch_tablesi;段内间接转移add1:add si,type branch_table jmp Lcontinue:routine1:routine2:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号