过程定义伪指令PROCENDP课件.ppt
《过程定义伪指令PROCENDP课件.ppt》由会员分享,可在线阅读,更多相关《过程定义伪指令PROCENDP课件.ppt(41页珍藏版)》请在三一文库上搜索。
1、1,4.2.4 过程定义伪指令PROC、ENDP,过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),过程的最后一条指令一般是返回指令(RET)。 过程定义伪指令的格式为 PROC NEAR/FAR 类型 RET ENDP 注意:PROC和ENDP必须成对出现。,2,过程的类型有两种: NEAR表示段内调用 (默认类型) FAR 表示段间调用 调用一个过程的格式为: CALL ,3,4.2.5 宏定义伪指令,宏指令的作用:如果需要多次使用同一个程序段,可以将这个程序段定义为一个”宏指令”,然后在需要时,可简单地用宏指令名来代替这个程序段。,宏指令的格式为: MACRO 形参表 EN
2、DM,4,例: 两个数之和的宏定义和宏调用。 宏定义为: 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 DADD,RET,DADD:,CALL DADD,CALL DADD,DADD yy,DADD MACRO xx,DADD yy,DADD yy,ENDM,相同,=,或,主程序+过程(子程序),主程序+宏定义,宏扩展,宏调用
3、 与 过程(子程序)调用 异同点示意图,6,宏调用 与 过程(子程序)调用 异同点 相同点: 都是一次定义,多次调用。 不同点: 执行形式:宏命令伪指令由宏汇编程序在汇编过理中进行处理;而CALL、RET则是由CPU执行的指令。 汇编结果:宏命令伪指令汇编后被展开。 执行速度:宏命令执行速度较快(因无调用转移) 占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存单元; 使用过程可以节省代码(源程序和目标程序)占用的内存空间。,7,宏展开:汇编程序会把宏调用按宏定义展开。 例如:宏定义为: DISPLAY MACRO string LEA DX,string MOV AH,9 INT
4、 21H ENDM 程序中宏调用: DISPLAY ERROR_MESSAGE DISPLAY EXIT_MESSAGE 汇编后的结果:(带有+号的指令为宏展开后的结果) + LEA DX,ERROR_MESSAGE + MOV AH,9 + INT 21H + LEA DX,EXIT_MESSAGE + MOV AH,9 + INT 21H ,8,4.2.6 汇编结束伪指令END,汇编语言源程序的最后,要加汇编结束伪指令END,以使汇编程序结束汇编。 格式: END 表达式 END后跟的表达式通常就是程序第一条指令的标号,指示程序的启动地址(要执行的第一条指令的地址)。,9,汇编语言的一个实
5、例: EXAM.ASM,列表为指令 TITLE SUBTTL PAGE 连接伪指令 PUBLIC EXTRN INCLUDE GROUP 等等,其它伪指令:,10,4.3 DOS系统功能调用(高级调用),DOS系统功能调用的作用:系统功能调用由操作系统OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。 系统功能调用的分类:系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。 BIOS(基本输入输出系统)功能调用包括:系统测试、初始化引导、一部分中断矢量装入程序及外部设备的服务程序,它们都固化在系统主板的ROM中。它与系统硬件直接相关。 参见P410-
6、411附录C.1-2 系统功能调用的实现方式:用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。 DOS系统功能调用都是用软中断指令INT 21H来实现的。它具有90多个子功能的中断服务程序,它们通过功能号AH来区分。它不依赖于具体的硬件系统。,11,INT 2lH功能分类: 大致可以分为四个方面,即为 (1)设备管理(2)目录管理(3)文件管理 (4)内存管理、存取时间、存取终端矢量、终止程序等。 参见P411-415附录C.3,D0S系统功能调用的使用方法: AH功能号; 设置该功能所要求的其他入口参数; 执行INT 21H指令; 分析出口参数。,1
7、2,关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,1. DOS键盘功能调用,(1) 从键盘输入一个字符(功能号=1) MOV AH,1 INT 21H ,INT 21H的几个最常用的功能,13,例:程序中有时需要用户对提示做出应答。 GET_KEY: MOV AH,1 ;等待键入字符 INT 21H ;结果在AL中 CMP AL,Y ;是Y? JZ YES ;是,转YES CMP AL,N ;是N? JZ NO ;是,转NO JMP GET_KEY ;否则继续等待输入 YES: NO: ,14,(2) 输入字符串(功能号=
8、0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。 MOV AH, 0AH LEA DX, INT 21H,(预留的N1个字节的存储单元),0DH,N2,N1,N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符),用户定义的输入字符串的缓冲区格式,15,若用户键入的字符数(包括回车)定义的N1,本功能调用将不再接收新的键入,且光标不再向右移动。 例:设在数据段定义键盘缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: LEA DX,STR1 MOV AH,0AH INT 21H 此程序段最多从键盘接收
9、10个按键(包括回车)。,16,2. DOS显示功能调用,(1) 在显示器上显示一个字符(功能号=2) MOV AH, 2 MOV DL, INT 21H 例:在显示器上显示一个字符A MOV AH, 2 MOV DL, A ;或MOV DL, 41H INT 21H,17,MOV AH, 9 LEA DX, INT 21H 注意:被显示的字符串必须以$结束。,(2)显示字符串(功能号=9),18,例:在屏幕上显示:HELLO,WORLD! ;在数据段定义字符串: DATA SEGMENT STR1 DB HELLO,WORLD!$ DATA ENDS ;在代码段中进行显示输出 MOV AH,
10、9 LEA DX,STR1 INT 21H 完整的程序: HELLO.ASM,19,BIOS功能调用(低级调用),定义:基本输入输出系统,是固化在EPROM中的一组实现基本输入输出功能的子程序。 功能: 系统测试程序、初始化引导程序、一部分中断矢量装入程序及外部设备的服务程序等。BIOS与系统硬件有直接的依赖关系。 调用方法:BIOS调用通过多个软中断提供,具体的调用方法为: MOV AH, INT ,20,BIOS中的几个主要中断类型如下: INT 10H屏幕显示 INT 13H磁盘操作 INT 14H串行口操作 INT 16H键盘操作 INT 17H打印机操作 每类中断由包含许多子功能,调
11、用时通过功能号指定。 BIOS功能调用说明见p416附录D。,21,BIOS中断程序处于DOS功能调用和硬件环境之间,和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对较低。 在一些情况下既能选择DOS中断也能选择BIOS中断来执行同样的功能。例如,打印机输出一个字符的功能,可用DOS中断21H的功能5,也可用BIOS中断17H的功能0。因为BIOS比DOS更靠近硬件。一般情况下,尽可能地使用DOS功能,但在少数情况下必须使用BIOS功能。例如,BIOS中断17H的功能2为读打印机状态,DOS就没有等效的功能。 因此,对BIOS和D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 过程 定义 指令 PROCENDP 课件
链接地址:https://www.31doc.com/p-2588181.html