第4章 汇编语言语法和DOS功能调用_第1页
第4章 汇编语言语法和DOS功能调用_第2页
第4章 汇编语言语法和DOS功能调用_第3页
第4章 汇编语言语法和DOS功能调用_第4页
第4章 汇编语言语法和DOS功能调用_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4 4章章 汇编语言语法和汇编语言语法和DOSDOS功能调用功能调用教学内容教学内容 4.1 数据类型及其存储规则 4.2 汇编语言程序的格式 4.3 伪指令语句 4.4 汇编语言中的表达式 4.5 指令语句 4.7 DOS系统功能调用教学目标教学目标 1 理解汇编语言中的基本数据。 2 掌握汇编语言中的常用伪指令。 3 理解DOS系统功能调用。重点内容重点内容 1 汇编语言中的基本数据(标识符、常数、变量、标号)。 2 汇编语言中的常用伪指令。 3 汇编语言中的表达式(算术运算符、逻辑运算符、关系运算符、分析运算符、修改属性运算符、其他运算符)。 4 DOS系统功能调用。难点内容难点内容

2、 1 汇编语言中的常用伪指令。 2 DOS系统功能调用。学时数学时数 4学时 计算机程序设计语言一般可分为三种:机器语言、汇编语言和高级语言。 机器语言:也称机器码,是CPU唯一能够识别的语言,用不同数值的二进制数来表示要求CPU执行的命令,不同的CPU语言也不同,难以记忆和阅读。 汇编语言:为了解决机器语言难以记忆和阅读的问题,用英文缩写来表示各种指令而生成的一种语言,它与机器语言基本是一一对应的。因此,汇编语言具有很高的执行效率。但也正因为这样,汇编语言也仍然与CPU相关联,不同的CPU要使用不同的汇编语言。在执行前要将其转换成CPU能够识别的机器码,这种转换称为汇编,由于汇编语言与机器语

3、言基本是一一对应的,所以这种转换是唯一的。 高级语言:独立于CPU之外,语句直观简练,编程效率高。在执行前要将其转换成CPU能够识别的机器码,这种转换称为编译。不同的编译软件,编译后获得的机器码是不同的,好的编译软件,得到的机器码占用内存小、执行效率高,但是与汇编语言相比都有较大的差距。4.1 4.1 汇编语言程序的格式汇编语言程序的格式 例4.1 试求小于100的所有非零偶数,并把结果存入以BUFF开始的内存区.1 MY_DATA SEGMENT2 BUFF DB 50 DUP(?)3 MY_DATA ENDS 4 MY_CODE SEGMENT5 ASSUME CS:MY_CODE, DS

4、:MY_DATA6 START: MOVAX, MY_DATA7 MOVDS, AX8 MOVAL,29 LEABX,BUFF10 LLP: MOV BX,AL11 INC AL12 INC AL13 CMP AL,10014 JNZ LLP15 INT 20H16 MY_CODE ENDS17 END STRAT 汇编语言程序的格式可以归结为以下几点: (1) 段的结构 段名1 SEGMENT 语句1 语句i 段名1ENDS 段名2 SEGMENT 语句1 语句j 段名2ENDS 段名n SEGMENT 语句1 语句k 段名n ENDS END 标号 (2)语句的结构 3种基本语句类型: 指

5、令语句 伪指令语句 宏指令语句 语句一般有4个部分组成,即: 标号或名字 操作码 操作数 ;注释 标号或名字:这是一个任选部分,在语句之首,当语句为指令性语句时,它是标号,必须以“:”结束。当语句为伪指令时,它是名字,没有结束“:”。 注释:对程序的说明,任选,对程序不产生影响。必须以“;”开始。 语句各组成部分之间至少有一个空格作为间隔。 4.2 4.2 汇编语言中的基本数据汇编语言中的基本数据 1、标识符 标识符由程序员自由建立起来的,有特定意义的字符序列。 标识符的组成规则如下: 必须由字母、数字(0,9)及特殊符号(?, ,)组成,且必须以字母打头。 字符总数限制在31个以内。 不能使

