微机原理 第八章1

上传人:kms****20 文档编号:50947883 上传时间:2018-08-11 格式:PPT 页数:44 大小:1.31MB
返回 下载 相关 举报
微机原理 第八章1_第1页
第1页 / 共44页
微机原理 第八章1_第2页
第2页 / 共44页
微机原理 第八章1_第3页
第3页 / 共44页
微机原理 第八章1_第4页
第4页 / 共44页
微机原理 第八章1_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《微机原理 第八章1》由会员分享,可在线阅读,更多相关《微机原理 第八章1(44页珍藏版)》请在金锄头文库上搜索。

1、第八章 汇编语言程序设计 1、什么叫指令?指令由哪两个部分构成?什么是助记符?指令语句的基本格式。2、什么是寻址方式?操作数 可能 在什么地方?3、8088/8086的六大类指令?数据传送类 算术运算类 逻辑运算与移位类 串操作类 控制转移类 处理器控制类汇编语言(Assembly Language)汇编语言是一种面向机器的程序设计语言,它是一种低级语言。它直接利 用机器提供的指令系统编写程序,具体地说,用助记符表示指令的操作码 和操作数,用标号或符号代替地址、变量和常量。因此可以说,汇编语言 是对机器语言的符号化描述。汇编语言源程序(Source File)用汇编语言指令编写的程序称为汇编语

2、言源程序或汇编源程序。通常,汇 编源程序以.ASM为扩展名,这是汇编程序默认的扩展名。汇编程序(Assembler)汇编程序是将汇编源程序转变为相应目标程序的翻译程序。这个转变的过 程称为汇编。汇编程序按其功能范围又可以分为基本汇编、小汇编和宏汇 编(Micro-Assembler)。宏汇编能够对包含宏指令及大量伪指令的汇 编语言源程序进行汇编,相对而言,功能较强。我们常用的宏汇编程序有微软公司的MASM.EXE和Borland公司的 TASM.EXE(Turbo Assembler)。机器码助记符机器码反汇编汇编ASCII码面向用户B81514MOV AX, 1415HB81514宏汇编程序

3、的主要功能:1、 检查源程序。2、 检测出源程序中的语法错误,给出相应的出错信息。3、若没有语法错误,产生目标文件,并可给出列表文件( .LST,同时列出汇编语言和机器语言的文件)。4、 展开宏指令。目标程序(Object Program)目标程序也称为机器语言程序,是微处理器真正可以执行的程序。这种程 序的指令都是用二进制代码来表示其操作码和操作数的机器语言指令。汇 编语言源程序同其他高级语言源程序一样都需要将它翻译成目标程序才能 在计算机中运行。连接程序(Link Program) 汇编后,程序中每个段的开始地址值都置为0,程序装入内存,各段的段 地址必须在0地址的基础上浮动一个值,此值要

4、在连接时才确定。连接程 序还有一个更重要的功能是可以把多个程序模块连接起来形成一个装入模 块,这样,对于每个单独的模块中的外部符号的值是汇编程序无法确定的 (因为每个模块是单独汇编的),必须由连接程序来确定。连接程序可以 将各种语言编写的源程序经各自的编译程序编译产生的目标程序(扩展名 为.obj)、目标程序库 装配成一个可执行程序。当然各目标程序间必须 建立必要的通信接口。连接程序的主要工作是:1、找到要连接的所有目标模块。2、对所有的目标模块中的所有的段分配内存单元,即确定所有的段地址 值。3、确定所有汇编程序不能确定的偏移地址值(符号地址)。4、构成一个装入模块,即可执行程序。也可给出.

