汇编语言基础课件_第1页
汇编语言基础课件_第2页
汇编语言基础课件_第3页
汇编语言基础课件_第4页
汇编语言基础课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言基础8.1汇编语言程序结构1.汇编语言程序通常由若干段组成,包括代码段、数据段、堆栈段。

段由伪指令SEGMENT与ENDS定义,各段顺序任意,段的数目依需要确定,原则上不受限制。

数据段通常在代码段前面定义。

2.段由若干语句组成,语句以指令为主体构成。可以说汇编语言程序最终由若干条汇编语句组成,是有限条汇编语句的有序集合。

3.汇编语言程序中至少要有一启动标号,作为程序开始执行时目标代码的入口地址。启动号常用START、BEGIN、MAIN等命名。

4.为增加程序的可读性,汇编语言程序中同样有作为注释的成分。汇编语言程序的注释是以“;”开始的内容。

5.更一般地讲,汇编语言程序由若干模块组成,每个模块是一独立汇编单位,独立汇编后整体连接成完整程序。8.2汇编语言语句

1.语法基础

(1)字符集

汇编语言允许使用的字符是ASCII码字符位的一个子集。

包括:

(1)大写字母A~Z;

(2)小写字母a~z;

(3)数字字符0~9;

(4)其他字符+-*/=()[]<>;.:,'"?@$&%?!{}等。(2).保留字

保留字是由系统给定的,有特定含义的专用名字。

汇编语言中的保留字主要有:

a.寄存器的名字AX、BX、CX、DX、BP、SP、SI、DI等;

b.指令助记符MOV、PUSH、POP、ADD、SUB、MUL、DIV等;

c.伪指令符DB、DW、ASSUME、EQU、LABEL、SEGMENT、PROC等;

d.一些特殊的运算符与操作符LT、EQ、HIGH、SEG、PTR、SHORT等。(3).标识符

标识符在程序中用以标识常量、变量、标号、过程、段、组、宏等的名字。

汇编语言的标识符是以字母或专用字符($、@、?、.、-)开头的字母、数字与专用字符的序列。

汇编语言的标识符不区分大小写,不能与保留字同名。

2.语句格式

两类汇编语句在源程序中格式基本相同,由1~4部分组成。

一般格式如下:

1[标识符]2助记3[操作数]4[;注释]

助记符是语句的主体,对指令语句是机器指令的助记符,对伪指令语句是伪指令符。

格式中第1、3、4部分可选。

第1部分标识符,对指令语句是标号标识符,代表相应语句的符号地址;对伪指令语句可以是变量名、过程名、段名等,多是变量名。

第3部分操作数,对指令语句可以是单操作数、双操作数,也可以是无操作数;对伪指令语句可以有更多的操作数,伪指令语句的操作数称为参数。

第4部分注释,是程序中非常重要的辅助成分,可以单独存在。

3.指令语句

指令语句是执行性语句,以机器指令作基础,与机器指令相对应,功能靠硬件实现,编译后有对应的目标代码,最终实现程序的操作处理。

4.伪指令语句

单纯由指令语句不能形成完整程序,需要一些辅助语句来组织指令和数据,这些辅助语句就伪指令语句。

伪指令语句是说明性语句,告诉汇编程序如何工作,用于程序员以源程序的方式和汇编程序通信,完成数据定义、段块定义、存储分配等操作,完成汇编控制。

伪指令语句功能靠程序,也就汇编程序实现。8.3表达式表达式是操作数的一种,由常量、变量、标号、寄存器与相关运算符组成,包括数值表达式和地址表达式。1.量

(1)常量

常量在汇编时已有确定的值。(2)变量

变量是存储器中数据区的名字,一方面代表所表示的值,另一方面代表相应存储空间地址。

用作存储器操作数,直接寻址。

(3)标号

标号代表指令语句的符号地址,属于代码段,用于标识程序中的控制转移地址,可以作为条件转移、无条件转移、过程调用以及循环控制指令的操作数。

