微机原理第4章微型计算机原理及应用教案

上传人:tian****1990 文档编号:75683791 上传时间:2019-01-31 格式:PPS 页数:70 大小:613.50KB
返回 下载 相关 举报
微机原理第4章微型计算机原理及应用教案_第1页
第1页 / 共70页
微机原理第4章微型计算机原理及应用教案_第2页
第2页 / 共70页
微机原理第4章微型计算机原理及应用教案_第3页
第3页 / 共70页
微机原理第4章微型计算机原理及应用教案_第4页
第4页 / 共70页
微机原理第4章微型计算机原理及应用教案_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《微机原理第4章微型计算机原理及应用教案》由会员分享,可在线阅读,更多相关《微机原理第4章微型计算机原理及应用教案(70页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计,4.1 汇编语言程序 4.1.1汇编语言的基本概念 1.机器语言 机器语言是用来直接描述机器指令、使用机器指令的规则等。它是CPU能直接识别的唯一一种语言,也就是说,CPU能直接执行用机器语言描述的程序。它的表现形式是二进制编码。,2.汇编语言 为了改善机器指令的可读性,人们选用了一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与此同时,也把CPU内部的各种资源符号化,使用该符号名也等于引用了该具体的物理资源。我们称这些具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。 汇编语言是

2、汇编指令集、伪指令集和使用它们规则的统称。用汇编语言编写的程序称为汇编语言程序,或汇编语言源程序,在本教材中或特定的环境下,可简称为源程序。,3.汇编程序 用汇编语言编写的程序大大提高了程序的可读性,但失去了CPU能直接识别的特性。把机器指令符号化增加了程序的可读性,但引起了如何让CPU知道程序员的用意,并按照其要求完成相应操作的问题。解决该问题就需要一个翻译程序,它能把汇编语言编写的源程序翻译成CPU能识别的机器指令序列(也叫目标程序)。这里,我们称该翻译程序为汇编程序。目前,常用的汇编程序有:MASM、TASM和DEBUG等。,4.1.2 汇编语言源程序的格式 微机系统的内存是分段管理的,

3、为了与之相对应,汇编语言源程序也分若干个段来构成。8086CPU有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段。 在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。 段定义的一般格式如下: 段名SEGMENT对齐类型 组合类型 类别 ;段内的具体内容 段名ENDS 其中:“段名”必须是一个合法的标识符,前后二个段名要相同。,1、数据段结构: 数据段名 SEGMENT (用变量定义预置的数据空间) 数据段名 ENDS 2、堆栈段结构: 堆栈段名 STACK (用变量定义预置的堆栈空间) 堆栈段名 ENDS,3、代码段结构: 代码段名 SEGMENT AS

4、SUME 定义的寻址关系 过程名 PROC (程序段) 过程名 ENDP 代码段名 ENDS 过程名或起始标号,4.2 汇编语言的语句 4.2.1 指令语句 指令系统中每条指令都属于此类。它在汇编时会产生目标代码,对应着CPU 的一种作。每一条指令语句在汇编时都要产生一个可供机器执行的机器目标代码,所以这种语句又叫可执行语句。 指令语句格式由四部分组成。语句格式如下: 标号: 指令助记符 操作数 ;注释;,图4-1指令语句格式,标号:主要用来定义标号、名字,以便在操作数域中引用它们。标号和名字都是由标识符组成的。标识符可由最多31个字母、数字和特殊字符所组成它必须以字母或特殊字符开始。标识符的

5、组成规则如下: 1、字符个数为131个; 2、标识符的第一个字符必须是字母,问号“?”,“”或下划线_这四种字符中的一个; 3、从第二个字符开始,可以是字母,数字、?、或_; 4、不能使用属于系统专用保留字(Reserved word)。保留字主要有CPU中各寄存器名(如AX,CS),指令助记符(如MOV,ADD),伪指令(如SEGMENT,DB),表达式中的运算符(如GE,EQ)和属性操作符(如PTR,OFFSET,SEG)等。,指令助记符:又称作操作码,它是语句中唯一必不可少的部分。 指令语句中的助记符规定这个语句中的操作类型;伪指令语句中的助记符规定这个语句中的伪操作功能。 操作数:它用

6、来存放助记符要求的操作数,使之能实现预期的目的。指令语句可能有一个、两个或没有操作数,而伪指令是否需要操作数,需要何种操作数,随伪操作命令不同而不同。可充当操作数的有常量、变量、标号、寄存器和表达式等。 注释:注释以分号(;)开头,用来说明语句或程序功能和含义的符号序列。它增加了程序的可读性,为修改、调试、交流提供了方便。,4.2.2 伪指令语句 伪指令不象机器指令那样实在程序运行期间由计算机来执行的,它是汇编程序对源程序汇编期间由汇编程序处理的操作,是主要用来指示汇编程序如何进行汇编工作的,它们可以完成如数据定义、分配存储区、只是程序结束等功能。伪指令不产生目标代码。 伪指令语句格式: 名字

7、 伪指令助记符 操作数 ;注释,指令语句中的标号后面跟有冒号(:),而在伪指令中的名字后面没有冒号,这是两种语句格式上的不同点。 MASM共有五十多条伪指令,可分为九大类。下面主要介绍符号定义,数据定义,属性修改,段定义等伪指令语句。,1、符号定义(Symbol_definetion)伪指令 符号定义(Symbol_definetion)伪指令 汇编语言中所有变量名,标号名,记录名,指令助记符,寄存器等均称为符号。这些符号可通过伪操作重新命名,或定义其它名字和新的类型,这给程序设计带来了很大的灵活性。这类伪指令主要有等值伪指令EQU,等号伪指令=,LABEL伪指令。,(1)等值伪指令EQU 语

8、句格式:符号名 EQU 表达式 功能及说明:用来为常量、表达式及其他各种符号定义一个等价的符号名,但它并不申请分配存贮单元(在该语句中,符号名一定不可省)。,1)常数或数值表达式 【例4-4】 COUNT EQU 5 NUM EQU 13+5-4 2)地址表达式 【例4-5】 ADR1 EQU DS:BP+14 3)变量、标号或指令助记符 【例4-6】 CREG EQU CX CBD EQU DAA L1 EQU SUBSTART WO EQU WORD PTR DA BYTE,(2)等号伪指令 = 语句格式:变量名或标号 = 类型 功能及说明:等号伪指令的功能与EQU基本相同,只是使用等号“

