微机原理第4章汇编语言语法和DOS功能调用课件.ppt

上传人(卖家):晟晟文业 文档编号:4495548 上传时间:2022-12-14 格式:PPT 页数:74 大小:924KB
下载 相关 举报
微机原理第4章汇编语言语法和DOS功能调用课件.ppt_第1页
第1页 / 共74页
微机原理第4章汇编语言语法和DOS功能调用课件.ppt_第2页
第2页 / 共74页
微机原理第4章汇编语言语法和DOS功能调用课件.ppt_第3页
第3页 / 共74页
微机原理第4章汇编语言语法和DOS功能调用课件.ppt_第4页
第4页 / 共74页
微机原理第4章汇编语言语法和DOS功能调用课件.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

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系统功能调用。难点内容难点内容 1 汇编

2、语言中的常用伪指令。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:MY_DATA6

4、START:MOVAX,MY_DATA7 MOVDS,AX8 MOVAL,29 LEABX,BUFF10 LLP:MOV BX,AL11 INC AL12 INC AL13 CMP AL,10014 JNZ LLP15 INC 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个以内。不能使用属于系统专用保留字(保留的字)。2、常数 常数语句中

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

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

8、存储区中,或者分配存储单元。n DUP()表示将括号内的操作数重复n次,n必须为正数。例4-2 操作数是常数、表达式、字符串数据的定义 DATA1 DB 10H,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)DATA4 DW 10 DUP(?)DATA5 DB 4 DUP(1,2 DUP(20)2、标识符赋值与解除伪指

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

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

11、组合类型 分类名 逻辑段内容 段名 ENDS 功能:定义一个逻辑段。(1)段名:不可缺少,是逻辑段的地址,放在SEGMENT和ENDS的前面。(2)助记符:不可缺少,即SEGMENT和ENDS,分别表示段的开始和结束。(3)参数:可选,有定位类型、组合类型和分类名三个参数。定位类型,表示本段起始地址,共有以下4种:PARA:缺省值,段的起始地址在节(16字节)的边界上。BYTE:段的起始地址在任意字节边界上。WORD:段的起始地址在任意字边界上。PAGE:段的起始地址在页(256字节)边界上。组合类型,表示同类别名的段的连接方式,共有以下6种:NONE:缺省值,不与其他段连接。PUBLIC:与

12、其他段连接时按LINK中的顺序,由低地址到高地址。COMMON:与其他段以覆盖方式连接,段长度为最大段的长度。AT 表达式:该段起始地址在表达式所指定的节的边界上。STACK:指定该段为堆栈段,在堆栈段中必须有该参数,多个模块只用设一个堆栈段,使用顺序连接方式组合。MEMORY:多个逻辑段连接时,本逻辑段定位在地址最高的存储区。有多个MEMORY段时,除第一个MEMORY段外,其他段按照COMMON方式处理。类别名,用来为该段取一个类别名,以便可以将同类别名的段进行组合。可选,不超过40个字符。(2)段分配伪指令语句 指令格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能

13、:定义当前有效的4个逻辑段,指明段和段寄存器的关系 注意点:1)助记符ASSUME不可省略,一般放在代码段的开始处。2)ASSUME后面的指令参数,由段寄存器名(CS、DS、ES、SS)、冒号及段名组成,各参数之间用逗号隔开,段名应是SEGMENTENDS中定义过的名字。3)4个逻辑段不一定要全部定义,不使用的可以不定义。通常代码段和数据段是必须的,若使用了串指令,还应定义附加段ES。4)可以用ASSUME 段寄存器名:NOTHING取消定义。5)ASSUME只将某个段分配给相应的段寄存器,只有代码段的段基址自动装入CS,其他段还须用指令装入相应的段基址。4、过程定义伪指令语句 指令格式:过程

14、名 PROC 属性 过程内容 RET 过程名 ENDP 功能:定义一个由主程序可以用CALL指令调用的过程。说明:1)过程名是过程的名字,也是子程序的入口地址,不可缺少。如同标号一样,也有三种属性:段地址:过程的段基址。偏移地址:过程的第一个字节与段首址之间相距的字节数。距离类型:NEAR和FAR类型。NEAR允许在段内调用,FAR允许在段间调用,若缺省则为NEAR。5、程序开始与结束伪指令语句 共有4条伪指令语句:NAME、TITLE、ORG和END。(1)目标模块命名伪指令语句 格式:NAME 程序名 在输出列表文件时,每页开头打印这个程序名,若未用此指令则打印文件名。TITLE 文本名