6、用属于系统专用保留字(保留的字)。 2、常数 常数语句中出现的那些固定值,除了自身的值以外,没有其它任何属性。 常数分为两类 (1)数值常数 (2)字符串常数 3、变量 变量存放在存储器单元中的操作数,它的值是可以改变的,在程序中出现的是存储器单元地址的符号,即与某一数据项第一字节相对应的标识符。 变量的3个属性: 段地址(SEG):变量所在段的段地址。 偏移地址(OFFSET):变量所在段内的偏移地址。 类型(TYPE):所定义的每个变量所占据的字节数。 4、标号 标号可执行指令语句地址的符号表示,即用标识符来表示地址。 标号的3个属性: 段地址(SEG) :与标号对应的指令首字节所在的段地

7、址。 偏移地址(OFFSET) :与标号对应的指令首字节所在的偏移地址。 类型(TYPE) :标号的类型属性有两种:NEAR和FAR类型。4.3 4.3 伪指令语句伪指令语句 伪指令语句可分为以下几种类型: 数据定义伪指令语句 标识符赋值与解除伪指令语句 段定义伪指令语句 过程定义伪指令语句 程序开始与结束伪指令语句 方式定义伪指令语句 结构定义伪指令语句 分组伪指令语句 其它伪指令语句 1、数据定义伪指令语句 共有五条:DB、DW、DD、DQ和DT,分别用来定义字节、字、双字、8字节和10字节。 指令格式: 变量名 助记符 操作数1,操作数2,操作数n ;注释 变量名 助记符 n DUP(操

8、作数1,操作数2,操作数n) ;注释 功能:将操作数存入以变量名所指定的存储单元为首地址的存储区中,或者分配存储单元。 n DUP( )表示将括号内的操作数重复n次,n必须为正数。 例4-2 操作数是常数、表达式、字符串数据的定义 DATA1 DB 15H,25H DATA2 DW 9988H,56H DATA3 DD 2*40H,0AABBH DATA4 DB HELLO 例4-3 操作数用“?”定义不确定值的变量,用DUP来定义重复变量,不确定值的变量一般用作保留存储空间,以便存放运算结果。 DATA1 DB ? DATA2 DW 0D55H, ? DATA3 DB 5 DUP(0) DA

