汇编语言程序设计本章学习目标通过本章的学习应当掌握以

上传人:宝路 文档编号:48215215 上传时间:2018-07-11 格式:PPT 页数:65 大小:167.57KB
返回 下载 相关 举报
汇编语言程序设计本章学习目标通过本章的学习应当掌握以_第1页
第1页 / 共65页
汇编语言程序设计本章学习目标通过本章的学习应当掌握以_第2页
第2页 / 共65页
汇编语言程序设计本章学习目标通过本章的学习应当掌握以_第3页
第3页 / 共65页
汇编语言程序设计本章学习目标通过本章的学习应当掌握以_第4页
第4页 / 共65页
汇编语言程序设计本章学习目标通过本章的学习应当掌握以_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《汇编语言程序设计本章学习目标通过本章的学习应当掌握以》由会员分享,可在线阅读,更多相关《汇编语言程序设计本章学习目标通过本章的学习应当掌握以(65页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计 本章学习目标通过本章的学习,应当掌握以下内容: 了解汇编语言的基本知识和特点。 熟悉汇编语言的程序结构、段定义以及语句的格式。 掌握汇编语言常用伪指令的使用方法。 熟练掌握汇编语言程序设计的基本方法:顺序结构、 分支结构、循环结构和子程序结构。 掌握程序设计中的宏指令和常用的系统功能的调用方 法。4、1 机器语言、汇编语言与高级语言 程序设计语言通常分为3类:机器语言(Machine Language)汇编语言(Assembler Language)高级语言(High Level Language) 4、1、1 机器语言和汇编语言 1机器语言 (1)机器指令 机器指令

2、是指用二进制编码的指令,以表示计算机所 要进行操作数及操作对象(数据或数据地址)。 (2)指令系统和机器语言 指令系统是指特定计算机上机器指令的集合。机器语 言是由指令系统以及机器指令的使用规则构成的。 机器语言是计算机惟一能识别的语言,只有用机器语 言描述的程序,计算机才能直接执行。 (3)机器语言的主要特点 机器语言主要具有下列两个特点: 机器语言与机器密切相关 机器语言设计程序非常困难,但容易实现高性能 2 汇编语言 以助记符描述的指令称作汇编格式指令或符号指令, 通常简称指令。指令和伪指令的集合及其程序设计规 则便构成了汇编语言。用汇编语言编写的程序就是汇 编语言源程序。 4、1、2

3、汇编语言与高级语言 机器语言和汇编语言都是面向机器的,是低级语言。 高级语言在程序设计的简易性与代码的可移植性等方 面有了质的飞跃。当然,用高级语言编写的源程序必 须经过编译和连接,将其转变为可执行程序或借助于 解释程序方可在计算机上运行。语言汇编语言高级语言 代码效率高较低源程序可读性较差好 对硬件的依附 性高低程序员硬件知 识高较低应用范围较广广泛汇编语言和高级语言的比较:4、1、3 汇编与连接 1汇编程序 汇编是把汇编语言程序翻译成机器语言描述的目标程序 的过程。 汇编程序是完成汇编任务的程序。 2连接程序 连接程序的主要功能是实现多个目标文件及库文件的连 接,并完成浮动地位的重定位。

4、从汇编语言源程序到可执行程序的生成过程如图所示。汇编语言源程序汇编目标程序连接可执行程序4、2 汇编语言源程序的结构 4、2、1 汇编语言的语句格式 汇编语言源程序中的每个语句可以由4项组成,格式如下 name operation operand ;comment 名字项 操作项 操作数项 ;注释项 下面分别说明各项的表示方法。1名字项 源程序中用下列字符表示名字: 字母:AZ或az; 数字:09; 专用字符号:?、 、$; 一般来讲,名字项可以是标号或变量。 (1)标号:在代码段定义,后面跟冒号: 它有三种属性:段、偏移及类型。 段属性:定义标号的段起始地址,在CX寄存器中。 偏移属性:16

5、位无符号数。 类型属性:用来指出该标号是在本段内引用还是在其 他段内引用的。 (2)变量:变量在除代码以外的其他段中定义,后面不 跟冒号。它也可以用LABLE或EQU伪操作来定义。变量 经常在操作数字段出现。 它也有段、偏移及类型三种属性。 段属性定义变量的段起始地址,此值必须在一个段寄 存器中。 偏移属性变量的偏移地址是16位无符号数,它代表从 段的起始地址到定义变量的位置之间的字节数。在当前段 内给出变量的偏移值等于当前地址计数器的值,当前地址 计数器的值可以用 $ 来表示。 类型属性变量的类型属性定义该变量所保留的字节数 。 2操作项 操作项可以是指令、伪操作或宏指令的助记符。 3操作数

6、项 操作数项由一个或多个表达式组成,多个操作数项之间一 般用逗号分开。 4注释项 注释项用来说明一段程序或一条或几条指令的功能,它是 可有可无的。 4、2、2汇编语言源程序的段定义 段定义伪操作的格式如下: segment-name SEGMENT segment-name ENDS 其中删节号部分,对于DS、ES和SS来说,一般是存贮单 元的定义、分配等伪操作;对于代码段则是指令及伪操作 。 此外,还必须明确段和段寄存器的关系,这可用 ASSUME伪操作来实现,其格式为: ASSUME assignment,assignment 其中 assignment 说明分配情况,其格式为: 段寄存器

7、名:段名 其中段寄存器名必须是CS、DS、ES和SS中的一个, 而段名则必须是由SEGMENT定义的段中的段名。 4、 2、.3 汇编语言源程序的结构 汇编语言源程序的程序基本结构是段,一个汇编语言 源程序由若干个代码段、数据段、附加段和堆栈段组 成。段之间的顺序可以随意安排,通常数据段在前, 代码段在后。任何可执行汇编语言程序至少要有一个 代码段,通常还可能有数据段和堆栈段。每个段都有 段首指令和段结束指令,段的内容介于这两条指令之 间。其一般结构如下: SSEG SEGMENT STACK堆栈段的内容 SSEG ENDS DSEG SEGMENT DATA数据段的内容 DSEG ENDS

8、CSEG SEGMENT CODE代码段的内容 CSEG ENDSEND 启动标号 对于一般程序来说,定义太多的段只会增加程序设计 的复杂性,通常需要一个代码段、一个数据段和一个 堆栈段,有时可包含一个附加段。 1为什么要用ASSUME语句指令 mov bl,xdmov xe,bl 被汇编为 mov bl,byte ptr0000h mov byte ptr es:0000h,bl 其中,在变量xe前增加了段超越前缀ES:,这就是 ASSUME的作用,也仅此而已。 2设置段寄存器的初值(1)CS与IP CS与IP的初值不能在程序中显示设置,由系统自动设置 为END后指定的起始地址。 (2)DS

9、和ES、 DS和ES的初值必须在程序中设置。 设置方法如下: MOV AX,SEG NAME MOV DS,AX (3)SS与SP SS与SP初值的设置方法有下列两种: 在程序中显示设置,类似于DS,例如: MOV AX,SSEG MOV SS,AX MOV SP,ST_TOP 若堆栈段定义时给出了参数STACK,则连接器LINK 自动将SS:SP指向栈底; 若未定义堆栈段,则由系统指定堆栈,SS:SP也由 系统自动设置。 例4.2:在数据段定义首地址为A的10个字符,将这10 个字符以相反次序传送到附加段首地址为B的内存单元 中。 DSEG SEGMENT A DB 1234567890 D

10、SEG ENDS ESEG SEGMENT B DB 10 DUP(?) ESEG ENDS CSEG SEGMENTASSUME CS:CSEG,DS:DSEG, ES:ESEG START: MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AX LEA SI,ALEA DI,BADD DI,9MOV CX,10 MOVE: CLDLODSBSTDSTOSBLOOP MOVEMOV AH,4CHINT 21H CSEG ENDSEND START4、3 汇编语言的运算符1算术运算符 算术运算符主要包括+、*、/和MOD、等。其中 MOD是指除法运算后得到的余数。

11、语法格式为: expr1expr2等价于expr1+expr2。 2逻辑运算符 逻辑运算符主要包括AND、OR、XOR、NOT、SHR及 SHL。逻辑操作符是按位操作的,它只能用于数字表达 式中。 3关系运算符 关系运算符主要包括EQ(相等时为真)、NE(不相等 时为真)、LT(小于时为真)、GT(大于时为真)、 LE(小于或等于时为真)、GE(大于或等于时为真) 等6种。4数值回送(Value returning)操作符 它有TYPE、LENGTH、SIZE、OFFSET、SEG 5种 。这些操作符把一些特征或存储器地址的一部分作 为数值回送。下面分别说明各个操作符的功能。(1)TYPE 格

12、式:TYPE Variable或label 如果是变量,则汇编程序将回送该变量的以字节数 表示的类型,DB为1,DW为2,DD为4,DQ为8, DT为10。 如果是标号,则汇编程序将回送代表该标号类型的 数值:NEAR为1,FAR为2。 (2)LENGTH 格式为:LENGTH Variable 对于变量中使用DUP的情况,汇编程序将回送分配 给该变量的单元个数。而对于其他情况则回送1。(3)SIZE 格式为:SIZE Variable 其汇编的值为LENGTH Variable * TYPE Variable,即 回送直接分配给该变量的总的字节数。 (4)OFFSET 格式为:OFFSET

13、Variable或label 汇编程序将回送变量或标号的偏移地址值。 (5)SEG 格式为:SEG Variable或label 汇编程序将回送变量或标号的段地址值。 5属性操作符 属性操作符主要包括PTR、段操作符、SHORT、THIS 、HIGH和LOW 6种。 (1)PTR 格式为:type PTR expression PTR用来建立一个符号地址,但它本身并不分配存储 器,只是用来对已分配的存储地址赋予另一种属性, 使该地址具有另一种类型。 (2)段操作符: 用来表示一个标量、变量或地址表达式的段属性。例 如,用段前缀指定某段的地址操作数MOV AX,ES: BX+SI。可见它是用段寄

14、存器地址表达式来表示的。 (3)SHORT 用来修饰JMP指令中转向地址的属性,指出转向地址 是在下一条指令地址127个字节范围之内。 (4)THIS 格式为:THIS attribute或type (5)HIGH和LOW 称为字节分离操作符,它接收一个数或地址表达式, HIGH取其高位字节,LOW取其低位字节。4.4 伪指令 构成汇编语言源程序的语句主要包括两类: 指令和伪指令。 指令是在程序运行期间有CPU执行的,汇编后由对应的 机器代码所取代。 伪指令是不可执行的,它只是在源程序汇编期间由汇编 器处理的命令,用来指示汇编器为数据分配内存空间 ,或者为汇编器提供源程序结束或段定义等信息。

15、1、 变量定义伪指令 变量定义伪指令用来为数据分配内存空间,并设置相 应内存单元的初始值,其形式为: 变量名 变量定义符 操作数,操作数 变量名是一个符号地址,表示其后操作数的首地址, 多个操作数构成一个数组。变量名是程序员给出的标 识符,为可选项,给出变量名只是为了按名存取其对 应的内存单元。 变量定义符主要包括下列几种: (1)DB(Define Byte):定义字节,后面的每个操作 数占1个字节。 (2)DW(Define Word):定义字,后面的每个操作 数占1个字。 (3)DD(Define DWord):定义双字,后面的每个操 作数占2个字。 (4)DQ(Define QWord):定义四字,后面的每个操 作数占4个字。 (5)DT(Define Tbyte):定义十字节,后面的每个操 作数占10个字节。 操作数可以为: (1)数值表达式; (2)ASC码字符串;(3)地址表达式; (4)?(只保存内存空间,未定义初始值); (5)DUP 子句,其格式为: 重复次数 DUP (操作 数,操作数),DUP子句可以嵌套。 2、符号定义伪指令 符号定义伪指令的基本形式为: 符号名 EQU 表达式 符号名

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

当前位置:首页 > 中学教育 > 教学课件

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