




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 循环与分支程序设计1教学目的:掌握DOS系统功能调用的字符I/O及微型汇编语言程序分析和设计方法。2教学要求: 会使用DOS系统功能调用输入输出字符及字符串 掌握汇编语言的顺序、分支、循环程序的设计。3教学重点:循环、分支程序的设计。4掌握难点:循环程序设计分支程序设计5教学进程安排:P160P1926教学方法:课堂讲授7教学内容摘要:5.1 DOS系统功能调用-字符I/O5.1.1 DOS系统功能调用表5.1 DOS系统功能调用-字符I/OAH功能调用参数返回参数1H从键盘输入一个字符并回显在屏幕上 AL=字符2H在显示器上显示一个字符DL字符0AH键盘输入到缓冲区DS:DX=缓冲区首址(DS:DX)=缓冲区最大字符数(DS:DX+1)=实际输入的字符数09H显示字符串DS:DX=串地址字符串以$结尾AL=字符4CH带返回码终止,返回到DOSAL=返回码5.1.2 DOS系统功能调用指令格式1、输入单个字符(AH=01H)格式: mov ah,01h int 21h出口参数:al二进制 . ;5的ASCII码 35h-05h2、输出单个字符(AH=02H)格式: mov ah,02h int 21h入口参数:dl-输出字符的ASCII码例:输出3+5的和8 . mov al,3 ;al-一个加数 add al,5 ;两数相加 mov dl,al ;dl-和 add dl,30h ;ASCII码-和的二进制 mov ah,2 ;设置功能号 int 21h ;输出字符83、输入字符串(AH=0AH)格式: mov ah,0Ah int 21h入口参数: ds:dx-缓冲区首地址 (ds:dx)=设计的最大字符数出口参数: (ds:dx+1)=实际输入的字符数例:输入一个字符串(最多20个字符) buf db 20 db ? db 20 dup(?) . mov ax,seg buf ; mov ds,ax ; lea dx,buf ;等同于mov dx,offset buf mov ah,0Ah ;设置功能号 int 21h ;4、输出字符串(AH=09H)格式: mov ah,09h int 21h入口参数: ds:dx-字符串首地址 字符串必须用$作为结束符例:输出一个字符串 str1 db computer.,0dh,0ah,$ str2 db 3+5=,$ . mov ax,seg str1 ;取str1的段地址 mov ds,ax lea dx,str1 ;取str1的偏移地址 ;等同于mov dx,offset str1 mov ah,09h ;设置功能号 int 21h ;输出computer. lea dx,str2 ;取str2的偏移地址 ;等同于mov dx,offset str2 mov ah,09h ;设置功能号 int 21h ;输出 3+5=5、返回DOS(AH=4CH)格式: mov ah,4ch int 21h例:code segment assume cs:code . mov ah,4ch ;设置功能号 int 21h ;系统功能调用 code ends end5.2 汇编语言程序设计结构5.2.1 汇编语言程序设计的基本结构三种基本结构:顺序结构循环结构分支结构 图5.1 顺序结构图 图5.2 循环结构图 图5.3 分支结构图5.3 循环程序设计5.3.1 循环程序结构循环程序结构可以总结为两种结构形式,如图5.4所示。1. DO_WHILE结构2. DO_UNTIL结构 DO WHILE结构 DO UNTIL结构 图5.4 循环程序的结构形式构成循环程序的三部分:设置循环的初始状态循环体循环控制部分5.3.2 循环程序设计方法例:试编制一个程序把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。例:在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一程序:在数组中查找该数,如果找到此数,则把它从数组中删除。5.3.3 多重循环程序设计循环可以有多重结构。多重循环程序设计的基本方法和单重循环程序设计是一致的,应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。另外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置。下面举例加以说明。【例5-15】有一个首地址为A的N字数组,编制程序使该数组中的数按照从大到小的次序排序,采用起泡排序算法完成。5.3.4 串操作程序【例5-16】位串插入程序。程序要求把一个小于32位的位串插入存储器内的一个大位串中的任意位置中去。欲插入的位串存放在BITSG中,它是一个右对齐的位串,可称其为子串,其长度用BITSG_LENGTH为符号名的=伪操作来说明。大位串存放在STRING中,并为要插入的子串准备了一个符号名为SG_END的双字单元。5.4 分支程序设计5.4.1 分支程序的结构形式可以有两种形式,如图5.5所示。(1) IF_THEN_ELSE结构 (2) CASE结构图5.5 分支程序结构5.4.2 分支程序设计方法程序的分支一般用条件转移指令来产生,利用转移指令不影响条件码的特性,连续地使用条件转移指令使程序产生了多个不同的分支,而对于数组中的每一个数,它只能是多个分支中的某一个。例:在附加段中,有一个按从小到大顺序排列的无符号数数组,其首地址存放在DI寄存器中,数组中的第一个单元存放着数组长度,在AX中有一个无符号数,要求在数组中查找(AX),如找到,则使CF=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。例:折半查找算法程序5.4.3 跳跃表法分支程序的两种结构形式都可以用上面所述的方法来实现。此外,在实现CASE结构时,还可以使用跳跃表法,使程序能根据不同的条件转移到多个程序分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔全科基础知识培训课件
- 口腔产品科普知识培训课件
- 培训课件标准化
- 口服药PDCA课件教学课件
- 2025年度企业节能减排项目合作环境责任共担协议范本
- 2025年城市公共交通车辆收费员薪资待遇升级劳动合同
- 培训行业专业知识课件
- 2025年北京纯电动新能源车指标租赁合作协议
- 2025年度国际车展场地租赁与全方位安全保障服务协议
- 培训营养健康知识的目的
- 温通刮痧技术操作流程图及考核标准
- 教师如何使用AI开展教学DeepSeek使用指南人工智能 课件
- 《企业竞争情报》课件
- 排水证授权委托书范本
- 《矿山隐蔽致灾因素普查规范》解读培训
- 《商务跨文化交际》课件
- 缺血性心肌病病人护理查房
- 《社保新政策解》课件
- 《基于UG的汽车机加件工时计算及系统开发》
- 房产代理转让合同范例
- 2023银行首届夏日音乐会系列(天籁之音乐动一夏主题)活动策划方案-106正式版
评论
0/150
提交评论