微机原理第4章汇编语言语法和DOS功能调用.ppt
《微机原理第4章汇编语言语法和DOS功能调用.ppt》由会员分享,可在线阅读,更多相关《微机原理第4章汇编语言语法和DOS功能调用.ppt(74页珍藏版)》请在三一办公上搜索。
1、第4章 汇编语言语法和DOS功能调用教学内容 4.1 数据类型及其存储规则 4.2 汇编语言程序的格式 4.3 伪指令语句 4.4 汇编语言中的表达式 4.5 指令语句 4.7 DOS系统功能调用教学目标 1 理解汇编语言中的基本数据。2 掌握汇编语言中的常用伪指令。3 理解DOS系统功能调用。,重点内容 1 汇编语言中的基本数据(标识符、常数、变量、标号)。2 汇编语言中的常用伪指令。3 汇编语言中的表达式(算术运算符、逻辑运算符、关系运算符、分析运算符、修改属性运算符、其他运算符)。4 DOS系统功能调用。难点内容 1 汇编语言中的常用伪指令。2 DOS系统功能调用。学时数 4学时,计算机
2、程序设计语言一般可分为三种:机器语言、汇编语言和高级语言。机器语言:也称机器码,是CPU唯一能够识别的语言,用不同数值的二进制数来表示要求CPU执行的命令,不同的CPU语言也不同,难以记忆和阅读。汇编语言:为了解决机器语言难以记忆和阅读的问题,用英文缩写来表示各种指令而生成的一种语言,它与机器语言基本是一一对应的。因此,汇编语言具有很高的执行效率。但也正因为这样,汇编语言也仍然与CPU相关联,不同的CPU要使用不同的汇编语言。在执行前要将其转换成CPU能够识别的机器码,这种转换称为汇编,由于汇编语言与机器语言基本是一一对应的,所以这种转换是唯一的。高级语言:独立于CPU之外,语句直观简练,编程
3、效率高。在执行前要将其转换成CPU能够识别的机器码,这种转换称为编译。不同的编译软件,编译后获得的机器码是不同的,好的编译软件,得到的机器码占用内存小、执行效率高,但是与汇编语言相比都有较大的差距。,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 START:MOVAX,MY_DATA7 MOVDS,AX8 MOVAL,29 LEABX,BU
4、FF10 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种基本语句类型:指令语句 伪指令语句 宏指令语句 语句一般有4个部分组成,即:标号或名字 操作码 操作数;注释 标号或名字:这是一个任选部分,在语句
5、之首,当语句为指令性语句时,它是标号,必须以“:”结束。当语句为伪指令时,它是名字,没有结束“:”。注释:对程序的说明,任选,对程序不产生影响。必须以“;”开始。语句各组成部分之间至少有一个空格作为间隔。,4.2 汇编语言中的基本数据 1、标识符 标识符由程序员自由建立起来的,有特定意义的字符序列。标识符的组成规则如下:必须由字母、数字(0,9)及特殊符号(?,)组成,且必须以字母打头。字符总数限制在31个以内。不能使用属于系统专用保留字(保留的字)。2、常数 常数语句中出现的那些固定值,除了自身的值以外,没有其它任何属性。常数分为两类(1)数值常数(2)字符串常数,3、变量 变量存放在存储器
6、单元中的操作数,它的值是可以改变的,在程序中出现的是存储器单元地址的符号,即与某一数据项第一字节相对应的标识符。变量的3个属性:段地址(SEG):变量所在段的段地址。偏移地址(OFFSET):变量所在段内的偏移地址。类型(TYPE):所定义的每个变量所占据的字节数。4、标号 标号可执行指令语句地址的符号表示,即用标识符来表示地址。标号的3个属性:段地址(SEG):与标号对应的指令首字节所在的段地址。偏移地址(OFFSET):与标号对应的指令首字节所在的偏移地址。类型(TYPE):标号的类型属性有两种:NEAR和FAR类型。,4.3 伪指令语句 伪指令语句可分为以下几种类型:数据定义伪指令语句
7、标识符赋值与解除伪指令语句 段定义伪指令语句 过程定义伪指令语句 程序开始与结束伪指令语句 方式定义伪指令语句 结构定义伪指令语句 分组伪指令语句 其它伪指令语句,1、数据定义伪指令语句 共有五条:DB、DW、DD、DQ和DT,分别用来定义字节、字、双字、8字节和10字节。指令格式:变量名 助记符 操作数1,操作数2,操作数n;注释 变量名 助记符 n DUP(操作数1,操作数2,操作数n);注释 功能:将操作数存入以变量名所指定的存储单元为首地址的存储区中,或者分配存储单元。n DUP()表示将括号内的操作数重复n次,n必须为正数。,例4-2 操作数是常数、表达式、字符串数据的定义 DATA
8、1 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、标识符赋值与解除伪指令语句 共有4条:等值伪指令语句EQU 等号伪指令语句“=”解除伪指令语句PURGE 别名定义伪指令语句LABEL(1)等值伪指令EQU语句
9、指令格式:标识符 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,SOURCE(3)解除伪指令语句PURGE 指令格式:PURGE 标识符1,标识符2,标识符n 功能:将EQU定义过的标识符解除定义,以便可以再次用
10、EQU定义。,(4)别名定义伪指令语句 格式:别名 LABEL 类型属性 LABEL:伪指令助记符,不可缺省。功能:为一个已经定义过的标识符另取一个名称,以获得一个新的类型属性。例4.7 定义变量的别名 DATAB LABEL BYTE DATAW DW 1234H,5678H DISF LABEL FAR DISN MOV AX,SI,3、段定义伪指令语句(1)段结构定义伪指令语句 SEGMENTENDS 指令格式:段名 SEGMENT 定位类型 组合类型 分类名 逻辑段内容 段名 ENDS 功能:定义一个逻辑段。(1)段名:不可缺少,是逻辑段的地址,放在SEGMENT和ENDS的前面。(2
11、)助记符:不可缺少,即SEGMENT和ENDS,分别表示段的开始和结束。(3)参数:可选,有定位类型、组合类型和分类名三个参数。,定位类型,表示本段起始地址,共有以下4种:PARA:缺省值,段的起始地址在节(16字节)的边界上。BYTE:段的起始地址在任意字节边界上。WORD:段的起始地址在任意字边界上。PAGE:段的起始地址在页(256字节)边界上。组合类型,表示同类别名的段的连接方式,共有以下6种:NONE:缺省值,不与其他段连接。PUBLIC:与其他段连接时按LINK中的顺序,由低地址到高地址。COMMON:与其他段以覆盖方式连接,段长度为最大段的长度。AT 表达式:该段起始地址在表达式
12、所指定的节的边界上。STACK:指定该段为堆栈段,在堆栈段中必须有该参数,多个模块只用设一个堆栈段,使用顺序连接方式组合。MEMORY:多个逻辑段连接时,本逻辑段定位在地址最高的存储区。有多个MEMORY段时,除第一个MEMORY段外,其他段按照COMMON方式处理。,类别名,用来为该段取一个类别名,以便可以将同类别名的段进行组合。可选,不超过40个字符。,(2)段分配伪指令语句 指令格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系 注意点:1)助记符ASSUME不可省略,一般放在代码段的开始处。2)ASSUME后面的指
13、令参数,由段寄存器名(CS、DS、ES、SS)、冒号及段名组成,各参数之间用逗号隔开,段名应是SEGMENTENDS中定义过的名字。3)4个逻辑段不一定要全部定义,不使用的可以不定义。通常代码段和数据段是必须的,若使用了串指令,还应定义附加段ES。4)可以用ASSUME 段寄存器名:NOTHING取消定义。5)ASSUME只将某个段分配给相应的段寄存器,只有代码段的段基址自动装入CS,其他段还须用指令装入相应的段基址。,4、过程定义伪指令语句 指令格式:过程名 PROC 属性 过程内容 RET 过程名 ENDP 功能:定义一个由主程序可以用CALL指令调用的过程。说明:1)过程名是过程的名字,
14、也是子程序的入口地址,不可缺少。如同标号一样,也有三种属性:段地址:过程的段基址。偏移地址:过程的第一个字节与段首址之间相距的字节数。距离类型:NEAR和FAR类型。NEAR允许在段内调用,FAR允许在段间调用,若缺省则为NEAR。,5、程序开始与结束伪指令语句 共有4条伪指令语句:NAME、TITLE、ORG和END。(1)目标模块命名伪指令语句 格式:NAME 程序名 在输出列表文件时,每页开头打印这个程序名,若未用此指令则打印文件名。TITLE 文本名;将文本名赋给目标模块作名字。,(2)定位伪指令语句 格式:ORG 表达式 功能:给出下一条语句的段内偏移量。例4.8 用ORG指定数据段
15、和代码段地址。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 标号名 功能:在程序中不可缺省,标记汇编语言的源程序的结束。汇编程序在汇编时遇到END就停止汇编。程序执行时从END后的标号名处开始。例4.9 程序结束伪指令语句的应用 CODE SEGMENT START:MOV AX
16、,BX MOV CX,12H CODE ENDS END START,6、方式定义伪指令语句 格式:.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 D
17、ATA4 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,GRPUP1:VAR1,9、其它伪指令语句(l)外部伪指令语句 格式:PUBLIC 名称1,名称2,将名称1,名称2,为定义为全局使用。EXTR
18、N 名称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:DSEG MOV AX,DSEG MOV DS,AX MOV AL,DATA1 CALL SUBTR1 MOV AX,SEG DATA2 M
19、OV 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直接放在某一语句前,汇编程序汇编时就会完成将地址调整在偶地址上。DATA SEGMENT ORG 100H A1 DB 0DH EVEN A2 DW 100 DUP(?)DATA ENDS,(3)条件汇编伪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编语言 语法 DOS 功能 调用
链接地址:https://www.31ppt.com/p-5975767.html