15、;将文本名赋给目标模块作名字。(2)定位伪指令语句 格式:ORG 表达式 功能:给出下一条语句的段内偏移量。例4.8 用ORG指定数据段和代码段地址。DATA SEGMENT X1 DW 20H,60H,ORG 100H X2 DB 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 标号名 功能:在程序中不可缺省,标记汇编语言的源程序的结束。汇编程序在汇编时遇到EN

16、D就停止汇编。程序执行时从END后的标号名处开始。例4.9 程序结束伪指令语句的应用 CODE SEGMENT START:MOV AX,BX MOV CX,12H CODE ENDS END START 6、方式定义伪指令语句 格式:.8086 .386 7、结构定义伪指令语句 有三条语句:结构定义伪指令,结构存储分配和预置伪指令及结构使用伪指令。(1)结构定义伪指令语句 格式:结构名 STRUC 数据变量序列 结构名 ENDS (2)结构存储分配和预置伪指令语句 格式:结构变量名 结构名 元素值,元素值 结构变量名 结构名 N DUP(元素值,元素值)例4.11 对例4.10中的TAB结构

17、进行存储空间分配和预置,形成4个结构变量。DATA1 TAB DATA2 TAB 1234 DATA3 TAB ,34H,SEG PLT DATA4 TAB 5 DUP(WXYZ,22H)(3)结构使用伪指令语句 格式:结构变量名字段变量 设当前数据段基址为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,GRPU

18、P1:VAR1 9、其它伪指令语句 (l)外部伪指令语句 格式:PUBLIC 名称1,名称2,将名称1,名称2,为定义为全局使用。EXTRN 名称1:类型,名称2:类型,说明名称1,名称2,是在其他模块中定义过的标识符,并说明其类型。例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:DS

19、EG MOV AX,DSEG MOV DS,AX MOV AL,DATA1 CALL SUBTR1 MOV AX,SEG DATA2 MOV ES,AX MOV BX,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直接放在某一语句前,汇编程序汇编时就会完成将地址调整在偶地址上。DAT

20、A SEGMENT ORG 100H A1 DB 0DH EVEN A2 DW 100 DUP(?)DATA ENDS (3)条件汇编伪指令语句 一般格式是:IF ;如果条件成立 ELSE ;否则 END IF ;结束条件汇编语句 IF有多种形式,它们是:IF 操作数 IFE 操作数 IFDEF 标号或变量 IFNDEF 标号或变量 IFB IFNB IFIDN ,IFDIF ,IF1 IF24.4 4.4 汇编语言中的表达式汇编语言中的表达式 表达式-运算对象和运算符组成。汇编语言中有类运算符,即:算术运算符;逻辑运算符;关系运算符;分析运算符;修改属性运算符;其它运算符。、算术运算符 算术

21、运算符有:加()、减()、乘(*)、除()、取模运算(MOD)、左移(SHL)和右移(SHR)。取模运算是取两数相除的余数,对象必须为正整数。例如 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 源程序包含除法、减法、模运算和移位运算的表达式

22、DATA SEGMENTKA EQU800DATA ENDSCODE SEGMENT MOVBX,KA-80 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 X

23、OR 73H IN AL,PORT AND DX,PORT AND 0FEH OUT DX,AX 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:

24、MOV BX,OFFSET DAT1 CODE ENDS (2)SEG 格式:SEG 变量或标号 功能:返回变量或标号的段基址。(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

25、ADD AL,TYPE AA3 MOV BL,TYPE LL1CODE ENDS (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中含有LE

26、NGTH表达式改为SIZE表达式,即:MOV CX,SIZE BB1 ;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 SEGME

27、NTCC1 DB 16H,36HCC2 DW 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与TABL

28、E地址相同,但DATA1是字节类型,而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、其它

29、运算符 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+SI (

30、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 无形式参数的宏定义、宏调用及宏展开宏定义:PUS

31、HAB 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 DI,WVAR2 +MOV AX,DI+MOV CL,

32、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 +ADD AX,BX +MOV Z,AX +POP BX +POP AX (2

33、)宏定义中包含宏定义 例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 AX ENDM宏调用定义减法:DEFM SUBT,SUB宏展开:+SUBT MAC

34、RO 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 +MOV AX,X +SUB AX,Y +MOV Z,AX +POP AX宏调用实现 X AND

35、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 LOOP AGAIN1 POP CX POP AX ENDM宏调用1:DELAY 1234H,5678H宏调用

36、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?0003 LOOP?0002 POP CX POP AX 6、其它宏指令语句 (1)取消宏指令语句格式:PURGE 宏指令名1,宏指令名2宏指令名n (2

37、)重复执行宏指令语句 格式:REPT 表达式 宏体 ENDM 7、宏指令与子程序的区别 主要区别在以下几个方面:(1)宏指令调用比子程序调用执行速度快。(2)过程调用使用CALL语句实现,在CPU执行时进行处理,而宏指令调用由宏汇编软件MASM中的宏处理程序来处理。(3)子程序比宏指令节省内存空间。(4)宏指令比子程序灵活。4.7 DOS 4.7 DOS系统功能调用系统功能调用 DOS是一种基本的操作系统,它的一些功能可以用软中断的方法来获得,这就是DOS系统功能调用和BIOS中断调用。表4-2 常用的DOS软中断 软中断指令功能入口参数出口参数INT21H程序正常退出无无INT21H系统功能

38、调用AH功能号,相应入口号相应出口号INT22H结束退出INT23HCtrl+Break处理INT24H出错退出INT25H读磁盘AL驱动器号CX读入扇区数DX起始逻辑扇区号DS:BX内存缓冲区地址CF0成功CF1出错INT26H写磁盘AL驱动器号CX写入扇区数DX起始逻辑扇区号DS:BX内存缓冲区地址CF0成功CF1出错INT27H驻留下退出DS:BX程序长度 1、常用的DOS软中断 (1)程序结束软中断 INT 20H 调用格式举例:INT 20H INT 21H 该软中断又有三种情况:无返回程序结束、程序结束并驻留和带返回程序结束。无返回程序结束的调用格式:MOV AH,0 INT 21

39、H 程序结束并驻留的调用格式举例:MOV AH,31H MOV AL,1 ;返回号 MOV DX,400H ;保留从程序段前缀开始的内存长度字节 INT 21H 带返回程序结束的调用格式举例:MOV AH,4CH MOV AL,1 INT 21H INT 27H 调用格式举例:MOV DX,XX;驻留程序长度 INT 27H (2)磁盘扇区读与写 调用格式举例:MOV AL,0 MOV CX,3 MOV DX,4 MOV BX,2000H INT 25H 2、DOS系统功能调用 DOS系统功能可分为三个方面:设备管理、文件管理和目录管理。设备管理包括:键盘输入、显示输出、设置磁盘缓冲器、选择当

40、前盘等功能调用;文件管理包括:建立文件、打开文件、读写文件、删除文件等功能调用;目录管理包括:查找目录项、更改目录项、建立子目录、删除子目录等功能调用。(1)显示功能调用 单字符显示 调用格式举例:MOV DL,*MOV AH,2 INT 21H 字符串显示 调用格式举例:在屏幕上显示HOW ARE YOU?字符串DATA SEGMENTCR EQU 0DHLF EQU 0AHDAT1 DB HOW ARE YOU?,CR,LF,DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFS

41、ET DAT1 MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDS END START (2)键盘功能调用AH功能入口参数出口参数1从键盘输入一个字符,并在屏幕上回显,检查Ctrl+Break键AL字符6直接控制台输入输出字符,回显,不检查Ctrl+Break键DL0FFHAL字符7直接输入字符,无回显,不检查Ctrl+Break键AL字符8键盘输入字符,无回显,检查Ctrl+Break键AL字符0AH输入字符串到内存缓冲区DS:DX缓冲区首址0BH检查键盘输入状态ALFFH有键入AL0无键入0CH清键盘缓冲区,调用键盘输入功能AL键盘功能号(1,6,7,8,A)表4-3 DOS键盘功能调用 (1)单字符键盘输入 调用格式举例:从键盘输入字符并显示 MOV AH,1 INT 21H (2)字符串键盘输入 调用格式举例:从键盘输入一个字符串,将输入的字符数送CL寄存器,并将指针指向字符串的第一个字符。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(微机原理第4章汇编语言语法和DOS功能调用课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|