9、TA4 DW 10 DUP(?) DATA5 DB 4 DUP(1,2 DUP(20) 2、标识符赋值与解除伪指令语句 共有4条: 等值伪指令语句EQU 等号伪指令语句“=” 解除伪指令语句PURGE 别名定义伪指令语句LABEL (1)等值伪指令EQU语句 指令格式: 标识符 EQU 操作数 功能:为操作数定义一个标识符,以后就可以以标识符替代该操作数。一经定义后就不能重新定义。 例4.5 DATA EQU 100 DATA1 EQU DATA2 CI EQU ADD (2)等号伪指令语句“=” 指令格式: 标识符=操作数 功能:与EQU具有相同的功能,但允许重新定义。 例4.6 DATA

10、=100 DATA1 = DATA +10 SOURCE=BXSI MOV AX,SOURCE SOURCE=BX MOV CX,SOURCE (3)解除伪指令语句PURGE 指令格式: PURGE 标识符1,标识符2,标识符n 功能:将EQU定义过的标识符解除定义,以便可以再次用EQU定义。 (4)别名定义伪指令语句 格式:别名 LABEL 类型属性 LABEL:伪指令助记符,不可缺省。 功能:为一个已经定义过的标识符另取一个名称,以获得一个新的类型属性。 例4.7 定义变量的别名 DATAB LABEL BYTE DATAW DW 1234H,5678H DISF LABEL FAR DI

11、SN: MOV AX,SI DATAW为字类型,DATAB为字节类型,指向同一地址。DISN和DISF也指向同一地址,DISN为NEAR类型,DISF为FAR类型。 3、段定义伪指令语句 (1)段结构定义伪指令语句 SEGMENTENDS 指令格式: 段名 SEGMENT 定位类型 组合类型 分类名 逻辑段内容 段名 ENDS 功能:定义一个逻辑段。 (1)段名:不可缺少,是逻辑段的地址,放在SEGMENT和ENDS的前面。 (2)助记符:不可缺少,即SEGMENT和ENDS,分别表示段的开始和结束。 (3)参数:可选,有定位类型、组合类型和分类名三个参数。 定位类型,表示本段起始地址,共有以

12、下4种: PARA:缺省值,段的起始地址在节(16字节)的边界上。 BYTE:段的起始地址在任意字节边界上。 WORD:段的起始地址在任意字边界上。 PAGE:段的起始地址在页(256字节)边界上。 组合类型,表示同类别名的段的连接方式,共有以下6种: NONE:缺省值,不与其他段连接。 PUBLIC:与其他段连接时按LINK中的顺序,由低地址到高地址。 COMMON:与其他段以覆盖方式连接,段长度为最大段的长度。 AT 表达式:该段起始地址在表达式所指定的节的边界上。 STACK:指定该段为堆栈段,在堆栈段中必须有该参数,多个模块只用设一个堆栈段,使用顺序连接方式组合。 MEMORY:多个逻

13、辑段连接时,本逻辑段定位在地址最高的存储区。有多个MEMORY段时,除第一个MEMORY段外,其他段按照COMMON方式处理。 类别名,用来为该段取一个类别名,以便可以将同类别名的段进行组合。可选,不超过40个字符。 (2)段分配伪指令语句 指令格式: ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系 注意点: 1)助记符ASSUME不可省略,一般放在代码段的开始处。 2) ASSUME后面的指令参数,由段寄存器名(CS、DS、ES、SS)、冒号及段名组成,各参数之间用逗号隔开,段名应是SEGMENTENDS中定义过的名字。

14、3)4个逻辑段不一定要全部定义,不使用的可以不定义。通常代码段和数据段是必须的,若使用了串指令,还应定义附加段ES。 4)可以用ASSUME 段寄存器名:NOTHING取消定义。 5) ASSUME只将某个段分配给相应的段寄存器,只有代码段的段基址自动装入CS,其他段还须用指令装入相应的段基址。 4、过程定义伪指令语句 指令格式: 过程名 PROC 属性 过程内容 RET 过程名 ENDP 功能:定义一个由主程序可以用CALL指令调用的过程。 说明: 1)过程名是过程的名字,也是子程序的入口地址,不可缺少。如同标号一样,也有三种属性: 段地址:过程的段基址。 偏移地址:过程的第一个字节与段首址

15、之间相距的字节数。 距离类型:NEAR和FAR类型。NEAR允许在段内调用,FAR允许在段间调用,若缺省则为NEAR。 5、 程序开始与结束伪指令语句 共有4条伪指令语句:NAME、TITLE、ORG和END。 (1)目标模块命名伪指令语句 格式: NAME 程序名 在输出列表文件时,每页开头打印这个程序名,若未用此指令则打印文件名。TITLE 文本名 ; 将文本名赋给目标模块作名字。 (2)定位伪指令语句 格式:ORG 表达式 功能:给出下一条语句的段内偏移量。 例4.8 用ORG指定数据段和代码段地址。 DATA SEGMENT X1 DW 20H,60H, ORG 100H X2 DB

16、10H,20H,30H ORG 200H X3 DW 1234H, 4321H DATA ENDSCODE SEGMENT ORG 100H ASSUME CS:CODE,DS:DATA START: MOV AX,DATA CODE ENDS (3)程序结束伪指令语句 格式: END 标号名 功能:在程序中不可缺省,标记汇编语言的源程序的结束。汇编程序在汇编时遇到END就停止汇编。程序执行时从END后的标号名处开始。 例4.9 程序结束伪指令语句的应用 CODE SEGMENT START:MOV AX,BX MOV CX,12H CODE ENDS END START 6、 方式定义伪指令

