80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章

上传人:E**** 文档编号:89442811 上传时间:2019-05-25 格式:PPT 页数:63 大小:357KB
返回 下载 相关 举报
80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章_第1页
第1页 / 共63页
80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章_第2页
第2页 / 共63页
80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章_第3页
第3页 / 共63页
80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章_第4页
第4页 / 共63页
80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章》由会员分享,可在线阅读,更多相关《80X86 汇编语言程序设计 教学课件 ppt 作者 廖智 主编 汇编语言第4章(63页珍藏版)》请在金锄头文库上搜索。

1、第四章 汇编语言程序设计的基本技术,顺序结构、分支结构和循环结构是程序的3种基本控制结构。本章结合具体实例,介绍用3种控制结构设计汇编语言程序的基本技术和技巧,并结合这些程序设计技术介绍第二章尚未讲述的转移指令、串操作指令等。 在汇编语言程序设计中经常要利用DOS功能调用实现数据的输入/输出,本章先介绍了常用的DOS功能调用,以利于设计实用的汇编语言程序。 学习程序设计,首先要多阅读程序,这往往能取到事半功倍的效果。 本章重点: DOS功能调用、程序设计方法 本章难点:程序设计技巧(多编程),第一节 常用的DOS系统功能调用,为便于操作系统对外设进行统一的管理,DOS提供了供用户调用的系统功能

2、子程序,即DOS系统功能调用。DOS系统功能调用主要由程序INT 21H构成,其中有近百种功能供用户使用。 DOS系统功能调用的方法: 1.将被选调用功能的功能号存入AH寄存器。 2.设置被选调用功能的入口参数。 3.执行INT 21H。 4.按规定取得出口参数。,常用的DOS系统功能调用介绍: 1键盘输入一个字符 返回: AH=1 等待、回显、响应+ AL=字符的ASCII码 AH=7 等待、不回显、不响应+ AL=字符的ASCII码 AH=8 等待、不回显、响应+ AL=字符的ASCII码 AH=6 DL=0FFH时,读键盘 AL=字符的ASCII码 不等待、不回显、不响应+ AL=0(未

3、准备好) DL0FFH时, 显示DL中字符 说明:等待是等待从键盘输入一个字符;回显是送屏幕显示;响应+表示若按下的是+键,则退出程序。 例:MOV AH,1 INT 21H 功能:等待从键盘输入一个字符,将其ASCII码送入AL中,并送屏幕显示。若按下的是+键,则退出键盘输入。,2. 显示一个字符(2号功能) 格式:MOV AH,2 MOV DL,要显示字符的ASCII码 INT 21H 功能:在当前光标位置显示DL中的字符,光标右移。 例:编程显示A字符。 MOV AH,2 MOV DL,A INT 21H 3打印一个字符(5号功能) 格式:MOV AH,5 MOV DL,要打印字符的AS

4、CII码 INT 21H 功能:将DL中的字符送打印机打印。 例:编程打印1字符。 MOV AH,5 MOV DL,1 INT 21H,4. 显示字符串(9号功能) 格式:MOV AH,9 LEA DX,要显示字符串的首偏移地址 INT 21H 功能:在当前光标位置显示由DS:DX所指的、以$结束的字符串,光标右移。 例:编程显示字符串How are you!,并回车、换行。 DATA SEGMENT STR DB How are you!,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA ;数

5、据段寄存器的初始化 MOV DS,AX MOV AH,9 ;显示STR中的字符串 LEA DX,STR INT 21H MOV AX,4C00H ;结束程序,返回操作系统 INT 21H CODE ENDS END START,5.键盘输入字符串(10号功能) 格式:MOV AH,10 LEA DX,缓冲区首偏移地址 INT 21H 功能:从键盘输入字符串存入DS:DX所指的缓冲区,以回车符结束输入,同时将字符串显示在屏幕上。 注意:数据段中的缓冲区应按规定的格式定义。缓冲区的第1个字节中应设置为缓冲区的最大长度(1255,含回车符);第2个字节中将存放实际输入的字符个数(不含回车符),由系统