2.数值表达式

数值表达式主要由量经过算术运算、关系运算、逻辑运算形成,结果是数值常量,只有大

小,没有属性。

(1)算术运算

主要的算术运算有:+、一、*、/、MOD、SHL、SHR。

SHL、SHR分别是算术左移运算、算术右移运算。

运算时结果可能出现溢出,对四字或十字节操作数最好不要使用表达式。

(2)关系运算

关系运算包括:相等EQ、不等NE、小于LT、大于GT、小于等于LE、大于等于GE。

运算结果是特殊的常量,若关系成立,结果为0FFFFH:若关系不成立,结果为0。

(3)逻辑运算

逻辑运算包括:与AND、或OR、异或XOR、非NOT。

逻辑运算按二进制位进行。3.地址表达式

地址表达式由变量、常量、标号、寄存器的内容和相关运算符组成的有意义的式子。

(1)段取代操作

段取代操作用于临时给变量或地址表达式指定段属性,即临时改变隐含的段属性。

格式:段寄存器或段名:地址表达式

进行了段取代操作的地址表达式的偏移属性和类型属性不变,只改变地址表达式的段属性。

例如,CS:[BX][SI】,其段地址取CS;若无CS,段地址取自DS。

(2)属性指定操作

属性指定操作包括PTR和THIS,用来明确指出或临时指定地址表达式的类型属性。

(3)属性提取操作

属性提取操作可以获得变量、标号、过程名等的段、偏移及类型属性值。

属性提取操作包括SEG、OFFSET、TYPE、SIZE、LENGTH5种8.4伪指令1.数据定义伪指令

数据定义伪指令包括DB、DW、DD、DQ、DT,用于定义变量及分配存储区。

格式:[变量]数据定义伪指令符操作数[,…]功能:DB伪指令定义字节类型变量,DW伪指令定义字类型变量,DD伪指令定义双字类型变量,DQ伪指令定义四字类型变量,DT伪指令定义十字节类型变量。2.符号定义伪指令

格式:名字EQU表达式

功能:将表达式用指定的名字来标识。表达式可以是任何有效的操作数格式,包括助记符、寄存器名。

3.段定义伪指令

(1)完整段定义伪指令

格式:段名SEGMENT[定位类型][组合类型][类别标识]

段名ENDS

功能:SEGMENT表示段的开始,指出段名及段的各种特性,ENDS表示段到此结束。

(2)指定段寄存器伪指令ASSUME

格式:ASSUME段寄存器名:段名[,……]

功能:指定段所使用的寄存器。段可能由已经定义过的段名、变量标识符的段属性表示。

(3)简化段定义伪指令

A.段序伪指令DOSSEG

格式:DOSSEG

功能:用于标记简化段,各段顺序由系统安排。4.模块定义等伪指令

(1)过程定义伪指令

格式:过程名PROC[类型]

过程名ENDP

功能:PROC表示过程的开始,ENDP表示过程到此结束。

(2)模块定义伪指令

格式:[NAME模块名]

END[启动标号]

功能:定义所给模块名的源程序模块。(3)组定义伪指令GROUP

格式:组名GROUP段名表

功能:它告知汇编程序和连接程序,将段名表中给出的段集合成一组,并把它们装在同一

物理段中。(4)偏移地址设置伪指令ORG(5)汇编地址计数器伪指令$

(6)基数控制伪指令RADIX(7)注释伪指令COMMENT(8)包括伪指令INCLUDE

5.宏指令

宏指令用于定义宏,将语句序列作为整体考虑。

适当使用宏指令,将缩短程序书代码,使程序结构更加清晰,提高程序的可读性。

8.5上机操作1.上机操作必备程序

(1)编辑程序,文件名EDIT.COM,2.0版,大小71KB。

(2)汇编程序,文件名MASM.EXE,5.0版,大小65KB。

(3)连接程序,文件名LINK。EXE,5.0版,大小141KB。

(4)调试程序,文件名DEBUG,2.4版,大小21KB。

下面是三个可选程序

(1)LIB.EXE,库管理程序。,

(2)CREF.EXE,符号索引文件处理程序。

(3)EXE2BIN.EXE,COM文件转换程序。2.上机操作过程

如下图所示:包括建立源程序、汇编成目标代码程序、连接成执行文件、执行程序四步,其源程序的建立、程序的执行同其他所有语言,在此不再重复。A.汇编

汇编程序的主要功能包括展开宏指令,检查源程序中的语法错误,生成目标代码程序。源程序经汇编后除生成OBJ文件外,还将生成扩展名为LST的列表文件,扩展名为CRF的符号索引文件。B.连接

连接程序并不是专门为汇编语言设计,利用它将若干目标代码(模块)连接成可执行的EXE文件。连接的目标代码既可以是汇编程序产生的目标代码,也可以是其他语言编译程序产生的目标代码。8.6DEBUG使用方法1.DEBUG的运行

格式一、DEBUG

格式二、DEBUG文件名

DEBUG运行后,出现DEBUG的状态提示符短画线:-

2.DEBUG的主要命令

DEBUG的主要命令有:

D,显示内存单元内容

U,反汇编命令

R,显示与修改寄存器内容

E,修改内存单元内容

A,汇编命令

T、P,单步执行指令

G,连续执行指令

N,指定装入文件名或写入文件名

L,装入N命令指定的文件

W,将指定内容写入N命令指定的文件

Q,退出DEBUG程序,返回操作系统状态(1)D命令

格式:D[地址1

[地址2]]

功能:显示指定地址开始的80H个字节单元内容或显示指定范围之间的内容。

说明:所给地址可以是偏移地址(隐含DS),也可以是完整逻辑地址。

(2)U命令

格式:U[地址1[地址2]]

功能:反汇编,以汇编语言形式显示内存中的内容,针对目标程序代码。

说明:不指定范围,显示32字节目标代码的源程序指令。(3)R命令

格式一:R

功能:显示所有寄存器的内容。

格式二:R寄存器

功能:显示并可修改指定的寄存器内容。

说明:

a.最后一行显示的是当前CS:IP处的指令。

b.RF可直接修改标志寄存器的内容。

c.调试程序时要时刻关心寄存器的变化。

d.在DEBUG下,标志寄存器的内容用符号表示,符号表示方法表如下:(4)E命令

格式:E地址[内容表]

功能:显示指定地址的内容,并可修改。给出修改内容表可现批量修改。

说明:某字节修改完成或不修改按空格键,修改完成或不再修改按回车键。

(5)A命令

格式;E地址[内容表]

功能:修改指定地址处的指令,汇编程序。

说明:

a.修改程序前,需先用U命令查看要修改的内容,精确定位修改位置。修改完成,用U命令再检查一遍。

b.还可直接使用A命令在某地址输入调试一段小程序。

c.也可输入伪指令,但记住没有变量、标号,只有地址。

(6)T/P命令

格式:T|P[=地址][值]

功能:从指定地址开始执行程序,值给出执行指令的条数。

说明:

a.每执行一条命令,将显示所有寄存器的内容。

b.不带参数,从CS:IP处单步执行指令。

c.如果指令中有存储器操作数,将在指令后给出。

d.地址前一定要有等号“=”。

e.T、P命令的区别在于对待CALL指令的方式,T命令碰到时会进入子程序执行,而P命令只当作普通指令处理。(7)G命令

格式:G[=地址][,地址[,···]]

功能:从第一个地址处开始连续执行指令,后面的地址是断点地址。

说明:

a.缺省开始地址,从当前CS:IP执行。

b.设置多个断点是考虑到程序可能有多个分支。

c.执行正常结束,显示:Programterminatenormally。

(8)N命令

格式:N

温馨提示

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

评论

0/150

提交评论