微机原理与接口技术汇编语言程序教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程教案∕讲稿用纸
第15次课教学课型:理论课√实验课□习题课□实践课□技能课□其它□主要教学内容(注明:*重点#难点):
讲授过程:
1.汇编语言程序基本格式
2.汇编语言基本语法
3.伪指令
* 重点
汇编语言程序基本格式和伪指令的概念
# 难点
伪指令的应用和理解
教学目的要求:
了解: 汇编语言程序基本格式和汇编语言的基本语法;
掌握: 伪指令的应用
教学方法和教学手段:
讲课思路:
从汇编语言程序基本格式开始介绍,接着讲解汇编语言基本语法,最后介绍了常用的伪指令讲授方法:口头讲授结合例子,并采用电子投影的形式。
讲授过程:
1. 汇编语言程序基本格式
2. 汇编语言基本语法
3. 伪指令
讨论、思考题:
1.执行性指令和伪指令的区别是什么?
参考书目:
讲授内容
教
学
设
计
∕
备
注
第4章汇编语言程序设计
4.1 汇编语言程序基本格式
4.1.1 汇编语言格式
机器语言是计算机能直接识别和执行的语言,用一串“0”、“1”数字代码表示。
汇编语言是一种符号语言,它用某种容易记忆的英文缩写去表示机器指令操作码(指令助
记符),用人们熟悉的数码及数学符号等表示操作数、地址。
4.1.2汇编语言源程序和汇编程序
用汇编语言编写的程序称为汇编语言源程序,或简称为源程序。对程序员来讲,符号语言
简单直观、便于记忆,比二进制数表示的机器语言方便了许多。但计算机只“认识”机器语言
而不认识这些文字、数字、符号,为此人们创造了一种程序,叫汇编程序。如同英汉之间对话
需要“翻译”一样,汇编程序的作用相当于一个“翻译员”,自动地把汇编语言源程序翻译成机
器语言。该过程称为汇编,完成汇编任务的程序称为汇编程序,相应形成的机器语言程序称为
目标程序。汇编后形成的目标程序虽然是二进制代码,但还不能直接上机运行,必须经过连接
程序(LINK)连接,将库文件或其它目标文件连接到一起形成可执行文件后,才能送入计算机
执行。汇编语言程序从建立到汇编、连接形成可执行程序的整个过程如图所示。
4.1.3汇编语言的特点
1. 执行速度快
2. 程序短小
3. 可以直接控制硬件
4. 可以方便地编译
5. 辅助计算机工作者掌握计算机体系结构
4.1.4一般汇编语言程序的结构形式
4.2汇编语言基本语法
4.2.1常量、变量与标号
1. 常量
⑴数值常量
汇编语言中的数值常量可以是二进制、八进制、十进制或十六进制数,书写时用加后缀的
方式标明即可,对于十进制数可以省掉后缀。对于十六进制数,当以A~F开头时,前面加数
字0,以避免和名字混淆。
⑵字符串常量
包含在单引号中的若干个字符形成字符串常量,字符串在计算机中存储的是相应字符的ASCLL码。如‘A’的值是41H,‘AB’的值是4142H等。
⑶符号常量
常量用符号名来代替就是符号常量。
用COUNT EQU 3或COUNT=3定义后COUNT就是一个符号常量,与数值常量3等价。
2. 变量
变量在数据段、附加数据段或堆栈段中定义,后面不跟冒号。它也可以用LABEL或EQU 伪操作来定义。变量经常在操作数字段出现。它也有段、偏移及类型三种属性。
段属性:定义变量的段起始地址,此值必须在一个段寄存器中。
偏移属性:变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。对于16位段,是16位无符号数;对于32位段,则是32位无符号数。在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的值可以用$来表示。
类型属性:变量的类型属性定义该变量所保留的字节数。如BYTE(DB,1个字节长)、WORD(DW,2个字节长)、DWORD(DD,4个字节长)、FWORD(DF,6个字节长)、QWORD(DQ,8个字节长)、TBYTE(DT,10个字节长),这一点在数据定义伪操作中已作了说明。
在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会指示出错。
3. 标号
标号在代码段中定义,后面跟着冒号:,它也可以用LABEL或EQU伪操作来定义。此外,它还可以作为过程名定义。标号经常在转移指令或CALL指令的操作数字段出现,用以表示转向地址。标号有3种属性:段、偏移及类型。
段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS
寄存器中。
偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。对于16位段是16位无符号数;对于32位段则是32位无符号数。
类型属性:用来指出该标号是在本段内引用还是在其他段中引用的。如是在段内引用的,则称为NEAR。对于16位段,指针长度为2字节;对于32位段,指针长度为4字节。如在段外引用,则称为FAR。对于16位段,指针长度为4字节(段地址2字节,偏移地址2字节);对于32位段,指针长度为6字节(段地址2字节,偏移地址4字节)。
4.2.2运算符与表达式
1. 算术运算符
算术运算符有:+(加)、-(减)、*(乘)、/(除)、MOD(取余除)。
MOV AL,4*8+5 ;数值表达式
MOV SI,OFFSET BUF+12 ;地址表达式
2. 逻辑运算符
逻辑运算符有:AND(与)、OR(或)、XOR(异或)、NOT(非)。
逻辑运算符只能用于数值表达式中,不能用于地址表达式中。逻辑运算符和逻辑运算指令是有区别的。逻辑运算符的功能在汇编阶段完成,逻辑运算指令的功能在程序执行阶段完成。
在汇编阶段,指令AND AL,78H AND 0FH等价于指令AND AL,08H。
3. 关系运算符
关系运算符有:EQ(相等)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)NE(不等于)。
关系运算符要有两个运算对象。两个运算对象要么都是数值、要么都是同一个段内的地址。运算结果为真时,表示为0FFFFH,运算结果为假时,表示为0000H。
指令MOV BX,32 EQ 45 等价于MOV BX,0
指令MOV BX,56 GT 30 等价于MOV BX,0FFFFH
4. 取值运算符
变量和标号具有段属性、偏移属性和类型属性等,要从变量和标号中析出它们的段地址、偏移地址,变量的类型、元素的个数和占用内存的大小等,就要使用取值运算符(又称分析运算符)。这些运算符是SEG、OFFSET、TYPE、LENGTH、SIZE。