17、语句 格式: .8086 .386 7、 结构定义伪指令语句 有三条语句:结构定义伪指令,结构存储分配和预置伪指令及结构使用伪指令。 (1)结构定义伪指令语句 格式:结构名 STRUC 数据变量序列 结构名 ENDS (2) 结构存储分配和预置伪指令语句 格式:结构变量名 结构名 元素值,元素值 结构变量名 结构名 N DUP(元素值,元素值) 例4.11 对例4.10中的TAB结构进行存储空间分配和预置,形成4个结构变量。 DATA1 TAB DATA2 TAB 1234 DATA3 TAB ,34H,SEG PLT DATA4 TAB 5 DUP(WXYZ,22H) (3) 结构使用伪指令

18、语句 格式:结构变量名字段变量 设当前数据段基址为1000H,结构变量DATA1的偏移地址为100H,则例4-1中的4个结构变量在存储器中的地址分配如图4-3所示。 8、 分组伪指令语句 格式:组名 GROUP 段1,段2, 例4.12 GROUP1 GROUP SEG1,SEG2,SEG3 ASSUME DS:GROUP1 MOV AX,GROUP1 MOV DS,AX MOV BX,GRPUP1:VAR1 9、 其它伪指令语句 (l)外部伪指令语句 格式: PUBLIC 名称1,名称2, 将名称1,名称2,为定义为全局使用。 EXTRN 名称1:类型,名称2:类型, 说明名称1,名称2,

19、是在其他模块中定义过的标识符,并说明其类型。 例4-12 用EXTRN和PUBLIC语句实现模块间标识符的交叉访问模块1 EXTRN DATA2:BYTE, SUBTR1:NEAR PUBLIC TABLE, DATA1 DSEG SEGMENT TABLE DB 100 DUP(?) DATA1 DW ? CODE SEGMENT DSEG ENDS CODE SEGMENT ASSUME CS:CODE, DS:DSEG MOV AX, DSEG MOV DS, AX MOV AL, DATA1 CALL SUBTR1 MOV AX, SEG DATA2 MOV ES, AX MOV BX

20、, ES:DATA2 CODE ENDS END 模块2 EXTRN TABLE:BYTE PUBLIC SUBTR1, DATA2 DSEG SEGMENT DATA2 DB ? DSEG ENDS CODE SEGMENT SUBTR1: CODE ENDS END (2)对准伪指令语句 格式:EVEN 功能: EVEN使下一语句的地址调整为偶地址。 例4.14 EVEN直接放在某一语句前,汇编程序汇编时就会完成将地址调整在偶地址上。 DATA SEGMENT ORG 100H A1 DB 0DH EVEN A2 DW 100 DUP(?) DATA ENDS (3)条件汇编伪指令语句 一

21、般格式是: IF ;如果条件成立 ELSE ;否则 END IF ;结束条件汇编语句 IF有多种形式,它们是: IF 操作数 IFE 操作数 IFDEF 标号或变量 IFNDEF 标号或变量 IFB IFNB IFIDN , IFDIF , IF1 IF24.4 4.4 汇编语言中的表达式汇编语言中的表达式 表达式-运算对象和运算符组成。 汇编语言中有类运算符,即: 算术运算符; 逻辑运算符; 关系运算符; 分析运算符; 修改属性运算符; 其它运算符 。 、算术运算符 算术运算符有:加()、减()、乘(*)、除()、取模运算(MOD)、左移(SHL)和右移(SHR)。 取模运算是取两数相除的余

