微机原理第四章 课件

上传人:我*** 文档编号:141686249 上传时间:2020-08-11 格式:PPT 页数:38 大小:135.50KB
返回 下载 相关 举报
微机原理第四章 课件_第1页
第1页 / 共38页
微机原理第四章 课件_第2页
第2页 / 共38页
微机原理第四章 课件_第3页
第3页 / 共38页
微机原理第四章 课件_第4页
第4页 / 共38页
微机原理第四章 课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《微机原理第四章 课件》由会员分享,可在线阅读,更多相关《微机原理第四章 课件(38页珍藏版)》请在金锄头文库上搜索。

1、1,4.2.4 过程定义伪指令PROC、ENDP,过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),过程的最后一条指令一般是返回指令(RET)。 过程定义伪指令的格式为 PROC 类型 RET ENDP 注意:PROC和ENDP必须成对出现。,2,过程的类型有两种: NEAR(默认类型)表示段内调用 FAR表示段间调用 调用一个过程的格式为: CALL ,3,4.2.5 宏定义伪指令,如果需要多次使用同一个程序段,可以将这个程序段定义为一个”宏指令”,然后在需要时,可简单地用宏指令名来代替这个程序段。,指令的格式为: MACRO 形参表 ENDM,4,例:两个数之和的宏定义和宏调

2、用。 宏定义为: DADD MACRO X,Y,Z MOV AX,X ADD AX,Y MOV Z,AX ENDM,X、Y、Z是形式参数。调用宏DADD时可写为: DADD DATA1,DATA2,SUM DATA1,DATA2,SUM是实际参数,由它们替换定义中的X、Y、Z。,5,宏调用与过程(子程序)调用都是一次定义,多次调用。它们之间的差别是: 执行形式:宏命令伪指令由宏汇编程序在汇编过理中进行处理,而CALL、RET则是由CPU执行的指令。 汇编结果:宏命令伪指令汇编后被展开。 执行速度:宏命令执行速度较快(因无调用转移) 占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存

3、单元。使用过程可以节省代码占用的内存空间。,6,宏展开:汇编程序会把宏调用按宏定义展开。 例如:宏定义为: Display MACRO string LEA DX,string MOV AH,9 INT 21H ENDM 程序中宏调用: DISPLAY ERROR_MESSAGE DISPLAY EXIT_MESSAGE 汇编后的结果:(带有+号的指令为宏展开后的结果) + LEA DX,ERROR_MESSAGE + MOV AH,9 + INT 21H + LEA DX,EXIT_MESSAGE + MOVAH,9 + INT 21H ,7,4.2.6 汇编结束伪指令END,汇编语言源程序

4、的最后,要加汇编结束伪指令END,以使汇编程序结束汇编。 格式: END 表达式 END后跟的表达式通常就是程序第一条指令的标号,指示程序的启动地址(要执行的第一条指令的地址)。,8,汇编语言的一个实例: EXAM.ASM,9,4.3 DOS系统功能调用介绍,系统功能调用由OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。 系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。 用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。 在DOS系统中,功能调用都是用软中断指令INT 21H来实现的。,10,INT 2l

5、H功能大致可以分为四个方面: 设备管理、目录管理、文件管理和其它。 参见P411页附录C.3,D0S系统功能调用的使用方法如下: AH功能号; 设置该功能所要求的其他入口参数; 执行INT 21H指令; 分析出口参数。 以下介绍INT 21H的几个最常用的功能。,11,关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,1. DOS键盘功能调用,(1) 从键盘输入一个字符(功能号=1) MOV AH,1 INT 21H ,12,例:程序中有时需要用户对提示做出应答。 GET_KEY: MOV AH,1;等待键入字符 INT 21

6、H;结果在AL中 CMP AL,Y ;是Y? JZ YES ;是,转YES CMP AL,N ;是N? JZ NO ;是,转NO JMP GET_KEY;否则继续等待输入 YES: NO: ,13,(2) 输入字符串(功能号=0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。 MOV AH, 0AH LEA DX, INT 21H,(预留的N1个字节的存储单元),0DH,N2,N1,N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符),用户定义的输入字符串的缓冲区格式,14,若用户键入的字符数(包括回车)定义的N1,本功能调用将不再接收新的键入,且光

7、标不再向右移动。 例:设在数据段定义键盘缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: LEA DX,STR1 MOV AH,0AH INT 21H 此程序段最多从键盘接收10个按键(包括回车)。,15,2. DOS显示功能调用,(1) 在显示器上显示一个字符(功能号=2) MOV AH, 2 MOV DL, INT 21H 例:在显示器上显示一个字符A MOV AH, 2 MOV DL, A ;或MOV DL, 41H INT 21H,16,MOV AH, 9 LEA DX, INT 21H 注意:被显示的字符串必须以$结束。,(2)显示

8、字符串(功能号=9),17,例:在屏幕上显示:HELLO,WORLD! ;在数据段定义字符串: DATA SEGMENT STR1 DB HELLO,WORLD!$ DATA ENDS ;在代码段中进行显示输出 MOV AH,9 LEA DX,STR1 INT 21H 完整的程序: HELLO.ASM,18,附:BIOS功能调用,BIOS:基本输入输出系统,是固化在EPROM中的一组实现基本输入输出功能的子程序。 BIOS调用通过多个软中断提供,调用方法为: MOV AH, INT BIOS中的几个主要中断类型如下: INT 10H屏幕显示 INT 13H磁盘操作 INT 14H串行口操作 I