5、MAP文件,文件中记 录的是每个段在内存中的分配情况。可执行程序(Executive Program)可执行程序或称可执行文件是指可以被系统装入内存运行(执行指令)的程序 。扩展名为.COM、.EXE等。可执行程序依然是一个存放在外存中的静态程序 。它们可以直接被MS-DOS操作系统、调试程序DEBUG装入内存,由微处理 器执行(运行)。从连接程序生成的可执行程序的连接映象文件.MAP可以看 出,可执行程序的内存分配起始地址依然为0,因此还需要最终确定这个起始 地址,将这个可执行程序安全地装入内存(不能同其他内存数据地址发生冲突 。例如,从00000H003FFH存放的是中断向量表,DOS操作

6、系统也有常 驻内存的部分等等)。假设在DOS下执行用户程序SAMPLE.EXE:C:SAMPLE回车后就开始运行,其过程大致为:首先由DOS的COMMAND.COM在内存中用户程序可以使用的区域建立一 个256个字节的程序段前缀PSP(Program Segment Prefix),它包含了执 行程序的有关信息和返回DOS的路径(断点保存)。建立PSP以后,可执行程序才被调入内存,将可执行程序放在PSP的后面, 也就是最终确定了可执行程序中所有的代码在内存中的实际地址。此时CS:IP 的值指向可执行程序代码段的第一条指令,可执行程序开始运行。语句类型l 指令语句:格式为: 标号: 助记符 操作

7、数 ;注释每条语句一般占一行,支持续行符。l 伪指令语句伪指令语句是为汇编程序和连接程序提供一些必要的控制信息的管理性语 句,伪指令不产生目标代码。伪指令语句对应的伪操作是在汇编过程中完 成的,而指令语句对应的操作是在可执行程序运行时完成。伪指令语句的格式为:名字 伪操作指令 操作数表 ;注释其中,名字不能用:作为结尾,名字可以是符号常量名、段名、变量 名、过程名、宏名、结构名、记录名等,由不同的伪指令决定。操作数是 由,分开的一系列操作数(参数)。宏指令语句宏指令是具有名称的一段由指令和伪指令语句组成的序列,它实际上是一段汇 编语句序列的缩写;在汇编时,汇编程序用对应的代码序列替代宏指令,这

8、个 过程又称宏展开,展开后在逐条进行汇编。因此,宏指令只节省源程序篇幅。宏指令语句的格式:宏名 MACRO 形式参数表名字和标号统称为标识符(Identifier)。标识符的命名必须遵循以下规则 : 标识符 由字母(az, AZ)、数字(09)或某些特殊符号(如_ $ ? .等)组成; 标识符 不能以数字开头,“?”、“$”不能单独作为标识符;标识符是一 串连续的符号,中间不能有空格符;标识符中若使用点号“.”,点号必须是 第一个字符; 标识符 有效长度为31个字符,若超过只保留前31个字符; 在一个特定的源程序文件中,用户定义的标识符必须是唯一的; 不能使用汇编语言的保留字。汇编语言的保留字

9、为硬指令助记符、伪指 令助记符、操作符、运算符、寄存器名和预定义符号等组成。 由于汇编程序不区别字母大小写(大小写不敏感),所以标识符ABC、 abc、Abc是相同的。这一点和C语言不同。常量、变量和标识符汇编语言的数据可简单地分为常量和变量。常量可作为指令语句的立即 数或伪指令的参数,变量主要作为内存操作数。名字和标号(标识符) 具有逻辑地址和类型属性,主要用做地址操作数,也可以作为立即数和 存储器操作数的名称。常量是没有任何属性的纯纯数值值。在汇编汇编 期间间,它的二进进制值值已能完全 确定,且在程序运行中,它也不会发发生变变化。它可以有如下几种表达形 式:(2)字符串字符串常量是由单引号

10、和双引号括起来的单个字符或多个字符,其数值是每 个字符的ASCII码值。例如:d=64h,AB=4142h,Hello,Assembly!等。(3)符号常量符号常量用标识符表达一个数值。常量若用有意义的符号名来表示,可以提 高源程序的可读性。MASM提供等价机制,用来为常量定义符号名。(4)数值表达式数值表达式是指由操作符(Operator)连接而构成、具有固定数值(能被 计算并产生固定数值)的表达式。汇编程序在汇编过程中计算数值表达式, 最终得到一个确定的数值,所以也是常量。由于数值表达式是在汇编阶段计 算,所以组成数值表达式的各部分必须在汇编时就能确定。常 量变量实质上就是内存数据,这些数