22、数,对象必须为正整数。 例如 92 MOD 16 结果为12(相当于取低4位的值) 97H MOD 20H 结果为23(相当于取低5位的值) 33H MOD 7 结果为2 例4-14 包含乘法和减法算术运算符的表达式 DATA SEGMENT ARRAY DB 1,2,3,4,5,6 TRY DB 20 DATA ENDS CODE SEGMENT MOVBX, 30*5 MOVCX, (TRY-ARRAY) CODE ENDS 例4-15 源程序包含除法、减法、模运算和移位运算的表达式DATA SEGMENTKA EQU800DATA ENDSCODE SEGMENT MOVBX, KA-8

23、0 MOVAX, KA MOD 100 MOVCX, KA/100 MOVDH, 01100100B SHR 2 CODE ENDS 2、逻辑运算符 逻辑运算符有:与(AND)、或(OR)、非(NOT)和异或(XOR)。 例 4-16 AND、OR、NOT、XOR逻辑运算的表达式DATA SEGMENTPORT EQU 81HDATA ENDSCODE SEGMENT MOV AL,NOT 0FFH MOV BL,8CH AND 73H MOV AH,8CH OR 73H MOV CH,8CH XOR 73H IN AL,PORT AND DX,PORT AND 0FEH OUT DX,AX

24、CODE ENDS 3、关系运算符 关系运算符有:相等 EQ、不等 NE、小于 LT、大于 GT、小于或等于 LE、大于或等于GE。 4、分析运算符 分析运算符有:OFFSET、SEG、TYPE、LENGTH、SIZE (1)OFFSET 格式:OFFSET 变量或标号 功能:返回变量或标号的偏移地址。 例4-17 用OFFSET返回标号或变量偏移地址值的表达式DATA SEGMENT DAT1 DB 81H DATA ENDSCODE SEGMENT MOV SI,OFFSET LAB1 LAB1: MOV BX,OFFSET DAT1 CODE ENDS (2)SEG 格式:SEG 变量或

25、标号 功能:返回变量或标号的段基址。 (3)TYPE 格式:TYPE 变量或标号 功能:返回变量的类型属性(在变量前),返回标号的距离属性(在标号前)。变 量标 号类型DBDWDDDQDTNEARFAR返回值124810-1-2表4-1 TYPE运算符返回值 例 4-18 TYPE加在变量和标号前的表达式DATA SEGMENTAA1 DB 20H, 30HAA2 DW 0438HAA3 DD ?DATA ENDSCODE SEGMENTLL1: MOV AH,TYPE AA1 MOV BH,TYPE AA2 ADD AL,TYPE AA3 MOV BL,TYPE LL1CODE ENDS (

26、4) LENGTH 格式:LENGTH 变量 功能:返回其后第一个变量的项目数。 例 4-19 LENGTH加变量的表达式DATA SEGMENTBB1 DW 100 DUP (?)BB2 DW 1,2,3BB3 DB A B C DDATA ENDSCODE SEGMENT MOV CX, LENGTH BB1;CX=100 MOV BL, LENGTH BB2;CX=1 MOV AL, LENGTH BB3;CX=1CODE ENDS (5) SIZE 格式:SIZE 变量 功能:返回变量的字节数。 把例4-19中含有LENGTH表达式改为SIZE表达式,即: MOV CX, SIZE B

27、B1 ;CX=200 MOV BL, SIZE BB2 ;CX=2 MOV AL, SIZE BB3 ;CX=1 5、修改属性运算符(综合运算符) 修改属性运算符有:段操作符、PTR、THIS、HIGH、LOW、SHORT (1) 段操作符 格式: 段前缀(CS、DS、ES、SS) : 变量或地址表达式 功能:使用段前缀作为变量或地址表达式的使用段。 (2) PTR 格式: 类型 PTR 变量 距离 PTR 标号 功能:将类型(BYTE、WORD等)赋给变量,或将距离(NEAR、FAR)赋给标号。 例 4-20 带PTR表达式的变量DATA SEGMENTCC1 DB 16H,36HCC2 D