9、=”定义过的符号可以被重新定义,使其具有新的值。 例如: CONST=35 ;定义CONST为常数 CONST=57 ;CONST被重新定义,(3)LABEL伪指令 语句格式:变量名或标号 LABEL 类型 功能及说明:它用来定义或修改变量或标号类型。当定义变量名时类型可以是BYTE、WORD、DWORD、结构名和记录名;而定义标号时,则类型为NEAR或FAR。 【例4-7】DATA1 LABEL BYTE DB 45 定义变量为定字节变量,以上语句等价于 DATA1 DB 45,2、数据定义(Data_definetion)伪指令 数据定义(Data_definetion)伪指令 用来定义一

10、数据存储区,并可为其赋予初值,其类型由所使用的数据定义伪指令:DB,DW,DD,DQ,DT来确定。其中变量名是任选的,若有变量名,则将表达式指定类型的数据存入与该变量名相应的地址开始的连续存储单元中;否则将这些数据顺序存放。 数据定义伪指令用来为源程序中被处理的数据安排内存,赋予初值及定义名字的。下面主要介绍DB、DW、DD,DQ,DT伪指令和分析运算符1(SEG,OFFSET,TYPE)、分析运算符2(LENGTH,SIZE)。,(1)DB伪指令 语句格式:变量名 DB 表达式 其右边的表达式可以是以下的几种形式: 1)数值表达式或数值表达式串; 2)字节常量和字节常量串; 3)疑问号:?(

11、表示此变量的初值不确定); 4)ASCII码字符串,即可以定义用单引号括起来的字符串(只有用DB定义变量时,才允许字符串长度超过2个字符); 5)重复子句,其格式为:( DUP 表达式),重复因子n为正整数,表示定义了n个相应类型的数据单元; 6)以上五种形式的组合。,(2)DW伪指令 语句格式:变量名 DW 表达式 功能及说明:它与DB不同的是它为程序定义的是一个字数据区,它对数据区中数据的存取是以字(即两个字节)为单位的。 (3)DD,DQ,DT伪指令 语句格式:变量名 DD(DQ,DT) 表达式 功能及说明:与DB类似。DD定义双字数据区,DQ定义8个字节数据区,DT定义10个字节数据区

