《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP

上传人:au****y 文档编号:53969925 上传时间:2018-09-06 格式:PPT 页数:66 大小:505.50KB
返回 下载 相关 举报
《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP_第1页
第1页 / 共66页
《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP_第2页
第2页 / 共66页
《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP_第3页
第3页 / 共66页
《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP_第4页
第4页 / 共66页
《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP》由会员分享,可在线阅读,更多相关《《微型计算机系统原理及应用》过程定义伪指令PROC、ENDP(66页珍藏版)》请在金锄头文库上搜索。

1、1,3.2.4 过程定义伪指令PROC、ENDP,过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),过程的最后一条指令一般是返回指令(RET)。过程定义伪指令的格式为PROC NEAR/FAR RETENDP注意:PROC和ENDP必须成对出现。,2,过程的类型有两种:NEAR(默认类型)表示段内调用FAR表示段间调用调用一个过程的格式为:CALL ,3,例1: 二进制数(0-F)转换成ASCII(0-F)的子程序。 BIN2ASC PROC NEARCMP AL, 9 ;子程序入口参数为ALJA A2FADD AL, 30HJMP DONEA2F: ADD AL, 37H ;子

2、程序出口参数ALDONE: RET BIN2ASC ENDP 调用方法:(在主程序中)MOV AL, 0CH ; (给AL装载入口参数,如0CH)CALL BIN2ASC(子程序返回后,运行结果在AL中,AL=43H),4,3.2.5 宏定义伪指令,如果需要多次使用同一个程序段,可以将这个程序段定义为一个”宏指令”,然后在需要时,可简单地用宏指令名来代替这个程序段。,宏定义的格式为:宏指令名 MACRO 形式参数宏定义体ENDM 宏调用的格式: 宏指令名 【实际参数】,5,例:两个数求和的宏定义和宏调用。宏定义为: DADD MACRO X,Y,ZMOV AX,XADD AX,YMOV Z,A

3、XENDM,X、Y、Z是形式参数。 宏调用 DADD DATA1,DATA2,SUM DATA1,DATA2,SUM是实际参数,由它们替换定义中的X、Y、Z。,6,编译时,宏调用处将插入相应宏体所包含的程序。 如上例 DADD DATA1,DATA2,SUM+ MOV AX,DATA1+ ADD AX,DATA2+ MOV SUM,AX,宏展开:汇编程序会把宏调用按宏定义展开。,7,例如:宏定义为:Display MACRO stringLEA DX,stringMOV AH,9INT 21HENDM程序中宏调用:DISPLAY ERROR_MESSAGEDISPLAY EXIT_MESSAG

4、E汇编后的结果:(带有+号的指令为宏展开后的结果)+ LEA DX,ERROR_MESSAGE+ MOV AH,9+ INT 21H+ LEA DX,EXIT_MESSAGE+ MOV AH,9+ INT 21H,8,宏调用与过程调用的区别宏调用与过程(子程序)调用都是一次定义,可多次调用。它们之间的差别是: 执行形式:宏调用由宏汇编程序在汇编过理中进行处理,而过程调用是使用CALL、RET由CPU执行的指令。 汇编结果:宏命令伪指令汇编后被展开。 执行速度:宏命令执行速度较快(因无调用转移) 占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存单元。使用过程可以节省代码占用的内存空

5、间。,9,3.2.6 汇编结束伪指令END,汇编语言源程序的最后,要加汇编结束伪指令END,以使汇编程序结束汇编。 格式: END 表达式END后跟的表达式通常就是程序第一条指令的标号。,10,汇编语言的一个实例: hello.asmdata SEGMENTHello DB Hello, world!,$ data ENDS prog SEGMENTASSUME CS:prog,DS:data start: MOV AX,dataMOV DS,AXLEA DX,hello ;取字符串首地址MOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;退回DOS prog E

6、NDSEND start,11,3.3 DOS系统功能调用介绍,DOS 软中断INT n,可调用一个相应的中断服务程序。调用分为两种,一种称为DOS功能调用,另一种称为BIOS功能调用。n=05H-1FH时,为BIOS中的服务程序调用, n=20H-3FH时,为DOS中的服务程序调用,见P147。 其中INT 21H为DOS系统功能调用。,12,INT 2lH 功能大致可以分为四个方面: 设备管理、目录管理、文件管理和其它。,D0S系统功能调用的一般使用方法如下: AH功能号; 设置该功能所要求的入口参数; 执行INT 21H指令;以下介绍INT 21H的几个最常用的功能。,13,1. DOS

7、键盘输入功能调用,(1) 从键盘输入一个字符(功能号=1)MOV AH,1INT 21H注:不需要入口参数,出口参数在AL中。 ,14,例:根据键盘输入,若为Y,执行标号为YES的分支;若为N,执行标号为NO的分支;若输入其他符号,则重新输入。GET_KEY: MOV AH,1 ;等待键入字符INT 21H ;结果在AL中CMP AL,Y ;是Y?JZ YES ;是,转YESCMP AL,N ;是N?JZ NO ;是,转NOJMP GET_KEY ;否则继续等待输入YES: NO: ,例、内存数据段定义三个字单元,BUFF1单元预存9A07H,BUFF2单元预存357DH,SUM单元空间预留。