28、W 1122H,3344HDATA ENDSCODE SEGMENTLL1: MOV AX,WORD PTR CC1 MOV BL,BYTE PTR CC2 MOV BYTE PTR BX, 10H MOV WORD PTR BX, 10H JMP FAR PTR LL1 CODE ENDS (3) THIS 格式: 变量 EQU THIS 类型 标号 EQU THIS 距离 功能:将类型(BYTE、WORD等)赋给变量,或将距离(NEAR、FAR)赋给标号。 例如: DATA1 EQU THIS BYTE TABLE DW 200 DUP(?) DATA1与TABLE地址相同,但DATA1是

29、字节类型,而TABLE是字类型。 又如: LL1 EQU THIS FAR MOV AX,100 (4) SHORT 格式:SHORT 标号 功能:指明标号的距离为-128+127。 (5) HIGH和 LOW 它们称为字节分离运算符 格式: HIGH 变量或标号 LOW 变量或标号 功能:从变量或标号中分离出高位字节或低位字节。 例4-21 带HIGH和 LOW表达式的变量DATA SEGMENTBB1 EQU 1234HBB2 EQU 0A0B0HDATA ENDSCODE SEGMENT MOV AH, HIGH BB1 MOV BL, LOW BB2CODE ENDS 6、其它运算符

30、7、注意点: (1)注意表达式中各运算符和操作符的优先级 (2)注意数制统一 4.5 4.5 指令语句指令语句 指令语句的格式: 标号: 前缀指令 助记符 操作数 ;(注释) (1)立即寻址和直接寻址的表示形式 例4-22 立即寻址和直接寻址在表示形式上的区别DATA SEGMENTBB1 EQU 1234HBB2 DW 0A0B0HDATA ENDSCODE SEGMENT MOV AX, BB1 ;立即寻址 MOV BX, BB2 ;直接寻址 MOV CX, BB1CODE ENDS (2) 基址寄存器加变址寄存器寻址的表示形式 有两种表示形式: MOV AX,BXSI MOV AX,BX

31、+SI (3) 相对寄存器寻址的表示形式 例4-23 相对寄存器寻址的两种表示形式DATA SEGMENTMYDAT DB 100 DUP(?)DATA ENDSCODE SEGMENT MOV AX, MYDATBX MOV AX, MYDAT+BX MOV CX, MYDATBXSI MOV CX, MYDAT+BX+SI CODE ENDS 4.6 4.6 宏指令语句及其使用宏指令语句及其使用 1、宏定义 宏定义格式: 宏指令名 MACRO 形式参数1,形式参数2 宏体 ENDM 2、宏调用 宏调用格式: 宏指令名 实际参数1,实际参数2 3、宏展开 例4-24 无形式参数的宏定义、宏调

32、用及宏展开宏定义:PUSHAB MACRO PUSH AX PUSH BX ENDM宏调用: PUSHAB宏展开: + PUSH AX + PUSH BX 例4-25 带形式参数的宏定义、宏调用及宏展开 宏定义: LDSF MACRO PR,VAR, N,REG,CC MOV PR,VAR MOV AX,PR MOV CL, N S&CC REG, CL ENDM宏调用1: LDSF SI,WVAR1,4,AX,AR宏调用2: LDSF DI,WVAR2,3,BX,AL宏展开1: +MOV SI,WVAR1 +MOV AX,SI+MOV CL, 4+SAR AX, CL宏展开2: +MOV D

33、I,WVAR2 +MOV AX,DI+MOV CL, 3 +SAL BX, CL 4、宏嵌套 (1)宏定义中使用宏调用 例2-26 设在程序的数据段已经定义了变量X,Y,Z,试计算X+YZ,并要求保护所有使用的寄存器。 宏定义:DBF MACRO P, Q MOV BX, P MOV AX,Q ADD AX, BX ENDMDBFS MACRO X1, X2, X3 PUSH AX PUSH BX DBF X1, X2 MOV X3, AX POP BX POP AX ENDM宏调用: DBFS X,Y,Z宏展开: +PUSH AX +PUSH BX +MOV BX, X +MOV AX,Y

