汇编语言程序设计》第5章基本汇编语言程序设计

上传人:san****019 文档编号:70748880 上传时间:2019-01-18 格式:PPT 页数:73 大小:799.01KB
返回 下载 相关 举报
汇编语言程序设计》第5章基本汇编语言程序设计_第1页
第1页 / 共73页
汇编语言程序设计》第5章基本汇编语言程序设计_第2页
第2页 / 共73页
汇编语言程序设计》第5章基本汇编语言程序设计_第3页
第3页 / 共73页
汇编语言程序设计》第5章基本汇编语言程序设计_第4页
第4页 / 共73页
汇编语言程序设计》第5章基本汇编语言程序设计_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《汇编语言程序设计》第5章基本汇编语言程序设计》由会员分享,可在线阅读,更多相关《汇编语言程序设计》第5章基本汇编语言程序设计(73页珍藏版)》请在金锄头文库上搜索。

1、第五章,基本汇编语言程序设计,第5章基本汇编语言程序设计,5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计,第5章基本汇编语言程序设计,5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计,5.1 汇编语言程序的设计步骤,汇编语言程序设计的基本步骤 程序的基本结构,5.1 汇编语言程序的设计步骤,一个良好的程序应该满足以下要求: (1)程序要结构化,简明、可读性好,便于调试。 (2)执行速度快,程序代码效率高。 (3)占用存储空

2、间少。,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,汇编语言程序设计的基本步骤: 1.分析题意,确定数据结构和算法 2.根据算法绘制程序流程图 3.根据流程图编写程序 4.调试程序,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,例5.1 在100个字的无符号整数字中找出最大数。,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,1.分析题意,确定数据结构和算法 (1)初始化,建立一个数据指针指向数据区的首地址; (2)将第一个数存入寄存器(如AX)中; (3)调整数据指针,使其指向下一个数; (4)将数据指针所指的数与寄存器AX的内容相比较,如果该数较大

3、,则将其存入AX,否则丢掉; (5)重复执行(3)、(4)两步,直至将数组中的数据全部处理完。,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,2.根据算法绘制程序流程图,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,3.根据流程图编写程序,汇编语言程序设计的基本步骤,5.1 汇编语言程序的设计步骤,4.调试程序 两个阶段: 静态检查 上机运行调试,程序的基本结构,5.1 汇编语言程序的设计步骤,1.顺序结构 2.分支结构 3.循环结构,程序的基本结构,5.1 汇编语言程序的设计步骤,1.顺序结构,程序的基本结构,5.1 汇编语言程序的设计步骤,2.分支结构,程序的基

4、本结构,5.1 汇编语言程序的设计步骤,3.循环结构,第5章基本汇编语言程序设计,5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计,5.2 顺序结构的程序设计,例5.2 将一字数据从数据段的某个单元传送到另一个单元。,分析:因为8086.8088指令系统不允许在存储器与存储器之间直接传送数据,所以必须借助CPU内部的通用寄存器AX、BX、CX、DX等,先将存储单元中的字数据传送到寄存器,再将其由寄存器传送到存储器的另一个字单元。,5.2 顺序结构的程序设计,5.2 顺序结构的程序设计,例5.3 将键盘输入的小

5、写字母用大写字母显示出来。,分析:本题目涉及三个知识点: (1)输入:在8086.8088指令系统中,字符的输入是由DOS21H中断的01H子功能来实现的,命令序列如下: MOV AH,01H INT 21H 其作用是从键盘接收一个字符并将该字符的ASCII码存入寄存器AL中。,5.2 顺序结构的程序设计,(2)输出:在8086.8088指令系统中,字符的输出是由DOS21H中断的02H子功能来实现的,命令序列如下: MOV AH,02H INT 21H 其作用是将寄存器DL中所存放的字符进行显示输出,故在执行该命令序列之前,应先将被输出字符的ASCII码存入DL中。,(3)小写字母向大写字母