11、据在程序运行期间可以修改。为了便于对 变量的访问,它常常以变量名的形式出现在程序中,也可将变量名当作是内 存单元的符号地址。变量需事先定义才能使用。名字和标号是汇编语言语句(指令或伪指令语句)的第一部分,是由用户命 名的标识符。名字存在于一条伪指令语句中,标号存在于一条指令语句中, 后面跟:。名字可以是符号常量名、段名、变量名、过程名、宏名、结 构名、记录名等,由不同的伪指令决定。名字和标号一经使用便具有两个属性(符号常量名除外):(1)地址属性-名字和标号对应确定的内存单元的逻辑地址,包括段地 址和偏移地址;(2)类型属性-可以是下列类型:1、符号定义伪指令符号定义伪指令有“等价EQU”和“

12、等号=”伪指令。它们的格式为:符号名 EQU 表达式符号名 = 表达式其中,表达式可以是一个常数,一个可以求出常数值的数值表达式或一个 寄存器名、一个指令助记符等。例如:CN EQU 100CN1 EQU CN+100C EQU CXM EQU MOVB EQU ES:BX+20注意:A、由EQU定义的符号在整个程序中不能被再次定义。但“=”允许重复 定义,“=”后的表达式只能是数值表达式。B、EQU和“=”定义的符号不占用内存单元。C、用符号定义伪指令可以增强程序的可读性,并且便于程序的修改。2、数据定义伪指令数据定义(Define)伪指令可以为数据分配存储单元、为该存储单元赋 予一个变量名

13、及初值。数据定义伪指令格式:变量名 DB/DW/DD/DQ/DT 初值表达式1,初值表达式2, ;注释其中,DQ、DT伪指令可用于浮点数。 中的内容为可选项,各初值表达式 可以是整数、字符、字符串、数值表达式、?、使用重复操作符DUP来定义 的数值。“?”表示初值不确定,即未赋初值。变量具有逻辑地址。在程序代码中,通过对变量名的直接引用,指向定义的 第一个数据,通过变量名加减 位移量 存取(访问)以第一个数据为基地址的 前后数据。例 变量名的定义和应用。;数据段BVAR1 DB 100,01100100B,144Q,64H,D,-156;字节变量:不同进制表达同一数值,内存中有连续的6个64H

14、。;注意:-156是容易让人糊涂的表达,尽量避免。;注意:若用BCD码表示十进制数,十进制数的每一位是用二进制码代替的。MININT = 5;符号常量不占内存BVAR2 DB -1, MININT, MININT+5;内存中的数据依次为FFH,5,0AHDB?,2 DUP (20H);预留一个字节空间,重复定义两个内容为20H的字节空间WVAR1 DW 2010H, 4*4;字变量:2010H、0010H, 占4个字节WVAR2 DW ? ;没有初值的字变量DVAR DD12347777H,87651111H,?;两个双字数据,预留一个双字空间ABCDBA,B,C,?MAXINTEQU0AH;

15、符号常量:MAXINT=10STRINGDB ABCDEFGHIJ ;定义字符串CRLFSDB13,10,$;字符:回车、换行、 $=24HARRAYDW MAXINT DUP (0) ;10个初值为0的字变量ARRAY1 DB 2 DUP (2,3, 2 DUP (4);8个字节的内容依次为02 03 04 04 02 03 04 04HSTR1DB ABCDEF;内存单单元的内容依次为为41H,42H,43H,44H,45H,46HSTR2 DWAB,CD,EF;内存单单元的内容依次为为42H,41H,44H,43H,46H,45HSTR3DD AB,CD;内存单单元的内容依次为为42H,

16、41H,00H,00H,44H,43H,00H,00HMOVDL,BVAR1;DL100DECBVAR2+1;BVAR2位移量为1的数据减1,MININT仍为5MOVABC3,DL;字符串成为ABCDMOVAX,WORD PTR DVAR0;AX7777HMOVDX,WORD PTR DVAR2;DX1234H;取双字到DX:AXADDAX,WORD PTR DVAR4ADCDX,WORD PTR DVAR6;加双字到DX:AXMOVWORD PTR DVAR8,AXMOVWORD PTR DVAR10,DX;保存双字到DVAR的第3个双字单元MOVCX,MAXINT;循环次数:10MOVBX,0AGAIN:

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

当前位置:首页 > 生活休闲 > 科普知识

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