9、NT 16H键盘操作 INT 17H打印机操作 每类中断由包含许多子功能,调用时通过功能号指定。 BIOS功能调用说明见p416附录D。,19,4.4 汇编语言程序设计基础,4.4.1 概述 1.程序质量(自学) 2.汇编语言程序设计的步骤: 1-根据实际问题抽象出数学模型,确定算法 2-画出程序框图(流程图) 3-分配内存工作单元和寄存器 4-根据框图编写源程序,存成.ASM文件 5-对源程序汇编,生成.OBJ目标文件 6-把.OBJ文件连接成.EXE执行文件 7-运行、调试 3.源程序的基本结构:顺序、分支、循环、过程,20,(1)用方框表示工作框,框中用简明语言标明要完成的功能,(2)

10、用菱形框表示判断框,框中标明比较、判断和条件,如何绘制程序框图(流程图)?,N,Y,?,21,(4)各框之间用直线连起来表示程序走向。,框中标明子程序名字(入口参数等),(3)用 框表示调用子程序或过程。,流程图的例子FlowChart.doc,22,汇编语言上机过程,Y,Y,Y,N,N,N,有错 ?,有错 ?,有错 ?,结束,汇 编,输入(修改)源程序,连 接,运 行,查 错,开始,用EDIT,NOTEPAD等任何文本编辑器。源程序存为.ASM文件,用MASM宏汇编程序进行汇编。 汇编后生成.OBJ目标文件。 命令格式:MASM ;,用LINK连接程序进行连接。 连接后生成.EXE可执行文件

11、。 命令格式:LINK ;,用TD、DEBUG等调试程序进行调试。 命令格式:TD ,23,标号:,条件满足 ?,处理,4.4.2 顺序程序(p175-176,自学) 4.4.3 分支程序,N,Y,IFTHEN结构,程序结构: 测试/比较指令 (TEST/CMP) 条件转移指令 (Jx 标号) 处理体 标号: 其他指令 ,24,程序结构: TEST/CMP指令 Jx 标号1 处理体P1 JMP 标号2 标号1: 处理体P2 标号2:其他指令 ,条件满足 ?,处理P1,处理P2,标号1:,标号2:,条件1,条件2,IFTHENELSE结构,25,标号1:,条件1成立 ?,P1,N,Y,CASE结

12、构,程序结构: TEST/CMP指令(测试条件1) Jx 标号1 ;不满足转标号1 处理体P1 JMP 标号n+1 标号1:TEST/CMP指令(测试条件2) Jx 标号2 ;不满足转标号2 处理体P2 JMP 标号n+1 标号2:TEST/CMP指令(测试条件3) Jx 标号3 ;不满足转标号3 处理体P3 JMP 标号n+1 标号3:TEST/CMP指令(测试条件4) 标号n+1:(公共出口),条件2成立 ?,条件n成立 ?,Pn+1,标号2:,标号n:,标号n+1:,P2,Pn,N,N,Y,Y,例:P178,例4-14,统计成绩。流程图中虚线框内,26,4.4.4 循环程序,1DOUNT

13、IL 结构 先执行,再判断条件。工作部分至少执行一次。,初始化,循环体,循环控制,继续循环?,Y,N,27,2. DO WHILE 结构 先判断条件,再执行。工作部分有可能一次都不执行。,初始化,循环体,循环控制,继续循环?,Y,N,28,注意:循环可以嵌套(多重循环),但多个循环体之间不能交叉,控制条件不能混淆。 例:P179例4-15,数据从大到小排序。 冒泡法实例:3,7,2,8,68,7,6,3,2。 内外两层循环; 每轮内循环使一个最小的数沉底,因为最小的数沉底,下轮内循环就不用再比较最底下的数,所以内循环的循环次数每一轮比上一轮要逐次减1; 外循环用于控制有多少轮内循环。若有n个数

14、据,则外循环次数为n-1。,BSORT.ASM,29,掌握以下几点: 调用子程序用CALL指令,返回调用程序用RET指令。 子程序允许嵌套调用。 进入子程序后首先要保护主程序的运行状态(标志位)和使用的寄存器内容(称为保护现场),退出子程序前要恢复现场。 调用前要预先确定子程序中要使用哪些寄存器,并定义入口参数和出口参数。参数传递可利用寄存器、存储单元或堆栈(要用BP寻址)。,4.4.5 子程序设计举例,30,例1: 二进制数(0-F)转换成ASCII(0-F)的子程序。 BIN2ASC PROC ;要转换的数在AL的低四位 ;转换结果仍在AL中 CMP AL, 9 JA A2F ADD AL

15、, 30H JMP DONE A2F: ADD AL, 37H DONE: RET BIN2ASC ENDP 调用方法:(在主程序中) MOV AL, 0CH CALL BIN2ASC (AL中有0CH的ASCII码43H, C),31,例2. 字符串处理程序设计 此例取自p182例4-17。 对字符串进行操作时,往往需要确定它的长度。通常字符串结束标志以CR或$作标志。所以可以用扫描CR或$的方法计算出串长。 在计算串长时,应注意串长一般应小于255个字节。 以下是流程图和源程序。,32,简化的流程图:,开始,求串长,串长256?,显示串长高位,显示串长低位,结束,Y,警告: 太长,求串长,当前字符是?,搜索CR字符 同时指针增量,返回,N,串长加1,存串长,N,找到?,N

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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