8、根据键盘输入字符情况做如下工作:若输入A,则将两预存内容相加,结果存入SUM;若键盘输入B,将两预存内容相减,结果存入SUM;若键盘输入其他字符,则SUM存入N。,15,16,(2) 键盘输入字符串(功能号=0AH)此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。调用方法: MOV AH, 0AHLEA DX, INT 21H 注:使用输入字符串(功能号=0AH)系统功能调用之前,必须按下列格式首先定义字符串存储缓冲区。BUFF DB N, ?, N DUP(?) 其中,N为准备输入字符个数。?为实际输入字符个数累计预留存储单元,N DUP(?)为 键盘输入字符串预留存储单元。,17

9、,例:设在数据段定义键盘缓冲区如下:STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为:LEA DX,STR1MOV AH,0AHINT 21H此程序段最多从键盘接收10个按键(包括回车键ODH)。,18,10,5,H,E,L,L,STR1,O,ODH,将会在缓冲存储区的第3个单元开始顺序存放键盘输入的字符串,包括最后回车键字符0DH,统计输入字符个数自动放入第2单元,键盘输入个数不包括回车键!例:,例、从键盘随机输入不多余100个 A-Z间的字母,并放到预先定义存储区,然后将输入的字符转换成小写,存入后序存储区。,19,20,2. 屏幕显示功能调用,(1)

10、在显示器上显示一个字符(功能号=2)MOV AH, 2MOV DL, INT 21H例:在显示器上显示一个字符AMOV AH, 2MOV DL, AINT 21H,例、定义字节型存储器存储器A和B,并分别预置内容,比较大小,将比较结果在显示器上显示。显示格式:AB或AB或A=B,21,22,MOV AH, 9LEA DX, INT 21H 注意:使用显示字符串(功能号=9)系统功能之前,被显示的字符串必须预先按下列格式定义,且以$结束。BUFF DB 字符串,$,(2)显示字符串(功能号=9),23,例:在屏幕上显示:HELLO,WORLD! ;在数据段定义字符串:DATA SEGMENTST

11、R1 DB HELLO,WORLD!$DATA ENDS ;在代码段中进行显示输出MOV AH,9LEA DX,STR1INT 21H,上述问题完整源程序,data SEGMENTHello DB Hello, world!,$ data ENDS prog SEGMENTASSUME CS:prog,DS:data start: MOV AX,dataMOV DS,AXLEA DX,hello ;取字符串首地址MOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;退回DOS prog ENDSEND start,24,25,3 返回DOS操作系统功能调用,调用方法

12、: MOV AH,4CH INT 21H,3.4 BIOS显示器输出调用 INT 10H,有关显示输出的DOS调用(INT 21H)功能较弱,而BIOS调用(INT 10H)的功能却很强。 BIOS调用:法与DOS调用类似,过程如下:,26,置功能号给AH,置入口参数,执行INT 10H,(1)清屏功能号6方法:MOV AH, 6MOV AL , 0 MOV CH, 0MOV CL ,0MOV DH ,24MOV DL , 79MOV BH ,7INT 10H 关于入口参数部分参见391页附录5.,27,(2)设置光标位置功能号2方法: MOV AH ,2MOV DH , 行值MOV DL,

13、列值MOV BH , 页号INT 10H 关于入口参数部分参见391页附录5.,28,(3)显示字符功能号9 方法: MOV AH ,9MOV AL , 欲显示字符MOV BH , 页号MOV BL ,属性值INT 10H 属性值说明见161页,29,BL R G B I R G B,闪 红 绿 蓝 加 红 绿 蓝 烁 亮,30,3.5 简单汇编语言源程序举例,要点: 1、理解、掌握汇编语言源程序结构。 2、典型问题的汇编语言源程序编程。,31,完整的汇编语言源程序程序可采用如下两种程序结构范例: 汇编语言 hello.asm程序结构1data SEGMENTHello DB Hello, w

14、orld!,$ data ENDS stack SEGMENTDB 20DUP(?) stack ENDSprog SEGMENTASSUME CS:prog,DS:data,SS:stack start: MOV AX,dataMOV DS,AXMOV AX,stackMOV SS,AX ; 上述4条指令用途是 :( ) LEA DX,hello ;取字符串首地址MOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;上述2条指令用途是:( ) prog ENDSEND start,32,汇编语言 hello.asm程序结构2 FAR属性过程体结构,data SEG

15、MENTHello DB Hello, world!,$ data ENDS stack SEGMENTDB 20DUP(?) stack ENDS prog SEGMENTASSUME CS:prog,DS:data,SS:stack display proc FAR start: PUSH DSXOR AX,AXPUSH AX ;上述3条指令用途是:( )MOV AX,dataMOV DS,AXMOV AX,stackMOV SS,AX ;上述4条指令用途是( )LEA DX,hello ;取字符串首地址MOV AH,9INT 21H ;显示字符串RET Display ENDP prog ENDSEND start,

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

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

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