汇编 4 汇编语言程序设计基础.ppt_第1页
汇编 4 汇编语言程序设计基础.ppt_第2页
汇编 4 汇编语言程序设计基础.ppt_第3页
汇编 4 汇编语言程序设计基础.ppt_第4页
汇编 4 汇编语言程序设计基础.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第四章 汇编语言程序 设计基础,汇编程序的功能: 1. 用编辑程序产生汇编语言的源程序,扩展名为ASM的源文件; 2. 源文件是用汇编语言的语句编写的程序,它不能被机器识别,所以,需要经过汇编程序加以翻译; 因此,汇编程序的作用,将源程序转换成用二进制代码表示的目标文件,OBJ文件。,2,3. OBJ文件已经是二进制文件,,但它不能在机器上直接运行,其必须经过连接程序 LINK 把目标文件与库文件或其它目标文件连接在一起,才能形成可执行的EXE文件。 EXE文件,可由DOS装入存储器,并在机器上运行。 因此, 在机器上运行汇编语言程序的步骤如下: 1. 用编辑程序建立 ASM 源程序; 2

2、. 用ASM程序将ASM文件,转换成OBJ文件; 3. 用LINK程序,将OBJ文件转换成EXE文件; 4. 用DOS命令,直接键入文件名,即可执行该程序。,3,IBM PC机有两个汇编程序:,小汇编程序ASM 、宏汇编程序MASM 汇编程序的主要功能: 1. 检查源程序; 2. 测出源程序中的语法错误,并给出出错信息; 3. 产生源程序的目标程序,并可给出列表文件(同时列出汇编语言和机器语言的文件,称为LST文件); 4. 展开宏指令。,4,一、汇编语言的语句格式,一、汇编语言的语句分类 汇编语言的语句分为三类: 汇编指令语句、 宏指令语句、 伪指令语句。 汇编指令: 用助记符表示的机器指令

3、; 宏指令语句: 用一条自定义指令取代的一组汇编指令; 伪指令: 指示性语句,它作用是向汇编程序提供汇编过程要求的一些辅助信息。,5,二、汇编语言的语句格式,汇编语言的三种语句可以用以下格式统一表示: 教材: P55 图 所示 图中,每个语句由4个项组成,其中,方括号括起来的项,是可选项。 汇编指令、宏指令、伪指令格式如图: 教材:P55 P56,6,1. 名字项,通常使用 字母、数值、特殊字符来表示名字。 名字项一般为 标号 或者 变量。 都是表示本语句的符号地址。 标号: 指出某条指令所存放的内存单元的符号地址; 变量: 某操作数所存放单元的符号地址。,7,* 标号:,只在代码段中定义,后

4、面紧跟冒号: 其,共有三种属性: 段属性: 定义标号的段起始地址,总是在CS中; 偏移属性: 表明从段起始地址到定义标号的位置之间的字节数,其EA总在IP中; 类型属性: 指出该标号是在本段中引用,还是其它段中引用。 段内应用: NEAR PTR 段间引用: FAR PTR,8,例如:,JMP DATA1 JMPNEAR PTR DATA1 JMPFAR PTR DATA1 * 变量: 其在除代码段外的其它段中定义。 变量也有三种属性: 断属性: 一般在DS中,也可在ES,SS中 偏移属性 类型属性,定义该变量保留的字节数; BYTE WORD DWORD DQ DT,9,2. 操作码项,操作

5、码可为如下三种: 指令、伪指令、宏指令 指令: 汇编程序将其翻译成机器语言 伪指令: 根据语句要求的功能进行处理 宏指令: 根据宏指令定义展开,并翻译成机器语言 3.操作数项 由一个或多个操作数组成,它们之间用“,”分开。,10,操作数项分为两类:,常数、表达式 1.常数 * 数字常数 如: 0064H * 字符串常数 如: ok * 符号常数 如:MOV AX,BBC 2.表达式 * 算术运算符 如:MOV AX,(E+4)+2,11,* 逻辑运算符,如:MOV AX,0A3H AND 0FEH * 分析操作符 * OFFSET 回送变量/标号的偏移地址 如: MOV AX,OFFSET C

6、OUNT * SEG 回送变量/标号的段地址 如: MOV DS,SEG COUNT * 属性操作符 一共有三种属性操作符,12,* PTR,格式: TYPE PTR expression 其TYPE(类型)可为: BYTE,WORD,DWORD, FAR,NEAR 几种类型; 作用: PTR定义后,将表达式按照PTR前的类型来看待。 例如: MOV BX,5 ,设(BX)=0100H 此条指令没说明是在内存中存入字节还是字。 因此, MOV BYTE PTR BX,5 MOVWORD PTR BX,5,13,* 段跨越前缀,表明一个标号、变量、地址表达式的段属性 例如: 若默认BX中数据在D

