第5章循环与分支程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章循环与分支程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 分支 程序设计 课件
- 资源描述:
-
1、计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5第五章第五章教学重点教学重点1.掌握掌握、及其汇编语言程序及其汇编语言程序设计设计2.问题:问题:(09、AZ、az);计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 (3 3)分支结构)分支结构 (4 4)子程序结构子程序结构 程序结构程序结构(5)复合结构:多种程序结构的组合)复合结构:多种程序结构的组合 (1 1)顺序结构顺序结构 (2 2)循环结构循环结构计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 编制汇编语言程序的步骤编制汇编语言程序
2、的步骤(1)分析题意,确定算法分析题意,确定算法(2)根据算法画出程序框图根据算法画出程序框图(3)根据框图编写程序根据框图编写程序(4)上机调试程序上机调试程序计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch55.0 顺序程序设计顺序程序设计顺序程序完全按指令书写的前后顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、顺序执行每一条指令,是最基本、最常见的程序结构最常见的程序结构一般纯粹的顺序结构的程序设计一般纯粹的顺序结构的程序设计较少。较少。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5data segmentdat
3、a segmentX Xdwdw 5 5Y Ydwdw 6 6Z Zdwdw 7 7W Wdwdw?data endsdata endscode segmentcode segmentmain proc farmain proc far assume cs:code,ds:dataassume cs:code,ds:datastart:start:push dspush ds xorxor ax,ax ax,ax push ax push ax mov mov ax,data ax,data mov ds,ax mov ds,ax movmov ax,X ax,X add ax,Y add a
4、x,Y add ax,Z add ax,Z mov mov W,ax W,ax ret retmain endpmain endpcode endscode ends end startend startWX+Y+Z计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5;查表法,实现一位;查表法,实现一位1616进制数转换为进制数转换为ASCIIASCII码显示码显示data segmentdata segment ASCII db 30h,31h,32h,33h,34h,35hASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,3
5、8h,39h db 36h,37h,38h,39h;0;09 9的的ASCIIASCII码码 db 41h,42h,43h,44h,45h,46hdb 41h,42h,43h,44h,45h,46h;A;AF F的的ASCIIASCII码码 hexhex db 0bh db 0bh;任意设定一个待转换的一位任意设定一个待转换的一位1616进制数进制数data endsdata endscode segmentcode segmentmain proc farmain proc far 计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 assume cs:code
6、,ds:dataassume cs:code,ds:datastart:start:push ds push ds xor xor ax,ax ax,ax push ax push ax mov mov ax,data ax,data mov ds,ax mov ds,ax ;-;-mov bx,offsetmov bx,offset ASCII ASCII;BX;BX指向指向ASCIIASCII码表码表movmov al,hex al,hex;AL;AL取得一位取得一位1616进制数,正是进制数,正是ASCIIASCII码表中位移码表中位移计算机科学与技术系计算机科学与技术系 汇编语言汇编语
7、言2022-12-24ch5 and al,0fh and al,0fh;只有低只有低4 4位是有效的,高位是有效的,高4 4位清位清0 0 xlatxlat ;换码:换码:ALDS:BXALDS:BXALALmovmov dl,al dl,al;入口参数:入口参数:DLALDLALmovmov ah,2 ah,2;02;02号号DOSDOS功能调用功能调用intint 21h 21h;显示一个显示一个ASCIIASCII码字符码字符retretmain endpmain endpcode endscode ends end startend start;查表法,实现一位;查表法,实现一位16
8、16进制数转换为进制数转换为ASCIIASCII码显示码显示data segmentdata segment ASCII db 30h,31h,32h,33h,34h,35h ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h db 36h,37h,38h,39h;0;09 9的的ASCIIASCII码码 db 41h,42h,43h,44h,45h,46hdb 41h,42h,43h,44h,45h,46h;A;AF F的的ASCIIASCII码码 hexhex db 0bh db 0bh;任意设定一个待转换的一位任意设定一个待转换的一位1
9、616进制数进制数data endsdata endscode segmentcode segmentmain proc farmain proc farassume cs:code,ds:dataassume cs:code,ds:datastart:start:push dspush ds xorxor ax,ax ax,ax push axpush ax movmov ax,data ax,data mov ds,axmov ds,ax ;-;-mov bx,offsetmov bx,offset ASCII ASCII;BX;BX指向指向ASCIIASCII码表码表movmov al,
10、hex al,hex;AL;AL取得一位取得一位1616进制数,正是进制数,正是ASCIIASCII码表中位移码表中位移and al,0fhand al,0fh;只有低只有低4 4位是有效的,高位是有效的,高4 4位清位清0 0 xlatxlat ;换码:换码:ALDS:BXALDS:BXALALmovmov dl,al dl,al;入口参数:入口参数:DLALDLALmovmov ah,2 ah,2;02;02号号DOSDOS功能调用功能调用intint 21h 21h;显示一个显示一个ASCIIASCII码字符码字符retretmain endpmain endpcode endscode
11、 ends end startend start计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch55.1 5.1 循环程序设计循环程序设计循环结构一般是循环结构一般是和和可以实现循环控可以实现循环控制制计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 循环程序结构形式循环程序结构形式DO-WHILE 结构结构 DO-UNTIL 结构结构控制条件控制条件初始化初始化循环体循环体YN控制条件控制条件初始化初始化循环体循环体YN计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5:设置循环的初始状态设置循环的初
12、始状态:循环的工作部分及修改部分循环的工作部分及修改部分:计数控制(:计数控制(LOOP)特征值控制特征值控制(LOOPZ/LOOPNZ/条件跳转指令条件跳转指令)循环程序结构说明循环程序结构说明计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5例:把例:把 BX BX 中的二进制数以十六进制的形式显示在屏幕上中的二进制数以十六进制的形式显示在屏幕上 如:如:1011 0010 1111 1010 B H BXBX1234计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5分析:分析:(1)程序结构的确定程序结构的确定 由题意由题意,显
13、然这可以用循环结构来完成,每次显,显然这可以用循环结构来完成,每次显示一个十六进制数位,因而循环次数是已知的,计数值示一个十六进制数位,因而循环次数是已知的,计数值为为4。(2)循环体的构成(算法确定)循环体的构成(算法确定)循环体应该包括:循环体应该包括:。需要了解相关知识需要了解相关知识:字符和其字符和其ASCII码之间的关系?码之间的关系?“0”“9”30H39H,“A”F”41H5AH如何显示一个字符?如何显示一个字符?(a)将显示字符的将显示字符的ASCII码放入码放入DL寄存器;寄存器;(b)将将AH的内的内容置为容置为2(功能号(功能号););(c)执行执行INT 21H(DOS
14、 功能调功能调用)。用)。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5开开 始始初初 始始 化化 循循 环环计计 数数 值值B B X X 循循 环环 左左 移移一一 个个 数数 位位把把 最最 右右 面面 的的 数数位位 转转 换换 为为 A A S S C C I I I I是是 A A S S C C I I I IA A F F?加加 上上 7 7显显 示示 一一 个个 字字 符符循循 环环 计计 数数 值值=0 0?结结 束束Y YN NN NY Y(3)循环控制条件分析)循环控制条件分析因为循环次数已知,可以使用因为循环次数已知,可以使用实现,但
15、是必须注意:实现,但是必须注意:。除了可以使用除了可以使用LOOPLOOP指令之外,还指令之外,还可以使用可以使用来实现。来实现。LOOP AGAIN DEC 计数器计数器 JNZ AGAIN计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 mov cxmov cx,4 ,4 ;初始化;初始化rotate:rotate:mov cl mov cl,4,4 rol bx,cl rol bx,cl mov al,bl mov al,bl and al,0fh and al,0fh add al,30h add al,30h ;09 ASCII 30H39H;09 A
16、SCII 30H39H cmp cmp al,3ah al,3ah jl printit jl printit add al,7h add al,7h ;AF ASCII 41H46H;AF ASCII 41H46Hprintitprintit:movmov dl,al dl,al mov mov ah,2 ah,2 int int 21h 21h loop rotate loop rotate 方法方法1(LOOP)计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 movmov ,4 ,4 ;初始化;初始化rotate:movrotate:mov ,4,4 r
17、ol bx,cl rol bx,cl mov al,bl mov al,bl and al,0fh and al,0fh add al,30h add al,30h ;09 ASCII 30H39H;09 ASCII 30H39H cmp cmp al,3ah al,3ah jl printit jl printit add al,7h add al,7h ;AF ASCII 41H46H;AF ASCII 41H46Hprintitprintit:movmov dl,al dl,al mov mov ah,2 ah,2 int int 21h 21h 方法方法2(条件跳转指令条件跳转指令)计
18、算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5例:将正数例:将正数 n n 插入一个已整序的正数字数组。该数组的插入一个已整序的正数字数组。该数组的首地址和末地址分别为首地址和末地址分别为ARRAY_HEAD,ARRAY_END。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5由于数组已经排好序,因此可以将正数由于数组已经排好序,因此可以将正数n依次和数组中的数进依次和数组中的数进行比较,比较有个方向问题,这里假设数组在存储单元中按地行比较,比较有个方向问题,这里假设数组在存储单元中按地址递增的方向从小到大依次存放。不妨从大数开始
19、进行比较,址递增的方向从小到大依次存放。不妨从大数开始进行比较,计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5 很显然,查找位置和空出位置的过程就是循环比很显然,查找位置和空出位置的过程就是循环比较的过程,因此采用循环结构来实现,那么,循环条较的过程,因此采用循环结构来实现,那么,循环条件如何确定呢?其中一种比较容易想到循环条件就是件如何确定呢?其中一种比较容易想到循环条件就是:数组长度(或数组首地址)及数组长度(或数组首地址)及K=n,其中,其中K为依次从为依次从数组中取出的一个数。数组中取出的一个数。另外,可以充分利用题目中的已知条件即数组中另外,可以充分
20、利用题目中的已知条件即数组中的数均为正数,所以我们可以在数组的开始的前一个的数均为正数,所以我们可以在数组的开始的前一个位置存放一个负数,不妨存放数位置存放一个负数,不妨存放数-1,这样,在循环控,这样,在循环控制时就不需要用数组长度来进行控制,可以进一步简制时就不需要用数组长度来进行控制,可以进一步简化程序的设计。而且需要注意的是,有可能一次都不化程序的设计。而且需要注意的是,有可能一次都不需要移动数组中的数。因此,应选择需要移动数组中的数。因此,应选择DOWHILE 结结构形式。构形式。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言2022-12-24ch5开开 始始(A AR R
展开阅读全文