6、的转换:将小写字母的ASCII码值减去20H即可得到对应大写字母的ASCII码值。,5.2 顺序结构的程序设计,第5章基本汇编语言程序设计,5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计,5.3 分支结构的程序设计,双分支结构的程序设计 多分支程序设计,双分支结构的程序设计,5.3 分支结构的程序设计,框架结构: 先行指令 JXX 标号1 指令序列1 JMP 标号2 ;转到出口 标号1:指令序列2 标号2:,功能:JXX条件成立时转到标号1处执行指令序列2,否则执行指令序列1,然后跳转到标号2的程序出口处。

7、,双分支结构的程序设计,5.3 分支结构的程序设计,例5.4 比较两个带符号数的大小,把大数存入MAX单元。,分析:比较两数可用CMP指令,而带符号数的比较结果可由标志位SF、OF来确定,选用的转移指令应为JG、JL等。,5.3 分支结构的程序设计,双分支结构的程序设计,5.3 分支结构的程序设计,例5.5 比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH,若不相同则显示NO MATCH。,分析:比较两个字符串可用指令REPE CMPSB,比较后如果ZF=1,则两个字符串完全相同,如果ZF=0,则两个字符串不完全相同。字符串的输出是由DOS21H中断的0

8、9H子功能来实现的,该子功能要求将被输出的字符串存入数据段中,存储时以结束,输出时将其首地址存入DX寄存器。,5.3 分支结构的程序设计,多分支序设计,5.3 分支结构的程序设计,例5.6 比较两个无符号整数A和B,若AB则输出“”,若AB则输出“”,若A=B则输出“=”。,分析:根据题意,本题应有三个分支:AB、AB和A=B,各分支均可用条件转移指令来实现。,5.3 分支结构的程序设计,多分支序设计,5.3 分支结构的程序设计,例5.7 已知两个整数字节变量A和B,试编写完成下列操作的程序: (1)若两个数中只有一个是奇数,则将奇数存入ABUF单元,偶数存入BBUF单元中。(2)若两个数均为

9、奇数,则两数分别加1,并存回原变量处。(3)若两个数均为偶数,则两变量不变。,分析:在计算机中,数据的奇偶性取决于最低位的值,0为偶数,1为奇数。因此可采用位测试的办法来判断。首先判断A与B是否同种类型的数,不是同种类型,再判断B是否为偶数,由B的类型可确定A的类型,再按要求(1)进行处理;同样,当A、B是同种类型时,也判断B是否为偶数,再按要求(2)或(3)进行处理。判断A、B两数是否同类,可使用XOR指令将两数异或,若结果的最低位为0,则两数同类。,多分支程序设计,5.3 分支结构的程序设计,5.3 分支结构的程序设计,DATA SEGMENT ABUF DB A BBUF DB B DA

10、TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,ABUF MOV BL,BBUF XOR AL,BL TEST AL,01H ;测试是否同类 JZ CLASS ;是同类,转CLASS TEST BL,01H ;不是同类,测试B是否偶数 JZ EXIT ;B是偶数,满足要求(1),转EXIT XCHG BL,ABUF ;B不是偶数,按要求(1),交换两数 MOV BBUF,BL JMP EXIT ;转EXIT CLASS:TEST BL,01H ;同类时,测试B是否偶数 JZ EXIT

11、;B是偶数,满足要求(3),转EXIT INC ABUF ;B不是偶数,按要求(2),两数同时加1 INC BBUF EXIT:MOV AH,4CH INT 21H CODE ENDS END START,第5章基本汇编语言程序设计,5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计,5.4 循环结构的程序设计,循环程序的结构 循环结构的程序设计方法,循环程序的结构,5.4 循环结构的程序设计,循环程序都可由如下三部分组成: 1.设置循环的初始状态 2.循环体 3.循环控制部分,循环程序的结构,5.4 循环结构

