汇编语言IBM-PC第5章

上传人:xian****hua 文档编号:249297484 上传时间:2024-10-28 格式:PPT 页数:41 大小:286KB
返回 下载 相关 举报
汇编语言IBM-PC第5章_第1页
第1页 / 共41页
汇编语言IBM-PC第5章_第2页
第2页 / 共41页
汇编语言IBM-PC第5章_第3页
第3页 / 共41页
点击查看更多>>
资源描述
微机原理及接口技术,第二级,第三级,第四级,第五级,微机原理及接口技术,第4章作业,Page 156:4.4、4.6、4.9、4.13、4.17,第4章教学要求,1.,掌握完整段定义源程序格式,2.掌握常量表达、变量定义及应用、变量和标号的属性及操作符,3.掌握基本伪指令和操作符:,EQU;*/;DBDWDD、?DUP;,ORG$、OFFSETSEGPTR;,.MODEL.STACK.DATA.CODEEND;PROC/ENDP,4.掌握汇编语言源程序的编辑、汇编、连接和调试的开发方法,第5章 循环与分支程序设计,5.1 循环程序设计,5.2 分支程序设计,掌握基本的顺序、分支、循环设计方法,熟悉常见程序设计问题:,多精度运算,查表(查代码、特定值等);数据范围判断(09、AZ、az)、字母大小写转换;字符串传送、比较等操作、求最小最大值、数据求和、统计字符个数,教学要求,编制汇编语言程序的步骤:,(1),分析题意,确定算法,(2)根据算法画出程序框图,(3)根据框图编写程序,(4)上机调试程序,分支结构 子程序结构,程序结构:,复合结构:多种程序结构的组合,顺序结构,循环结构,第5章:顺序程序设计,没有分支、循环等转移指令的程序,会按指令书写的前后顺利依次执行,这就是顺序程序,顺序结构是最基本的程序结构,完全采用顺序结构编写的程序并不多见,例题5.1:顺序程序设计实例,采用查表法,实现一位16进制数,转换为ASCII码显示,第5章:例5.1:采用查表法,实现一位16进制数转换为ASCII码显示,;数据段,ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,;对应0 9的ASCII码,db 41h,42h,43h,44h,45h,46h,;对应A F的ASCII码,hexdb 04h,0bh,;假设两个数据,;代码段,mov bx,offset ASCII,;BX指向ASCII码表,mov al,hex,;AL取得一位16进制数,;恰好就是ASCII码表中的位移,and al,0fh,;只有低4位是有效的,高4位清0,Xlat,;换码:ALDS:BXAL,XLAT,第5章:例5.1:(续),mov dl,al,;入口参数:DLAL,mov ah,2,;02号DOS功能调用,int 21h,;显示一个ASCII码字符,mov al,hex+1,;转换并显示下一个数据,and al,0fh,xlat,mov dl,al,mov ah,2,int 21h,XLAT,第5章:5.1 循环程序设计,5.1.1 循环程序的结构形式,5.1.2 循环程序设计方法,5.1.3 多重循环程序设计,第5章:5.1.1 循环程序的结构形式,循环程序结构,是满足一定条件的情况下,重复执行某段程序,循环结构的程序通常有3个部分:,循环初始部分为开始循环准备必要的条件,如循环次数、循环体需要的数值等,循环体部分指重复执行的程序部分,其中包括对循环条件等的修改程序段,循环控制部分判断循环条件是否成立,决定是否继续循环,关键是什么?,第5章:循环控制,循环控制可以在进入循环之前进行,也可以在循环体后进行,于是形成两种结构:,“先判断、后循环”结构,“先循环、后判断”结构,循环结构程序,的设计关键是循环控制部分,循环结束的控制可以用循环次数,还可以用特定条件等,于是又有:,计数控制循环,条件控制循环,图示,DO-WHILE,结构,DO-UNTIL 结构,控制条件,初始化,循环体,Y,N,控制条件,初始化,循环体,Y,N,第5章:5.1.2 循环程序设计方法,计数控制循环,利用,循环次数,作为控制条件,易于采用循环指令,LOOP,和,JCXZ,实现,初始化:将循环次数或最大循环次数置入,CX,循环体,循环控制:用LOOP指令对CX减1、并判断是否为0,1.计数控制循环,第5章:例5.2:用二进制显示BL内容(参例3.8),mov cx,8,;CX8(循环次数),again:shl bl,1,;左移进CF,从高位开始显示,mov dl,0,;MOV指令不改变CF,adc dl,30h,;DL030HCF,;CF若是0,则DL 0,;CF若是1,则DL 1,mov ah,2,int 21h,;显示,loop again,;CX减1,如果CX未减至0,则循环,计数控制循环,先循环后判断,BX,1,2,3,4,例5.3:把 BX 中的二进制数以十六进制的形式显示在,屏幕上,mov ch,4,rotate:mov cl,4,rol bx,cl,mov al,bl,and al,0fh,add al,30h,;09 ASCII 30H39H,cmp al,3ah,jl printit,add al,7h,;AF ASCII 41H46H,printit:mov dl,al,mov ah,2,int 21h,dec ch,jnz rotate,第5章:例5.4:求数组元素的最大值和最小值,;数据段,arraydw 10,;假设一个数组,其中头个数据10表示元素个数,dw-3,0,20,900,587,-632,777,234,-34,-56,;这是一个有符号字量元素组成的数组,maxaydw?,;存放最大值,minaydw?,;存放最小值,初始化:循环次数元素个数1,循环体:逐个比较求最大、小值,循环控制:比较完所有数据,第5章:例5.4:代码段,;代码段,lea si,array,mov cx,si,;取得元素个数,dec cx,;减1后是循环次数,add si,2,mov ax,si,;取出第一个元素给AX,AX用于暂存最大值,mov bx,ax,;取出第一个元素给BX,BX用于暂存最小值,初始化,第5章:例5.4:代码段(续),maxck:,add si,2,cmp si,ax,;与下一个数据比较,jle minck,mov ax,si,;AX取得更大的数据,jmp next,minck:cmp si,bx,jge next,mov bx,si,;BX取得更小的数据,next:,loop maxck,;计数循环,mov maxay,ax,;保存最大值,mov minay,bx,;保存最小值,循环体,第5章:2.条件控制循环,条件控制循环需要利用特定条件判断循环是否结束,条件控制循环用条件转移指令判断循环条件,转移指令可以指定目的标号来改变程序的运行顺序,如果目的标号指向一个重复执行的语句体的开始或结束,便构成了循环控制结构,第5章:例5.5:显示以0结尾的字符串,;数据段,stringdb Let us have a try!,0,;代码段,mov bx,offset string,again:,mov dl,bx,cmp dl,0,jz done,;为0结束,mov ah,2,;不为0,显示,int 21h,inc bx,;指向下一个字符,jmp again,done:,条件控制循环,先判断后循环,第5章:例5.6:记录某个字存储单元数据中1的个数,;数据段,;代码段,mov bx,number,xor dl,dl,;循环初值:DL0,again:,test bx,0ffffh,;也可以用cmp bx,0,jz done,;全部是0就可以退出循环,减少循环次数,shl bx,1,;用指令shr bx,1也可以,adc dl,0,;利用ADC指令加CF的特点进行计数,jmp again,条件控制循环,先判断后循环,第5章:例5.7:十进制显示(016数值),done:cmp dl,10;判断1的个数是否小于10,jb digit,;1的个数小于10,转移,push dx,mov dl,1;1的个数大于或等于10,mov ah,2;则要先显示一个1,int 21h,pop dx,sub dl,10,digit:,add dl,0;显示个数,mov ah,2,int 21h,单分支结构,例5.8:将首地址为A的字数组从小到大排序,(气泡算法,多重循环)32,85,16,15,8,序号 地址 数,比 较 遍 数,1,2,3,4,1 A 32,2 A+2 85,3 A+4 16,4 A+6 15,5 A+8 8,32,16,15,8,85,16,15,8,32,85,15,8,16,32,85,8,15,16,32,85,第5章:5.1.3 多重循环程序设计,mov cx,5,;元素个数,dec cx,;比较遍数,loop1:mov di,cx,;比较次数,mov bx,0,loop2:,mov ax,Abx,;相邻两数,cmp ax,Abx+2,;比较,jle continue,xchg ax,Abx+2,;交换位置,mov Abx,ax,continue:,add bx,2,loop loop2,mov cx,di,loop loop1,小结:,掌握循环程序设计方法,循环结构程序,的设计关键是循环控制部分,循环结束的控制可以用循环次数,还可以用特定条件等,于是又有:,计数控制循环,条件控制循环,作业:,P193:5.5,5.9,第5章:5.2 分支程序设计,分支程序根据条件是真或假决定执行与否,判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志,转移指令Jcc和JMP可以实现分支控制,分支结构有,CASE,结构,IF-THEN-ELSE,结构,5.2.1 分支程序的结构形式,case 1 case 2 case n,?,?,case 1 case 2 case n,CASE,结构 IF-THEN-ELSE 结构,(1)逻辑尺控制,(2)条件控制,(3)地址跳跃表,(值与地址有对应关系的表),第5章:计算AX中有符号数的绝对值,cmp ax,0,jge nonneg,;条件满足(AX0),转移,neg ax,;条件不满足,求补,nonneg:,mov result,ax,;条件满足,;不恰当的分支,cmp ax,0,jl yesneg,;条件满足(AX0),转移,jmp nonneg,yesneg:,neg ax,;条件不满足,求补,nonneg:,mov result,ax,;条件满足,编写分支程序,注意选择正确的条件转移指令和转移目标地址,5.1.2 分支程序设计方法,第5章:显示BX的最高位,shl bx,1;,BX最高位移入CF标志,jc one,;,CF1,即最高位为1,转移,mov dl,30h,;CF0,即最高位为0:DL30H0,jmp two,;一定要跳过另一个分支体,one:mov dl,31h,;DL 31H1,two:mov ah,2,int 21h,;显示,可以用,JNC,替换,JC,第5章:显示BX的最高位(续),shl bx,1;,BX最高位移入CF标志,jnc one,;,CF0,即最高位为0,转移,mov dl,31h,;CF1,即最高位为1:DL31H1,jmp two,;一定要跳过另一个分支体,one:mov dl,30h,;DL 30H0,two:mov ah,2,int 21h,;显示,转换为单分支结构,第5章:显示BX的最高位(另解),mov dl,0;,DL30H0,shl bx,1;,BX最高位移入CF标志,jnc two,;,CF0,即最高位为0,转移,mov dl,1,;CF1,即最高位为1:DL31H1,two:,mov ah,2,int 21h,;显示,编写分支程序,需留心分支的开始和结束,第5章:显示BX的最高位(无分支),mov dl,0,shl bx,1;,BX最高位移入CF标志,adc dl,30h,;,CF0,DL030h030H0,;CF1,DL030h131H1,two:,mov ah,2,int 21h,;显示,第5章:大小写字母转换(参例题3.6),;如果DL是一个小写字母,则转换为大写,cmp dl,a,;小于小写字母a,不需要处理,jb disp,cmp dl,z,;大于小写字母z,也不需要处理,ja disp,sub dl,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!