汇编语言的基本表达及其运行课件_第1页
汇编语言的基本表达及其运行课件_第2页
汇编语言的基本表达及其运行课件_第3页
汇编语言的基本表达及其运行课件_第4页
汇编语言的基本表达及其运行课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言的基本表达及其运行

5.1汇编语言和汇编程序的基本概念

5.1.1汇编语言汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、I/O端口等进行处理,同时也能直接使用CPU指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度快。

5.1.2汇编程序

用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编任务的程序称为汇编程序。有基本汇编ASM(Assembler)和宏汇编MASM(MacroAssembler)两种。汇编程序以汇编语言源程序文件作为输入,并由它产生两种输出文件:目标程序文件和源程序列表文件。目标程序文件经连接定位后由计算机执行;源程序列表文件将列出源程序、目标程序的机器语言代码及符号表。

5.2汇编语言源程序书写格式

5.2.1汇编语言源程序的分段结构通常,一个汇编源程序一般应该由3个逻辑段组成,即数据段、堆栈段和代码段。每个逻辑段以SEGMENT语句开始,以ENDS语句结束。整个源程序以END语句结束。数据段用来在内存中建立一个适当容量的工作区,以存放常数、变量等操作数据。堆栈段用来在内存中建立一个适当的堆栈区,以便在中断、子程序调用时使用。代码段包括了许多以符号表示的指令,其内容就是程序要执行的指令。5.2.2汇编语言源程序的语句类型和语句格式

1.语句类型

8086宏汇编MASM使用的语句可以分成3种类型:指令语句:这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操作。伪指令语句:伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。宏指令语句:宏指令语句是由编程者按照一定的规则来定义的一种较“宏大”的指令,可包括多条指令或伪指令。2.语句格式一般情况下,汇编语言的语句可以由以下几部分组成:

[名字]操作符

[操作数][;注释]

名字是一个符号,它表示本条语句的符号地址。一般来说,名字可以是标号和变量,统称为标识符。注意:标号和变量都具备3种属性——段属性、偏移属性及类型属性。操作符可以是机器指令、伪指令和宏指令的助记符。操作数字段是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分。

5.38086汇编语言中的标识符、表达式和运算符

5.3.1标识符汇编语言每条语句的第一个字段是它的名字字段,名字可以是标号或变量,这两者又称为标识符。重点是要掌握其组成规则和它的3个属性。

5.3.2表达式和运算符在表达式中,运算符充当着重要的角色。

8086宏汇编有算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共5种。下面分别讨论5种运算符的作用:(1)算术运算符用于完成算术运算,有+(加法)、-(减法)、×(乘法)、/(除法)、MOD(求余)、SHL(左移)、SHR(右移)共7种运算。(2)逻辑运算符的作用是对其操作数进行按位操作。逻辑运算符有AND(与)、OR(或)、XOR(异或)和NOT(非)。(3)关系运算符的运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)共6种。

(4)分析运算符是对存储器地址进行运算的。有5个:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求变量长度)和SIZE(求字节数)。

(5)综合运算符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。

有6个综合运算符:PTR、段属性前缀、SHORT、THIS、HIGH和LOW。

各类运算符和常数、寄存器名、标号、变量一起共同组成表达式。在计算具有多个运算符的表达式值时,按以下规则操作:l

优先级高的先运算,优先级低的后运算。l

当优先级相同时,按表达式中从左到右的顺序进行运算。l

使用括号可以提高表达式运算的优先级。5.4伪指令语句

在汇编语言中,伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。例如定义数据、分配存储区、定义段及定义过程等都采用伪指令表示。

5.4.1数据定义伪指令

数据定义伪指令用来定义一个变量的类型,并将所需要的数据放入指定的存储单元中,也可以只给变量分配存储单元,而不赋予特定的值。1.数据定义伪指令的一般格式为:[变量名]伪指令

操作数

[,操作数…][;注释]2.常用的数据定义伪指令

定义字节变量伪指令DB

定义字变量伪指令DW

定义双字变量伪指令DD

定义四字变量伪指令DQ

定义十字节变量伪指令DT5.4.2符号定义伪指令

符号定义伪指令的用途是给一个符号重新命名,或定义新的类型属性等。这些符号可以包括汇编语言的变量名、标号名、过程名、寄存器名以及指令助记符等。常用的符号定义伪指令有EQU、=、LABLE。

5.4.3段定义伪指令

段定义伪指令的用途是在汇编语言程序中定义逻辑段,用它来指定段的名称和范围,并指明段的定位类型、组合类型及类别。常用的段定义伪指令有SEGMENT、ENDS和ASSUME等。

5.4.4过程定义伪指令

在程序设计中,经常将一些重复出现的语句组定义为子程序。子程序又称为过程,可以采用CALL指令来调用。使用格式:过程名PROC[NEAR]/FAR

(语句系列)

RET

…(语句系列)过程名ENDP

调用一个过程的格式为:

CALL过程名

5.4.5结构定义伪指令

结构就是相互关联的一组数据的某种组合形式。用伪指令STRUC和ENDS把相关数据定义语句组合起来,便构成一个完整的结构。使用格式:结构名

STRUC

(数据定义语句序列)结构名ENDS5.4.6模块定义与连接伪指令

在编写规模较大的汇编语言源程序时,可以将整个程序划分为几个独立的源程序,称之为模块。将各模块分别进行汇编,生成各自的目标程序,最后将它们连接成为一个完整的可执行程序。各模块之间可以相互进行符号访问。为了进行模块之间连接和实现相互的符号访问,以便进行变量传送,通常使用以下几个伪指令:

NAME、END、PUBLIC、EXTRN。

5.4.7程序计数器$和ORG伪指令

1.程序计数器$

字符“$”在8086宏汇编中具有一种特殊的意义,把它称为程序计数器。表示位置计数器的当前值,它可以在数值表达式中使用。在程序中,“$”出现在表达式里,它的值为程序下一个所能分配的存储单元的偏移地址。

2.ORG伪指令

ORG是起始位置设定伪指令,用来指出源程序或数据块的起点。利用ORG伪指令可以改变位置计数器的值。

5.5汇编语言程序上机过程

5.5.1汇编语言的工作环境及上机步骤

1.硬件环境目前8086汇编语言程序一般多在IBMPC/XT及其兼容机上运行,要求机器具备基本配置即可以了。

2.软件环境主要是指支持汇编语言程序运行和帮助建立汇编语言源程序的一些软件,主要包括:(1)DOS操作系统(2)编辑程序EDIT.COM(3)宏汇编程序MASM.EXE(4)连接程序LINK.EXE(5)调试程序DEBUG.COM

3.运行汇编语言程序的步骤

(1)用编辑程序EDIT.COM建立扩展名为.ASM的汇编语言源程序文件;(2)用汇编程序MASM.EXE将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为.OBJ;(3)若在汇编过程中出现语法错误,根据错误信息提示(如位置、类型、说明),用编辑软件重新调入源程序进行修改。无错误时采用连接程序LINK.EXE把目标文件转化成可执行文件,其扩展名为.EXE;(4)生成可执行文件后,在DOS命令状态下直接键入文件名就可执行该文件。5.6汇编语言程序运行实例

本节中给出的程序是从键盘输入10个字符,然后以与键入相反的顺序将10个字符输出到显示屏幕上。设定源程序名为STR.ASM。5.6.1用EDIT建立汇编语言源程序在DOS状态下,调用EDIT编辑程序建立文件名为STR.ASM的汇编源程序。其屏幕显示如下图:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论