第4章基本汇编语言课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章基本汇编语言课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 汇编语言 课件
- 资源描述:
-
1、第第4 4章章 汇编语言程序格式汇编语言程序格式p教学目的及要求教学目的及要求:1.掌握各个伪指令的功能和使用方法掌握各个伪指令的功能和使用方法2.掌握汇编语言程序格式掌握汇编语言程序格式3.熟悉汇编语言程序的上机过程熟悉汇编语言程序的上机过程p教学教学重重点与难点点与难点:1.在理解伪指令功能的基础上,着重理解伪指令与指令的本质区别在理解伪指令功能的基础上,着重理解伪指令与指令的本质区别2.在理解程序的段结构基础上,着重理解各个段寄存器的初始化方法在理解程序的段结构基础上,着重理解各个段寄存器的初始化方法3.地址计数器的理解和使用地址计数器的理解和使用4.理解变量、标号的三个基本空间特性:段
2、、偏移量、类型理解变量、标号的三个基本空间特性:段、偏移量、类型开开 始始第第4 4章章 汇编语言程序格式汇编语言程序格式4.1 汇编语言的语句格式汇编语言的语句格式4.2 汇编语句表达式汇编语句表达式4.3 伪指令伪指令4.4 DOS系统功能调用系统功能调用4.5 综合举例综合举例开开 始始4.1 汇编语言的语句格式汇编语言的语句格式4.1.1 指令语句格式指令语句格式4.1.2 伪指令语句格式伪指令语句格式4.1.3 标识符标识符返回本章首页返回本章首页4.1.1 指令语句格式指令语句格式指令语句的一般格式如下:标号:指令助记符 操作数 ;注释1标号:标号是机器指令语句存放地址的符号表示,
3、代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:”。2指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。3操作数:操作数表示指令助记符的操作对象。4注释:注释项用来说明程序或语句的功能。注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。返回本节返回本节4.1.2 伪指令语句格式伪指令语句格式伪指令语句格式如下:符号名 伪指令符 操作数 ;注释1符号名:符号名是伪指令语句的一个可选项,可以定义为变量名、符号常数、子程序名或段名等。符号名与伪指令符之间用空格分隔。2伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGM
4、ENT,假定伪指令ASSUME等。3操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。4注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。返回本节返回本节4.1.3 标识符标识符1。标号和符号名-统称为标识符。2。有关标识符的规定 标识符可以使用下列字符:字母 AZ(大写)az (小写)数字 09 特殊字符 .?标识符的长度为131个字符;除数字外,上面所有规定的字符都可以作为标识符的第一个字符,但问号(?)本身不能单独作为标识符;标识符中如果用到“.”,则必须是第一个字符;不能采用汇编语言的保留字作为标识
5、符。一般情况下,汇编程序不区分标识符和保留字中的字母的大小写。返回本章首页返回本章首页4.2 汇编语句表达式汇编语句表达式4.2.1 常量常量4.2.2 变量变量4.2.3 标号标号4.2.4 表达式与运算符表达式与运算符4.2.5 运算符的优先级运算符的优先级返回本章首页返回本章首页4.2.1 常量常量1数值常量数值常量2.字符串常量字符串常量1数值常量数值常量表表3.1 各种形式数字常量格式对照表各种形式数字常量格式对照表2.字符串常量字符串常量字符串常量是用单引号或双引号引起来的一个或字符串常量是用单引号或双引号引起来的一个或多个字符。在机器内部,字符串常量是以各字符多个字符。在机器内部
6、,字符串常量是以各字符的的ASC码表示的。如码表示的。如A用用41H 表示,字符表示,字符串串A1B2用用41H,31H,42H,32H表示。表示。返回本节返回本节4.2.2 变量变量1变量变量2变量的定义变量的定义在程序运行期间取值可能发生变化的操作数称为变量。变量可以看作盛放操作数的容器。在机器中,盛放操作数的容器只有寄存器和存储器两种,所以变量也可以分为寄存器变量和存储器变量。通常所指的变量都是存储器变量。变量一般在除代码段以外的其他段中用伪指令定义。变量通常在操作数字段中被引用,它有段、偏移和类型三种属性。(1)段属性:变量所在段的段基值。(2)偏移地址属性:变量的偏移地址,它是一个1
7、6位无符号数,代表从段起始地址到定义变量的位置之间的字节数。(3)类型属性:变量的类型属性定义变量在内存中所占的字节数,即所存放的数据的长度。如字节属性BYTE为1,字属性WORD为2。1变量变量变量定义语句的主要任务是为变量分配存储单元,变量定义语句的主要任务是为变量分配存储单元,且为这个变量提供一个初始值。且为这个变量提供一个初始值。常用的数据定义伪指令有常用的数据定义伪指令有 DB 定义字节变量定义字节变量 DW 定义字变量定义字变量 DD 定义双字变量定义双字变量 DQ 定义定义4字变量字变量 DT 定义定义5字变量字变量格式:格式:变量名变量名数据定义伪指令符表达式数据定义伪指令符表
8、达式,2变量的定义变量的定义表达式表达式表达式项是给变量或指定存储单元赋予初值,它表达式项是给变量或指定存储单元赋予初值,它有以下几种形式:有以下几种形式:(1 1)数值表达式)数值表达式(2 2)字符串表达式)字符串表达式(3 3)地址表达式(只适用)地址表达式(只适用DWDW和和DDDD两个伪指令)两个伪指令)(4 4)?表达式表达式(5 5)带)带DUPDUP的表达式的表达式数据定义伪指令可以为一个或连续的存储单元设置数值数据定义伪指令可以为一个或连续的存储单元设置数值初值。初值。【例【例3.1】为数据段分配存储单元。】为数据段分配存储单元。DATASEGMENTADB11H,12H,1
9、3HBDW1122H,3344HCDD12345678HDATAENDS上述变量的存储单元分配及初始化情况如下图上述变量的存储单元分配及初始化情况如下图3.1所示。所示。(1)数值表达式)数值表达式图图3.1 数据段中数据存储分配图数据段中数据存储分配图字符串表达式中的字符串必须用引号引起来。字符串表达式中的字符串必须用引号引起来。DB、DW、DD伪指令将字符串中的各字符均以伪指令将字符串中的各字符均以ASC码形式存放在码形式存放在相应的存储单元,但表示形式各不相同。相应的存储单元,但表示形式各不相同。【例【例3.2】为字符串分配存储单元。】为字符串分配存储单元。DATASEGMENTSTR1
10、 DB1234STR2 DWAB,CD,ASTR3 DDABDATAENDS其存储单元分配如下图其存储单元分配如下图3.2所示。所示。(2)字符串表达式字符串表达式图图3.2 数据段存储分配图数据段存储分配图(3)地址表达式(只适用)地址表达式(只适用DW和和DD两个伪指令)两个伪指令)如果该地址表达式为一变量(或标号)名,用如果该地址表达式为一变量(或标号)名,用DW伪指令则是取它的偏移地址来初始化变量,用伪指令则是取它的偏移地址来初始化变量,用DD伪指令则是取它的段首址和偏移地址来初始化变伪指令则是取它的段首址和偏移地址来初始化变量。量。例如:例如:BUF1DWA BUF2DDB()?表达
11、式()?表达式表达式为?,只分配存储单元,不赋予初始值表达式为?,只分配存储单元,不赋予初始值在表达式中使用重复数据操作符在表达式中使用重复数据操作符DUP,可以为连续的存,可以为连续的存储单元提供重复数据,其格式为:储单元提供重复数据,其格式为:N DUP(表达式)(表达式)其中其中N为重复因子,只能取正整数,表示定义了为重复因子,只能取正整数,表示定义了N个重复个重复数据存储单元,其类型由它前面的数据定义伪指令确定,数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由而每个数据存储单元中的初值由DUP后面圆括号中的表后面圆括号中的表达式给定。达式给定。例如:例如:
12、BUF DB 100 DUP(0)以上语句定义了以以上语句定义了以BUF为首址,大小为为首址,大小为100个字节,初值个字节,初值为为0的数据存储单元。的数据存储单元。(5 5)带)带DUPDUP的表达式的表达式返回本节返回本节4.2.3 标号标号标号是一条指令语句的符号地址。在汇编源程序中,只有在需要标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的
13、操作数,即转移地址。作为转移类指令的操作数,即转移地址。【例【例3.3】符号地址表示。】符号地址表示。NEXT:MOV AL,SI;带标号;带标号NEXT的指令的指令 DEC CX JNE NEXT;标号;标号NEXT作转移指令的操作数作转移指令的操作数1 1段属性:定义标号所在段的段基值,该地段属性:定义标号所在段的段基值,该地址总是存放在址总是存放在CSCS段寄存器中。段寄存器中。2 2偏移地址属性:标号的偏移地址,它是偏移地址属性:标号的偏移地址,它是1616位无符号数,代表从段起始地址到定义标号位无符号数,代表从段起始地址到定义标号的位置之间的字节数。的位置之间的字节数。3 3类型属性
14、:用来指出该标号是在本段内引类型属性:用来指出该标号是在本段内引用还是在其他段中引用。在段内引用的为用还是在其他段中引用。在段内引用的为NEARNEAR类,在段外引用的为类,在段外引用的为FARFAR类。类。标号也具有三种属性标号也具有三种属性:段属性、偏移地址属性、:段属性、偏移地址属性、类型属性。类型属性。返回本节返回本节4.2.4 运算符运算符1算术运算符算术运算符2逻辑运算符逻辑运算符3关系运算符关系运算符4属性运算符属性运算符5数值返回运算符数值返回运算符算术运算符包括:(加)、(减)、算术运算符包括:(加)、(减)、*(乘)、(乘)、(除)、(除)、MOD(求模)、(求模)、SHL
15、(左移)、(左移)、SHR(右移)、(右移)、几种,它既可以用于数值表达式又可用于地址表达式。几种,它既可以用于数值表达式又可用于地址表达式。运算时要理解其物理意义:运算时要理解其物理意义:(1)减法:允许在两个变量之间(相距的字节数)减法:允许在两个变量之间(相距的字节数)(2)加法:不允许在变量间使用)加法:不允许在变量间使用(3)地址表达式:变量数值)地址表达式:变量数值(4)SHL,SHR:对数值进行,在汇编时执行。:对数值进行,在汇编时执行。格式:格式:数值数值 SHL/SHR 移位次数移位次数 例:例:NUM EQU 1111B MOV AL,NUM SHL 4 ADD BL,NU
16、M SHL 41算术运算符算术运算符NUM1 EQU25*4 50;NUM1=50NUM2 EQUNUM1/7;NUM2=7NUM3 DBNUM1 MOD 7;NUM3=1VAR1DB1,2,3,4,5VAR2DB12345NUM4 EQUVAR2-VAR1;NUM4=5NUM5 EQU0FH MOVAL,NUM5 SHL 4;(;(AL)=11110000BMOVBL,NUM5 SHR 4;(BL)=00000000B【例【例3.4】用算术运算符进行数值表达式运算。】用算术运算符进行数值表达式运算。逻辑运算符包括:逻辑运算符包括:AND、OR、XOR、NOT四种运算。由于逻辑运四种运算。由于
17、逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。量。【例【例3.5】用逻辑运算符进行运算。】用逻辑运算符进行运算。MOVAL,34H AND 0FH ;04HALMOVBL,05H OR 30H ;35HBLMOVCX,NOT 00FFH ;0FF00HCXMOVDX,789AH XOR 000FH;7895HDX2逻辑运算符逻辑运算符关系运算符包括:相等(关系运算符包括:相等(EQ),不等(),不等(NE),小于(),小于(LT),大于),大于(GT),小于等于(),小于等于(LE)及大于等于()及大于等于(GE)
18、。)。关系运算符的两个操作数必须都是数字或是同一段内的两个存储器关系运算符的两个操作数必须都是数字或是同一段内的两个存储器地址。计算的结果应为逻辑值:结果为真,用全地址。计算的结果应为逻辑值:结果为真,用全1表示;结果为假,表示;结果为假,用用0表示。表示。【例【例3.6】用关系运算符进行数值表达式运算。】用关系运算符进行数值表达式运算。NUM1 DB10 LT 5 ;NUM1=0NUM2 DB0AAAAH GT 7FFFH;NUM2=0FFHMOVAX,A EQ 41H ;0FFFFHAXMOVBX,NUM2 LT NUM1 ;0BX3关系运算符关系运算符(1)PTR运算符运算符格式:格式:
19、类型类型 PTR 地址表达式地址表达式 类型可以是类型可以是BYTE、WORD、DWORD、FAR和和NEAR之一。表达式是存储器操作数地址。之一。表达式是存储器操作数地址。PTR用来用来为表达式确定为表达式确定新的类型属性新的类型属性,它本身并不改变存储器,它本身并不改变存储器分配情况,只是用来给已分配的存储器地址赋予另一分配情况,只是用来给已分配的存储器地址赋予另一种类型属性。格式中的类型字段表示所赋予的新的类种类型属性。格式中的类型字段表示所赋予的新的类型属性,而表达式字段则是被取代类型的符号地址。型属性,而表达式字段则是被取代类型的符号地址。4属性运算符属性运算符已有数据定义如下:已有
20、数据定义如下:TWOBYTE DW?TWOBYTE已定义为字操作数的存储地址,可以用以下语句给这两个字已定义为字操作数的存储地址,可以用以下语句给这两个字节赋予另一种类型属性节赋予另一种类型属性:ONEBYTE EQU BYTE PTR TWOBYTE OTHERBYTE EQU BYTE PTR (TWOBYTE+1)这时这时 ONEBYTE 和和TWOBYTE 两个符号地址具有相同的段地址及偏两个符号地址具有相同的段地址及偏移地址移地址,但是它们的类型属性不同但是它们的类型属性不同,前者为前者为1,后者为后者为2.有时指令要求使用有时指令要求使用PTR操作符操作符.例例:MOV BX,6指
21、令把立即数存入指令把立即数存入BX寄存器内容指定的存储单元中寄存器内容指定的存储单元中,但汇编程序不能分清但汇编程序不能分清是存入字单元还是字节单元是存入字单元还是字节单元,此时必须用此时必须用PTR操作符来说明属性操作符来说明属性.MOV BYTE PTRBX,6或或 MOV WORD PTRBX,6(2)THIS(2)THIS 运算符运算符 格式为格式为:THIS 类型类型 THIS运算符常与运算符常与EQU连用连用,用来定义一个新的变量名或标号用来定义一个新的变量名或标号,并将右并将右边的类型属性赋给新的变量或标号边的类型属性赋给新的变量或标号,而新变量或新标号的段基值和偏而新变量或新标
22、号的段基值和偏移量与紧跟其后的变量或标号相同移量与紧跟其后的变量或标号相同.例如例如:DATAB EQU THIS BYTE DATAW DW 100 DUP(0)此时此时DATAB的段基值、偏移地址和的段基值、偏移地址和DATAW完全相同完全相同,但它是字节类但它是字节类型的型的,而而DATAW则是字类型的则是字类型的.又如又如:START EQU THIS FAR L:MOV CX,100这样这样,MOV指令有一个指令有一个FAR属性的地址属性的地址START,这就允许其他段的转这就允许其他段的转移指令直接跳转到该条指令移指令直接跳转到该条指令.(1)SEG 运算符运算符(2)OFFSET
23、运算符运算符(3)TYPE运算符运算符(4)LENGTH运算符运算符(5)SIZE运算符运算符(6)字节分离运算符)字节分离运算符5数值返回运算符数值返回运算符(1)SEG 运算符运算符格式:格式:SEG 变量或标号变量或标号功能:分离出其后变量或标号所在段的段基址。例如:功能:分离出其后变量或标号所在段的段基址。例如:MOV AX,SEGARR ;ARR为某个变量为某个变量(2)OFFSET运算符运算符格式:格式:OFFSET 变量或标号变量或标号功能:分离出其后变量或标号的偏移地址。例如:功能:分离出其后变量或标号的偏移地址。例如:MOV BX,OFFSET BUF 所以这条指令与指令:所
24、以这条指令与指令:LEA BX,BUF等价。等价。(3)TYPE运算符运算符格式:格式:TYPE 变量或标号变量或标号功能:分离出其后变量或标号的类型。如果是变量,将功能:分离出其后变量或标号的类型。如果是变量,将返回该变量的类型对应字节数;如果是标号,则返回代返回该变量的类型对应字节数;如果是标号,则返回代表标号类型的数值。它们之间的关系见下表所示。表标号类型的数值。它们之间的关系见下表所示。(4)LENGTH运算符运算符格式:格式:LENGTH 变量变量功能:对于变量中使用功能:对于变量中使用DUP的情况,回送最外层的情况,回送最外层DUP的的重复次数。若无重复次数。若无DUP则返回则返回
25、1。【例【例3.12】DATASEGMENTADBABCDEFBDW10DUP(1,2DUP(2)DATAENDS MOV AX,LENGTH A;1AXMOV BX,LENGTH B;10BX(5)SIZE运算符运算符格式:格式:SIZE 变量变量功能:取出变量所占的数据存储区大小。其功能:取出变量所占的数据存储区大小。其返回值为:返回值为:LENGTH 变量变量*TYPE 变量变量例如:上例中例如:上例中A、B变量:变量:SIZE A=LENGTH A*TYPE A=1SIZE B=LENGTH B*TYPE B=20(6)字节分离运算符)字节分离运算符字节分离运算符包括:字节分离运算符包
展开阅读全文