7、S中,我们可使用断跨越前缀使其在ES或SS中。 MOVAX,ES:BX MOVAX,SS:BX * SHORT 段内断转移 用来表明跳转指令JMP中,转移地址的属性,即向上转128字节,向下转127字节范围; 例如: JMPSHORT NEXT 跳转到下一条指令中,只允许在-128+127字节内跳转。,14,4. 注释项,说明一段程序或者一条/几条指令的作用 例如: MOV CX,0064H ;设置计数器初值为100 二、指示性语句 指示性语句也称为: 伪指令、伪操作,15,伪指令分为:,1.数据定义及存储器分配伪操作 2.符号定义表达式赋值伪操作 3.段定义伪操作 4.过程定义伪指令 5.程

8、序开始/结束模块定义伪指令 一、符号定义(表达式赋值)伪指令 1. EQU 等值语句 用来给表达式赋予一个名字或者一个数值 格式: name EQU Expression 例如: PI EQU 314,16,例如:,CONSTANT EQU 256 DATAEQU ADDRES+12 BATAEQU BP+8 注意: “”伪操作也可用来给表达式赋值,与EQU类似,但两者有区别。 EQU赋值后,表达式名不可重复定义; “”赋值后,允许在后重复定义。,17,2.解除语句 PURGE,伪指令 PURGE 用于解除 EQU 定义的语句。 格式: PURGE 符号1、符号2、 例如: DATA EQU

9、100 PURGE DATA DATA EQU256,18,二、数据定义伪指令,作用: 用来为一个数据项分配存储单元,用一个符号名与这个存储单元相联系,并为这个数据提供一个初始值。 格式: 变量名 助记符 操作数1,操作数2, ;注释 变量名:可有可无,用来表示符号地址 助记符:说明所用的伪指令类型,19,助记符有如下:,DB字节定义,其后操作数占有一个字节; DW字定义,.二个字节; DD双字定义,其后操作数占有四个字节; DQ四字定义,其后操作数占有八个字节; DT十字节定义,其后操作数占十个字节; 以上助记符的伪指令,均可: 将其后跟着的数据存入指定的存储单元; 或 只分配存储单元空间,

10、而不是存入数据。 例如: 教材: P91 例题:3-14 教材: P92 例题:3-15、3-16,20,注: 字符串定义,只能使用 DB,例题: STRING DB AB MESSDB guizhou province DUP 复制操作符 用来复制某个(些)操作数 格式: n DUP (操作数1、操作数2、) 例题: 教材:3-18 3-19,21,三、段定义伪指令,8086/8088 的存储器是分段的; 存储器中,物理地址由段地址、偏移地址组成 8086/8088 必须按段,来组织程序,使用存储器,因此,这需要我们事先对段来进行定义。 段定义相关的伪指令有3类: 1. SEGMENT EN

11、DS 2. ASSUME 3. ORG,22,1.段定义伪指令,格式: 段名 SEGMENT 段名 ENDS 例如: DATASEGMENT BUFFDB10,5,30H STRINGDBHELLO COUNTDW0064H DATAENDS,23,2. 段指定伪指令 ASSUME,前面介绍的段定义伪指令,其中段名由用户自己定义; 而源程序中,必须要向汇编程序说明段类型的信箱,这里,我们使用 ASSUME 伪指令来实现上述功能。 格式: ASSUME 段寄存器:段名,段寄存器:段名, 其中,段寄存器名必须为CS,DS,SS,ES其中之一,而段名,必须是源程序中,由SEGMENTENDS定义的段

12、名。,24,例如:,ASSUME DS:DATA,CS:CODE,SS:STACK 在使用ASSUME段指定伪指令后,我们可使用: ASSUME NOTHING 取消前面由ASSUME所指定的所有段寄存器。 段地址装填: 访问存储器的指令,都必须使用CS,DS,ES,SS段寄存器中的相应值,才能形成真实的物理地址。 通过ASSUME语句,只是指定某个段分配给相应的段寄存器,并没有将段地址装入段寄存器中。,25,如上所述,,在存储器访问指令执行前,必须通过MOV指令,来给DS,ES,SS段寄存器赋值,即: 段地址装填 注:CS在程序初始化时,自动完成,不需装填。 例如: P96 3.定位伪指令 ORG 用于指定其后的程序段,或者数据块在内存中,起始地址的偏移量。,26,格式:,ORG 表达式 表达式,为一个数值范围为0216的数值表达式。 ORG,可设置在代码段、数据段任何地方,表明该语句下的程序段,或者数据段要从表达式指定的地址开始存放。 例如: P96 地址计数器 $ 允许用户,使用“$”,引用地址计数器的当前值。,27,四、过程定义伪指令,过程定义伪

温馨提示

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

评论

0/150

提交评论