12、的程序设计,1.设置循环的初始状态 循环程序的初始状态,应该在进入循环体之前设置,其目的是保证循环体能够正常运行和结束,具体内容包括设置循环次数的计数值或其他能使循环结束的条件的初值,以及为循环体正常工作而建立的初始状态等。,循环程序的结构,5.4 循环结构的程序设计,2.循环体 循环体是整个循环程序中需要重复执行的程序段,即循环工作的主体。它由循环的工作部分和修改部分组成。循环的工作部分是为完成程序功能而设计的主要程序段,循环的修改部分则是为保证循环体在执行有限次后能够正常结束而设置的程序段,一般是对循环控制参数进行修改,而该参数的变化通常是有规律的。,循环程序的结构,5.4 循环结构的程序

13、设计,3.循环控制部分 每个循环程序必须选择一个循环控制条件来控制循环的运行和结束,而合理地选择这个控制条件就成为循环程序设计的关键问题。,循环程序的结构,5.4 循环结构的程序设计,(1)循环次数已知,用循环次数作为循环的控制条件 MOV CX,N 标号: LOOP 标号,循环程序的结构,5.4 循环结构的程序设计,(2)循环次数已知,但也有可能使用其他特征或条件来使循环提前结束 MOV CX,N 标号: LOOPZ.LOOPNZ 标号,循环程序的结构,5.4 循环结构的程序设计,(3)循环次数是未知的,这时就要根据具体情况找出控制循环结束的条件 直到型循环: 标号: 影响条件标志位的指令

14、JXX 标号,循环程序的结构,5.4 循环结构的程序设计,当型循环: 标号2: 影响条件标志位的指令 JXX 标号1 JMP 标号2 标号1:,循环程序的结构,5.4 循环结构的程序设计,设计循环程序的步骤: (1)分析问题,确定循环次数是已知的还是未知的,是否有提前结束循环的情况,从而决定选用哪一种循环最恰当; (2)根据循环变化的规律,确定适合于循环设计的工作部分; (3)考虑循环参数的修改部分,分析并确定参数的每次修改方法; (4)设置循环控制部分及循环参数的置初值部分,可根据循环程序控制方法的不同,来设置循环参数的初值。,循环结构的程序设计方法,5.4 循环结构的程序设计,两种基本模式

15、: 单循环结构 多重循环结构,循环结构的程序设计方法,5.4 循环结构的程序设计,1.单循环结构 2.多重循环结构,循环结构的程序设计方法单循环结构,5.4 循环结构的程序设计,例5.8 编程计算10个整数之和(不考虑溢出),并将结果存入SUM中。,分析:这10个整数可存放在数组ARRAY中,从而将题目转化为对数组元素求和,根据数组元素下标的变化规律来设计循环,本题中循环次数固定为10次,因此可使用LOOP指令。,5.4 循环结构的程序设计,循环结构的程序设计方法单循环结构,5.4 循环结构的程序设计,例5.9 在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。

16、,分析:要测出Y中1的个数就应逐位测试,一个比较简单的办法是用移位的方法把各位依次移到最高位,然后根据最高有效位是否为1来计数。循环的结束可以用计数值16来控制,但考虑到数Y的末几位全为0(如1011010000000000B)的特殊情况,循环应能提前结束,且可能为零次循环,为了提高程序的执行效率,应采用当型结构,以测试数是否为0来作为结束条件。,5.4 循环结构的程序设计,循环结构的程序设计方法单循环结构,5.4 循环结构的程序设计,例5.10 有一串20个字符的字符串存储于首地址为STRING的存储区中,要求在字符串中查找空格(ASCII码为20H),如果找到则输出“FOUND SPACE”,否则输出“NOT FOUND SPACE”。,分析:本题可以使用查找字符串的指令REPNZ SCASB来实现,也可以用循环指令来实现。在此,我们采用循环指令的方法用CMP指令逐个字符进行查找。根据题意,有两种可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号