12、。DD和DW只能定义至多两个字符的字符串。 (4)分析运算符1(SEG,OFFSET,TYPE) 语句格式:分析运算符(SEG,OFFSET,TYPE) 变量或标号,功能及说明: 1)SEG 取出其后变量或标号所在段的段首址。 当运算符SEG加在一个变量名或标号的前面时,得到的运算结果是这个变量名或标号所在段的段基值。 2)OFFSET取出其后变量或标号的偏移首址。 当运算符OFFSET加在一个变量名或标号前面时,得到的运算结果是这个变量或标号在它段内的偏移量。,(5)分析运算符2(LENGTH,SIZE) 语句格式:分析运算符(LENGTH,SIZE) 变量 功能及说明: 1)LENGTH

13、取出其后变量元素的个数(注意LENGTH只对用重复运算符定义过的变量有效)。 这个运算符仅加在变量的前面,返回的值是指数组变量的元素个数。如果变量是用重复数据操作符DUP说明的,则返回外层DUP给定的值:如果没有DUP说明,则返回的值总是1。,2)SIZE 取出其后变量所占存贮空间的总字节数。 这个运算符仅加在变量的前面,返回数组变量所占的总字节数,且等于LENGTH和TYPE两个运算符返回值的乘积。 例如对于前面例子中K1,K2,K3,K4变量,下面指令就表示出SIZE运算符的返回值:,3、属性修改(Attribute modifying operators)伪指令 这种运算符用来对变量、标

14、号或某存储器操作敷的类型属性进行修改。 (1)PTR运算符 这是类型属性修改运算符使用格式为; 类型 PTR 地址表达式 其中;地址表达式是指要修改类型属性的标号、变量或用作地址指针的寄存器。这运算符的含意是指定由地址表达式确定的存储单元的类型-BYTE、WORD、DWORD、NEAR和FAR等。这种修改是临时性的,仅在有这修改运算符的语句内有效。,(2)THIS运算符 运算符格式; THIS 类型 使用这个运算符的作用是,把运算符后面指定的类型属性赋给当前的存储单元,而该单元的段和偏移量属性不变。 【例4-13】 DA_BYTE EQU THIS BYTE DA_WORD DW 20H DU

15、P(0) 上面第二语句是定义了20H个字单元,如要对这数组元素中某单元以字节形式访问它,则可以很方便的直接使用DA_BYTE变量名即可。,4、段定义(Segment_definetion)伪指令 为了实现分段结构,MASM提供了一组按段组织程序和调度、分配、使用存贮器的伪指令,他们有SEGMENT、END,ASSUME、ORG等。当程序中需要设置一个段时,就必须首先使用段定义伪指令。 (1)段定义伪指令 语句格式:段名 SEGMENT 定位类型 组合类型 类别 . 段名 ENDS 功能及说明:SEGMENT-ENDS必须成对出现,前者为某个段定义了一个名字,即段名,并说明该段的开始;而后者说明

16、该段的结束。其中段名是必须的,它可由用户自己确定。,4、段定义(Segment_definetion)伪指令 为了实现分段结构,MASM提供了一组按段组织程序和调度、分配、使用存贮器的伪指令,他们有SEGMENT、END,ASSUME、ORG等。当程序中需要设置一个段时,就必须首先使用段定义伪指令。 (1)段定义伪指令 语句格式:段名 SEGMENT 定位类型 组合类型 类别 . 段名 ENDS 功能及说明:SEGMENT-ENDS必须成对出现,前者为某个段定义了一个名字,即段名,并说明该段的开始;而后者说明该段的结束。其中段名是必须的,它可由用户自己确定。,(2)段指定伪指令ASSUME 语句格式:ASSUME 段寄存器:段名 ,段寄存器:段名 功能及说明:该语句一般出现在代码段中,用来设定段寄存器与段之间的对应关系。即某一段的段址存放在相应的段寄存器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号