6、自动设置;从第3个字节开始存放实际输入的字符串,表示结束的回车符也存入缓冲区,但不计入实际字符数中。另外,中断结束后DX仍指向缓冲区的首地址。,例:键盘输入最多20个字符的缓冲区的定义及程序。 DATA SEGMENT BUF DB 21,?,21 DUP(?) ;定义缓冲区 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA ;数据段寄存器的初始化 MOV DS,AX MOV AH,10 ;键盘输入字符串 LEA DX,BUF INT 21H MOV AX,4C00H ;结束程序,返回操作系统 INT 21H CO

7、DE ENDS END START,6.结束程序返回DOS(4CH号功能) 格式:MOV AH,4CH MOV AL,返回码 INT 21H 功能:结束程序,返回操作系统。返回码为00时,表示正常结束;返回码为0FF时,表示错误结束。,第二节 顺序程序设计,程序设计的一般步骤: 1)分析问题,确定算法和数据结构。对同一个问题,解决的方法可能有多种,应根据题意,细心分析,选择最有效的算法及最合理的数据结构。 2)绘制程序的流程图。 3)根据流程图编制程序。编写时注意合理分配存储单元(变量)和寄存器。 4)静态检查后上机调试。先检查程序是否满足设计要求、有无语法错误或逻辑错误等,然后再上机调试。

8、对初学者来说,以上几个步骤中要注意的是画流程图。流程图是描述程序设计思路的图形,能形象地描述逻辑控制结构及数据的流程,清晰地表达算法的全貌,具有简洁、明了、直观等特点,可为程序的编写和调试提供方便。,流程图由特定的几何图形、指向线和简单文字说明组成,见右图: 1)起止框:用来表示程序的开始和结束。 2)处理框:用来表示一段程序或一条指令的功能。其功能应在框内进行简单、明确地说明。 3)判断框:用来表示程序将根据某种条件进行判断以决定程序的流程。判断条件写在框中,用两个出口标明是(Y)/否(N)满足条件。 4)流向线:用来表示程序的流向。 5)连接框:用来表示流程图之间的连接。当流程图较复杂,需

9、要画在几张纸上时,可用标有同一字母或数字的连接框来表示它们之间的关系。,从流程图来看,顺序结构的程序只有一个起始框、一个结束框和一至几个处理框。程序无分支、无循环,以直线方式顺序执行指令。因此,顺序程序一般比较简单。 编程:从键盘输入一个大写字母,将其转换为小写字母并显示在屏幕上。 分析:该程序先显示一段提示信息,提示用户输入AZ中的一个字母,然后等待键盘输入后,可在AL 寄存器中得到该字母的ASCII码值。由于大写字母AZ的ASCII码值为41H5AH,而小写字母az的ASCII码值为61H7AH,所以,将AL寄存器中的内容加上20H,即可得到对应的小写字母的ASCII码值,即可送屏幕显示。

10、 注意:键盘输入字符的ASCII码值在AL寄存器中,而送屏幕显示的字符的ASCII码值应设置在DL寄存器中。 程序的流程图如右图所示:,源程序如下: DATA SEGMENT ;数据段定义 INPUT DB Please input a letter(AZ):,$ DATA ENDS CODE SEGMENT ;代码段定义 ASSUME DS:DATA,CS:CODE ;段寄存器与段的对应 START: MOV AX,DATA ;数据段寄存器的初始化 MOV DS,AX MOV AH,9 ;显示提示信息 LEA DX,INPUT INT 21H MOV AH,1 ;等待键盘输入 INT 21H

