收藏 分销(赏)

微机原理与接口应用技术汇编语言程序教案.doc

上传人:快乐****生活 文档编号:2551119 上传时间:2024-05-31 格式:DOC 页数:6 大小:68.50KB
下载 相关 举报
微机原理与接口应用技术汇编语言程序教案.doc_第1页
第1页 / 共6页
微机原理与接口应用技术汇编语言程序教案.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
课程教案∕讲稿用纸 第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。 例如:SCORE DW 30 DUP(0) 定义了一个变量,TYPE SCORE为2,LENGTH SCORE是30,而SIZE SCORE是60。 5. 合成运算符 也称为修改属性运算符,它能修改变量或标号的原有的类型属性并赋予新的类型。这类运算符是PTR和THIS。 ① PTR的格式: 类型 PTR 表达式 其中类型可以是BYTE、WORD、DWORD、NEAR、FAR,表达式是被修改的变量或标号。 例如NUM被语句 NUM DB 1,3,5,7 定义为字节类型,若要将NUM开始两个字节的数据装入AX,指令 ② THIS的格式: 新符号名 EQU THIS 类型 原符号名 类型 参数,… THIS的功能与PTR相同,只是格式不同。THIS语句中建立一个新的符号名并指定它有THIS后的类型,而新符号名指向下一语句的原符号名的内存地址。例如前面用PTR修改NUM类型可用下面的THIS语句代替。 DNUM EQU THIS WORD NUM DB 1,3,5,7 其中DNUM是字型并指向NUM所指的内存单元,DNUM的存取以字为单位,而NUM仍是字节类型。 4.3伪指令 1. 符号定义伪指令 ⑴ 等值伪指令EQU 格式:<符号名>EQU<表达式> 例如: CONSTANT EQU 256 ;将数256赋以符号名 B EQU [BP+8] ;变址引用赋以符号名B ⑵ 等号伪指令 = 例如: EMP=6 或 EMP EQU 6 ⑶ 定义符号名伪指令LABEL: LABEL伪指令可以定义变量或标号。 格式:<符号名> LABEL <类型> ⑷ 解除定义伪指令PURGE:解除指定符号的定义。 格式:PURGE<符号1,符号2,…,符号N> 解除符号定义后,可用EQU重新定义。 例如: Y1 EQU 7 ;定义Y1的值为7 PURGE Y1 ;解除Y1的定义 Y1 EQU 36 ;重新定义Y1的值为36 2. 数据定义伪指令 格式: [变量] 助记符 操作数,…,操作数 [;注释] 助记符字段说明所用伪指令的助记符,也即伪指令,说明所定义的数据类型。常用的有以下几种: DB伪指令用来定义字节,其后的每个操作数都占有一个字节(8位)。 DW伪指令用来定义字,其后的每个操作数占有一个字(16位,其低位字节在第一个字节地址中,高位字节在第二个字节地址中)。 DD 伪指令用来定义双字,其后的每个操作数占有两个字(32位)。 DF 伪指令用来定义6个字节的字,其后的每个操作数占有48位,可用来存放远地址。这一伪指令只能用于386及其后继机型中。 DQ伪指令用来定义4字,其后的每个操作数占有4个字(64位),可用来存放双精度浮点数。 DT伪指令用来定义10个字节,其后的每个操作数占有10个字节,形成压缩的BCD码。 3. 段定义伪指令 ⑴ SEGMENT和ENDS 段定义伪指令。该指令能对程序分段。其格式为: 段名 SEGMENT [定位类型][组合类型][‘类别’] ┇ 段名 ENDS ⑵ ASSUME 段寄存器指派伪指令。格式为: ASSUME 段寄存器:段名[,段寄存器:段名……] ⑶ ORG 移动地址指针的伪指令。其格式为: ORG 常量表达式 4. 过程定义伪指令PROC和ENDP 过程名 PROC [NEAR/FAR] ┇ 过程名 ENDP 5. 程序标题伪指令TITLE 格式:TITLE 文本 其中,文本是用户给出的字符串,要求长度不超过6个字符。 6. 地址计数器与对准伪指令 ⑴ 地址计数器$ 例如:ARRAY DW 1,2,$+4,3,4,$+4 如汇编时ARRAY分配的偏移地址为0074,则汇编后的存储区将如图4.2所示。 ⑵ ORG伪指令 ORG伪指令用来设置当前地址计数器的值,其格式为: ORG CONSTANT EXPRESSION 如常量表达式的值为N,则ORG伪指令可以使下一个字节的地址成 为常量表达式的值N。 例如: VECTORS SEGMENT ORG 10 VECT1 DW 47A5H VECT2 DW 0C596H ORG 20 VECTORS ENDS 则VECTL的偏移地址值为0AH,而VECT2的偏移地址值为14H。 7. 基数控制伪指令 ⑴ 二进制数 由一串0和1组成其后跟以字母B,如00101100B。 ⑵ 十进制数 由0~9的数字组成的数。一般情况下,后面不必加上标记,在指定其它基数的情况下,后面可跟字母D,例如178D。 ⑶ 十六进制数 由0~9及A~F组成的数,后面跟字母H。这个数的第一个字符必须是0~9,所以如果第一个字符是A~F时,应在其前面加上数字0,如0FFFFH。 ⑷ 八进制数 由数字0~7组成的数,后面可跟字母O或Q,如1777O。 ⑸ .RADIX RADIX伪指令可以把默认的基数改变为2~16范围内的任何基数。格式如下: RADIX EXPRESSION ⑹字符串 字符串可以看成串常量,可以用单引号或双引号把字符串放在其中,得到的是字符串的ASCII码值,例如,'ABCD’。 作业: 教材习题4.1,4.2,4.3,4.4 5 / 6
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服