34、+ADD AX, BX +MOV Z, AX +POP BX +POP AX (2)宏定义中包含宏定义 例2-27 设在程序的数据段已经定义了变量X,Y,Z,试共用一个宏定义,计算X+YZ、X-YZ、X AND YZ,并要求保护所有使用的寄存器。宏定义:DEFM MACRO MACN,OPENMACN MACRO A,B,C PUSH AX MOV AX,A OPEN AX,B MOV C,AX POP AX ENDM ENDM宏调用定义加法: DEFM ADDIT,ADD宏展开:+ADDIT MACRO A,B,C PUSH AX MOV AX,A ADD AX,B MOV C,AX POP

35、 AX ENDM宏调用定义减法: DEFM SUBT,SUB宏展开: +SUBT MACRO A,B,C PUSH AX MOV AX,A SUB AX,B MOV C,AX POP AX ENDM宏调用定义逻辑“与”: DEFM ANDT,AND宏展开: +ANDT MACRO A,B,C PUSH AX MOV AX,A AND AX,B MOV C,AX POP AX ENDM宏调用实现X+YZ: ADDIT X,Y,Z宏展开: +PUSH AX +MOV AX,X +ADD AX,Y +MOV Z,AX +POP AX宏调用实现X-YZ: SUBT X,Y,Z宏展开:+PUSH AX

36、+MOV AX,X +SUB AX,Y +MOV Z,AX +POP AX宏调用实现 X AND YZ: ANDT X,Y,Z宏展开: +PUSH AX +MOV AX,X +AND AX,Y +MOV Z,AX +POP AX 5、宏定义中的标号与变量 定义局部标号的格式: LOCAL 参数1、参数2、参数n 例4.29 延时宏指令语句 宏定义: DELAY MACRO VALUE1,VALUE2 LOCAL AGAIN1,AGAIN2 PUSH AX PUSH CX MOV CX,VALUE1 AGAIN1: MOV AX,VALUE2 AGAIN2: DEC AX JNZ AGAIN2

37、LOOP AGAIN1 POP CX POP AX ENDM宏调用1: DELAY 1234H, 5678H宏调用2: DELAY 9ABCH, 0DEF0H宏展开1: DELAY 1234H, 5678H PUSH AX PUSH CX MOV CX,1234H ?0000: MOV AX,5678H ?0001: DEC AX JNZ ?0001 LOOP ?0000 POP CX POP AX宏展开2: DELAY 9ABCH, 0DEF0H PUSH AX PUSH CX MOV CX,09ABCH ?0002: MOV AX,0DEF0H ?0003: DEC AX JNZ ?000

38、3 LOOP ?0002 POP CX POP AX 6、其它宏指令语句 (1)取消宏指令语句格式:PURGE 宏指令名1,宏指令名2宏指令名n (2) 重复执行宏指令语句 格式: REPT 表达式 宏体 ENDM 7、宏指令与子程序的区别 主要区别在以下几个方面: (1)宏指令调用比子程序调用执行速度快。 (2)过程调用使用CALL语句实现,在CPU执行时进行处理,而宏指令调用由宏汇编软件MASM中的宏处理程序来处理。 (3)子程序比宏指令节省内存空间。 (4)宏指令比子程序灵活。 4.7 DOS 4.7 DOS系统功能调用系统功能调用 DOS是一种基本的操作系统,它的一些功能可以用软中断的方法来获得,这就是DOS系统功能调用和BIOS中断调用。 表4-2 常用的DOS软中断 软中断指令功能入口参数出口参数INT20H程序正常退出无无INT21H系统功能调用AH功能号,相应入口号相应出口号INT22H结束退出INT23HCtrl+Break处理INT24H出错退出INT2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论