11、 ADD AL,20H ;转换为小写字母 MOV DL,AL ;送屏幕显示 MOV AH,2 INT 21H MOV AX,4C00H ;结束程序返回操作系统 INT 21H CODE ENDS ;代码段结束 END START ;程序结束,注意:我们还没学分支结构,所以执行此程序时只能输入一个大写字母,否则出错,第三节 分支程序设计,顺序结构的程序简单,但完全顺序结构的程序又难以满足大多数问题的需要。实际应用中常常需要对各种条件进行判断,然后根据判断结果决定程序的运行方向。每个条件判断都有真、假两种结果,程序在此处就有两种运行方向,即产生两条分支。这种有分支的程序,称为分支程序。 在分支程序

12、中,往往是使用标志寄存器中的标志位来作为判断条件以产生分支。因此,在分支程序设计中,根据不同标志位的不同状态选用合适的转移指令是很重要的。本节先介绍转移指令,再举例说明分支程序的设计方法。,一、转移指令(19条),转移指令分为无条件转移指令和条件转移指令两类。 1、无条件转移指令:JMP 格式:JMP 目的地址 功能:使CPU无条件地转移到目的地址处执行。 该指令不能构成分支程序,但在分支程序中可用来将各分支的出口重新汇集到一起。特别是当条件转移指令的转移范围超过-128+127个存储单元时,必须要借助无条件转移指令来实现转移。,段内直接 段内间接 段间直接 段间间接,JMP SHORT/NE

13、AR PTR 标号 JMP WORD PTR 存储器寻址/寄存器寻址 JMP FAR PTR 标号 JMP DWORD PTR 存储器寻址,JMP SHORT NEXT JMP NEXT JMP WORD PTR BX JMP FAR PTR NEXT JMP DWORD PTR BX,2、条件转移指令 格式: 标号: 操作符 短标号 功能:满足条件,则转移到由短标号指出的转移地址: (IP)+位移量IP; 不满足条件,则顺序执行下一条指令,IP不变。 注意:所有的条件转移指令都是段内直接短转移,即转移范围不能超过-128+127个存储单元。所以,称短标号。 条件转移指令共有18条,分成三类。

14、,1)单测试条件转移指令:根据单个标志位的状态决定是否转移,标志寄存器中的标志CF、ZF、SF、OF、PF别为1或0,可表示10种状态,对应设置有10条指令。,例:编程计算X-Y,将结果存入RESULT中,其中X和Y为存放在X和Y单元中的字操作数。 MOV AX,X SUB AX,Y JNS SAV1 ;为正数时转移 NEG AX ;为负数时求补得绝对值 SAV1:MOV RESULT,AX ,2)无符号数条件转移指令:用于无符号数比较高低,一般跟在比较指令后。根据比较结果的不同,有高于(Above)、高于等于(Above or Equal)、低于(Below)和低于等于(Below or E

15、qual)4种状态,对应设置有4条指令。,3)有符号数条件转移指令:用于有符号数比较大小,一般跟在比较指令后。根据比较结果的不同,有大于(Greater)、大于等于(Greater or Equal)、小于(Less)和小于等于(Less or Equal)4种状态,对应设置有4条指令。,对于16位二进制数,若用来表示有符号数(补码表示),其数值次序为: 最大值7FFFH 7FFEH 正数 0001H 0000H FFFFH FFFEH 负数 最小值8000H,若用来表示无符号数,其数值次序为: 最大值FFFFH FFFEH 最小值0000H,显然,有符号数和无符号数各有自己比较大小的标准。因此,在实际应用中,应根据参加比较的操作数是有符号数还是无符号数,选择不同的条件转移指令,否则结果将出错。,当条件转移指令的转移范围超过-128+127个存储单元时,应借助无条件转移指令来实现转移。 例:下列程序段超过转移范围时 JE NEXT ;相等时转NEXT ;超过127个字节,则出错 NEXT: 应改为: JNE NAB ;不相等时转NAB JMP NEXT ;相等时转NEXT NAB: NEXT: ,二、分支程序设计举例,分支结构程序有两种形式:两分支和多分支。 不管哪种形式,都有两个共同特点: 1)运行方向是向前的。 2)在某种确定条件下,只能执行多分

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

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

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