ImageVerifierCode 换一换
格式:PPT , 页数:86 ,大小:848.50KB ,
文档编号:3294523      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3294523.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(计算机组成原理与汇编语言程序设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

计算机组成原理与汇编语言程序设计课件.ppt

1、计算机组成原理与汇编语言程序设计第5章UCB Spring 2005第1页,共86页。五、汇编语言程序设计五、汇编语言程序设计 重点章节重点章节 1 1掌握:常用汇编语言语句、伪指令、源程序的一般掌握:常用汇编语言语句、伪指令、源程序的一般结构,顺序程序设计,分支程序设计,简单循环程序设结构,顺序程序设计,分支程序设计,简单循环程序设计,子程序设计;能够读写常用汇编语句编写的程序段。计,子程序设计;能够读写常用汇编语句编写的程序段。2 2理解:宏操作伪指令,系统功能调用。理解:宏操作伪指令,系统功能调用。3 3了解:汇编语言程序的开发方法。了解:汇编语言程序的开发方法。第2页,共86页。五、汇

2、编语言程序设计五、汇编语言程序设计汇编语言程序是符号化的机器语言,汇编语言必须经过汇编语言程序是符号化的机器语言,汇编语言必须经过“汇编汇编”(即(即 翻译)转换成机器语言指令代码,再由计算机识别并执行。翻译)转换成机器语言指令代码,再由计算机识别并执行。汇编语言源程序汇编语言源程序 目标程序目标程序汇编语言源程序的基本组成单位是语句。汇编语言源程序的基本组成单位是语句。源程序中使用的语句有三种:源程序中使用的语句有三种:指令语句、伪指令语句和宏指令语句(或称宏调用语句)指令语句、伪指令语句和宏指令语句(或称宏调用语句)5.1概述概述5.2汇编语言语句汇编语言语句一、指令语句格式一、指令语句格

3、式 指令语句的一般格式如下:指令语句的一般格式如下:标号:指令助记符标号:指令助记符 操作数操作数 ;注释;注释 1 1标号:标号是机器指令语句存放地址的符号表示,代表该指令目标标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号代码的第一个字节地址,后面必须紧跟冒号“:”,在指令语句中,在指令语句中,是任选字段。是任选字段。2 2指令助记符:指令助记符为语句的核心成分,表示了该语句的操作指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。类型。汇编程序汇编程序操作数的有无、有几个,取决于操作数的有无、有几个,取决于指令助记符指令助记符翻

4、译后,没有对应翻译后,没有对应的目标代码的目标代码第3页,共86页。五、汇编语言程序设计五、汇编语言程序设计 3 3操作数:操作数表示指令助记符的操作对象。操作数:操作数表示指令助记符的操作对象。4 4注释:注释均以分号开始,它可占一行或多行,一般放在一条语句注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。的后面。例:一项是含有例:一项是含有4 4个字段的一条指令语句:个字段的一条指令语句:LOP:MOV AX,0000H ;将;将AX清零清零 标号标号 指令助记符指令助记符 操作数操作数 注释注释 例:以下是含有例:以下是含有4 4个字段的一条指令语句个字段的一条指令语句

5、INC CX二、二、伪指令语句格式如下:伪指令语句格式如下:符号名符号名 伪指令符伪指令符 操作数操作数 ;注释;注释 1符号名:符号名:符号名是伪指令语句的一个可选项。符号名是伪指令语句的一个可选项。允许是常量名、变量名、过程名或段名。注意符号名后无冒号。允许是常量名、变量名、过程名或段名。注意符号名后无冒号。2伪指令符:伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令伪指令DB、DW、DD,段定义伪指令,段定义伪指令SEGMENT,假定伪指令,假定伪指令ASSUME等。等。此字段必不可少。此字段必不可少。第4页,共86页。五、

6、汇编语言程序设计五、汇编语言程序设计 3操作数:操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号逗号”分分隔。隔。4注释:注释:伪指令的注释必须以伪指令的注释必须以“;”开始,其作用同指令语句中的注开始,其作用同指令语句中的注释部分。释部分。伪指令语句是指示汇编程序如何汇编源程序的命令语句,在汇编时,伪指令语句是指示汇编程序如何汇编源程序的命令语句,在汇编时,它不产生目标代码,由汇编程序解释他的意义逼供能立即完成相应的它不产生目标

7、代码,由汇编程序解释他的意义逼供能立即完成相应的操作。操作。例:以下是一条伪指令语句:例:以下是一条伪指令语句:VAR1 OB 12H;给;给VAR1分配一个字节单元,初值为分配一个字节单元,初值为12H 三、标识符三、标识符 标识符是指令语句中标号和伪指令语句中的符号名和统称,其组成规则如下:标识符是指令语句中标号和伪指令语句中的符号名和统称,其组成规则如下:(1)字符个数)字符个数131;(2)第一个字符开始,可以是字母或特殊字符,特殊字符有)第一个字符开始,可以是字母或特殊字符,特殊字符有5个:?个:?_$.;(3)第二个字符开始,可以是字母、数字或特殊字符;)第二个字符开始,可以是字母

8、、数字或特殊字符;(4)标识符不能与系统专用保留字()标识符不能与系统专用保留字(伪伪/指令助记符)相同指令助记符)相同第5页,共86页。五、汇编语言程序设计五、汇编语言程序设计 例如:标识符:?例如:标识符:?ABC 、_VAR、.234、A2 非标识符:非标识符:1ABC 、VAR、ADD、256 总结:伪指令和指令的通用格式:总结:伪指令和指令的通用格式:131 1.名字字段(名字字段(Name Field)名字字段的三个注意事项:)名字字段的三个注意事项:开头开头 2.操作符字段(操作符字段(Operator Field)保留字保留字 3.操作数字段(操作数字段(Operand Fie

9、ld)4.注释字段(注释字段(Comment Field)5.3汇编语言数据汇编语言数据5.3.1符号定义语句符号定义语句 1、等值伪指令、等值伪指令 指令格式:符号指令格式:符号 EQU 表达式表达式/符号符号 EQU伪指令的左移是将表达式的值或表达式赋给伪指令的左移是将表达式的值或表达式赋给EQU左边的符号左边的符号 例:用符号标识常数、数值表达式例:用符号标识常数、数值表达式 NUM EQU 10H COUN EQU 1234+34-67 VAR DB NUM MOV AX,NUM符号定义后可在表符号定义后可在表达式中使用达式中使用第6页,共86页。五、汇编语言程序设计五、汇编语言程序设

10、计 例:用字符代表地址表达式、变量名和标号例:用字符代表地址表达式、变量名和标号 ADR EQU ES:BXSI VB EQU DATA_BYTE+1 L1 EQU FAR PTR SUB1 MOV ADR,AL ADD BL,VB JMP L1 例:用符号代表寄存器、指令助记符例:用符号代表寄存器、指令助记符 AREG EQU AX M EQU MOV MOV AREG,1234H M CX,BX 等值伪指令语句仅在汇编源程序时,作为替代符号用,不产生任何目等值伪指令语句仅在汇编源程序时,作为替代符号用,不产生任何目标代码,也不分配存储单元。标代码,也不分配存储单元。在同一源程序中,同一符号

11、不能用在同一源程序中,同一符号不能用EQU伪指令重新定义。例如:伪指令重新定义。例如:第7页,共86页。五、汇编语言程序设计五、汇编语言程序设计 M EQU MOV M EQU MUL 第二条语句在汇编时,会产生符号重新定义的语法错误。第二条语句在汇编时,会产生符号重新定义的语法错误。2、等号伪指令、等号伪指令 格式:符号表达式格式:符号表达式 这种伪指令的含义和作用与这种伪指令的含义和作用与EQU等值伪指令相同。但有如下差异:等值伪指令相同。但有如下差异:(1)等号伪指令可以重新定义符号。例如:)等号伪指令可以重新定义符号。例如:CONT10 M100 CONTCONT10 M30 (2)等

12、号伪指令不可以重新定义汇编指令,)等号伪指令不可以重新定义汇编指令,EQU可以可以第8页,共86页。五、汇编语言程序设计五、汇编语言程序设计 5.3.2数据定义语句数据定义语句数据定义伪指令语句格式如下:数据定义伪指令语句格式如下:DB 变量名变量名 DW 表达式表达式1,表达式,表达式2,DD DB:为定义的变量分配字节单元:为定义的变量分配字节单元 DW:为定义的变量分配字单元:为定义的变量分配字单元 DD:为定义的变量分配:为定义的变量分配4个字节单元个字节单元/双字单元双字单元数据定义语句必须出现在某个逻辑段中数据定义语句必须出现在某个逻辑段中 例:在例:在DATA1数据段中定义了数据

13、段中定义了3个变量:个变量:DATA1 SEGMENT VAR1 DB 10H VAR2 DW 1234H VAR3 DD 12345678H 经过定义后的每个变量都有经过定义后的每个变量都有3个属性:个属性:标识符条件标识符条件伪指令符伪指令符第9页,共86页。五、汇编语言程序设计五、汇编语言程序设计(1)段属性()段属性(SEG)表示变量存放在哪一个逻辑段中,它是用变量所在段的段基值来表示变量存放在哪一个逻辑段中,它是用变量所在段的段基值来表示的。例如上面的表示的。例如上面的DATA1数据段定义的数据段定义的VAR1、VAR2、VAR3 3个个变量段属性就是变量段属性就是DATA1段的段基

14、值。段的段基值。(2)偏移量属性()偏移量属性(OFFSET)该属性表示变量在逻辑段中相距段起始地址(段基址)的字节数。该属性表示变量在逻辑段中相距段起始地址(段基址)的字节数。例如:例如:VAR1的偏移量为的偏移量为0,VAR1的偏移量为的偏移量为1,VAR1的偏移量为的偏移量为2 上述段和偏移量上述段和偏移量2个属性就构成了变量的逻辑地址。个属性就构成了变量的逻辑地址。(3)类型属性()类型属性(TYPE)该属性表示变量所占存储单元的字节个数:字节数据、字数据、该属性表示变量所占存储单元的字节个数:字节数据、字数据、双字数据。双字数据。DB将变量定义为字节型(将变量定义为字节型(1个字节)

15、,个字节),DW将变量定义为字将变量定义为字型(型(2个字节),个字节),DD将变量定义为双字型(将变量定义为双字型(4个字节)。个字节)。数据定义语句按照伪指令数据定义语句按照伪指令DB,DW和和DD所确定的数据大小来给变量(或所确定的数据大小来给变量(或 存储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式存储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式 确定的初值。它们通常有以下几种形式:确定的初值。它们通常有以下几种形式:1、数值表达式、数值表达式 例如:例如:DATA数据段定义了字节、字、双字变量数据段定义了字节、字、双字变量第10页,共86页。五、汇编语

16、言程序设计五、汇编语言程序设计 DATA SEGMENT VARB1 DB 10H VARB2 DB 10,11,12 DB 0FFH,0 VARW DW 1234H,5678H VARD DD 12345678H DATA END VARB110HVARB20AH0BH0CHFFH00H34H12H78H56H78H56H34H12HVARWVARD字字字字双字双字第11页,共86页。五、汇编语言程序设计五、汇编语言程序设计 2、字符串表达式、字符串表达式 例如:以下是例如:以下是3个字符串变量的定义个字符串变量的定义 DATA_S SEGMENT STRING1 DB ABCD STRIN

17、G2 DW AB,CD,A STRING3 DD AB DATA_S END A、用、用DW伪指令定义字符串时,每一个字符串只能由伪指令定义字符串时,每一个字符串只能由12个字符组成,个字符组成,并分配并分配2个字节存储单元。如果是两个字符组成,则前一个字符的个字节存储单元。如果是两个字符组成,则前一个字符的ASCII码放在高字节单元中,后一个放在低字节单元。码放在高字节单元中,后一个放在低字节单元。B、DD定义字符串时,每一个字符串只能由定义字符串时,每一个字符串只能由12个字符组成,并分配个字符组成,并分配4个字节存储单元。其中个字节存储单元。其中12个字符的个字符的ASCII码存储在两个

18、低字节(顺码存储在两个低字节(顺序和序和DW伪指令相同)中,两个高字节放伪指令相同)中,两个高字节放00H。C、DB伪指令定义字符串时,每个字符串中字符个数不得超过伪指令定义字符串时,每个字符串中字符个数不得超过256个。个。第12页,共86页。五、汇编语言程序设计五、汇编语言程序设计 3、地址表达式(只适用、地址表达式(只适用DW和和DD两个伪指令)两个伪指令)4、?表达式表达式 5、带、带DUP的表达式的表达式 DB 变量名变量名 DW 表达式表达式1 DUP(表达式(表达式2)DD DUP操作符允许嵌套使用,即表达式操作符允许嵌套使用,即表达式2又可以是一个带又可以是一个带DUP的表达式

19、的表达式STRING141HSTRING242H43H44H42H41H44H43H41H00H42H41H00H00HSTRING3字字字字双字双字字字第13页,共86页。五、汇编语言程序设计五、汇编语言程序设计 例如:例如:BUF DB 100 DUP(0)以上语句定义了以以上语句定义了以BUF为首址,大小为为首址,大小为100个字节,初值为个字节,初值为0的数据存储单元。的数据存储单元。5.3.3数据数据一、常数一、常数1、数值常量数值常量 第14页,共86页。五、汇编语言程序设计五、汇编语言程序设计 2、字符串常量、字符串常量 字符串常量是用单引号或双引号引起来的一个或多个字符。字符串

20、常字符串常量是用单引号或双引号引起来的一个或多个字符。字符串常量是以各字符的量是以各字符的ASC码表示的。如码表示的。如A用用41H 表示,字符串表示,字符串A1B2用用41H,31H,42H,32H表示。表示。3、常数的使用、常数的使用(1)在指令语句的源操作数中作立即数。如:)在指令语句的源操作数中作立即数。如:ADD AL,0F5H ;常数作源操作数;常数作源操作数 MOV AX,AB ;字符串作源操作数;字符串作源操作数 MOV CX,12 ;字符串作源操作数;字符串作源操作数(2)在指令语句中,常数可作为存储器操作数寻址方式中的位移量。)在指令语句中,常数可作为存储器操作数寻址方式中

21、的位移量。如如:MOV AX,DS:1000H ;直接寻址方式;直接寻址方式 ADD 10HDI,CX ;变址寻址方式;变址寻址方式 MOV AL,0ABHBX ;基址寻址方式;基址寻址方式 SUB DX,1234HBPSI ;基址变址寻址方式;基址变址寻址方式 (3)在数据定义伪指令中,可作为分配单元的初值。如:在数据定义伪指令中,可作为分配单元的初值。如:DW 1234H ;定义一个字数据;定义一个字数据 DB ABCD ;定义;定义4个字符的字符常量个字符的字符常量第15页,共86页。五、汇编语言程序设计五、汇编语言程序设计二、变量二、变量1、变量、变量(1)段属性)段属性(2)偏移地址

22、属性)偏移地址属性(3)类型属性)类型属性2、变量的使用、变量的使用在一个逻辑段中,用数据定义语句定义并预置数据初值后,变量名就作为存储单在一个逻辑段中,用数据定义语句定义并预置数据初值后,变量名就作为存储单元的符号地址,代表了存放在存储单元的数据。引用变量名就是使用变量。其他元的符号地址,代表了存放在存储单元的数据。引用变量名就是使用变量。其他语句中,使用分为两种情况:语句中,使用分为两种情况:(1)在指令语句中)在指令语句中 a、直接引用变量名对变量进行存取操作、直接引用变量名对变量进行存取操作 例如:例如:VAR1 DB 0FFH VAR2 DB?STRING DB ABCD MOV A

23、L,VAR1 ;直接寻址方式直接寻址方式 MOV VAR2,AL ;直接寻址方式直接寻址方式 MOV BL,STRING+1;放;放B字符的字符的ASCII码放到码放到BL中中第16页,共86页。五、汇编语言程序设计五、汇编语言程序设计 b、位移量部分使用变量名、位移量部分使用变量名 例:例:VAR3 DB 10H DUP(1)VAR4 DW 10H DUP(?)MOV AL,VAR3SI ;变址寻址,用变址寻址,用VAR3的偏移量的偏移量 作为源操作数的位移量作为源操作数的位移量 MOV VAR4BXDI,DX ;基址变址寻址,用;基址变址寻址,用VAR4的偏的偏 移量作为目的操作数的位移量

24、移量作为目的操作数的位移量(2)在用)在用DW或或DD的数据定义伪指令中分配的存储单元中,将预置被的数据定义伪指令中分配的存储单元中,将预置被引用变量的地址部分段基值和偏移量。如使用引用变量的地址部分段基值和偏移量。如使用DW,则仅有被引用则仅有被引用变量的偏移量;如使用变量的偏移量;如使用DD,则前两个字节存放偏移量,后两个字节存,则前两个字节存放偏移量,后两个字节存放段基值。在这种情况下,不能在放段基值。在这种情况下,不能在DB数据定义语句中引用变量名。数据定义语句中引用变量名。例:例:VAR1 DB 10H DUP(0)VAR2 DW 10H DUP(AB)ADR1 DW VAR2 AD

25、R2 DD VAR2 第17页,共86页。五、汇编语言程序设计五、汇编语言程序设计 上述示例中,变量上述示例中,变量ADR1的内容(即字存储单元内容)是变量的内容(即字存储单元内容)是变量VAR2的偏的偏移量,而移量,而ADR2双字存储单元的内容是变量双字存储单元的内容是变量VAR2的偏移量和段基值。的偏移量和段基值。三、标号三、标号 指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,

26、才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。例例:符号地址表示。符号地址表示。NEXT:MOV AL,SI;带标号;带标号NEXT的指令的指令 DEC CX JNE NEXT ;标号;标号NEXT作转移指令的操作数作转移指令的操作数第18页,共86页。五、汇编语言程序设计五、汇编语言程序设计 和变量一样,每个标号也有和变量一样,每个标号也有3个属性:个属性:(1)段属性()段属性

27、(SEG)段属性表示标号所在指令在哪个逻辑段,用这个逻辑段的段基值表示。段属性表示标号所在指令在哪个逻辑段,用这个逻辑段的段基值表示。(2)偏移量属性()偏移量属性(OFFSET)偏移量属性表示标号所在指令离段起始单元之间的字节数(准确地讲,偏移量属性表示标号所在指令离段起始单元之间的字节数(准确地讲,是指这条指令目标代码的首字节单元与段起始单元之间相距的字节数)是指这条指令目标代码的首字节单元与段起始单元之间相距的字节数)同样,上述两个属性就构成了这条指令的逻辑地址。同样,上述两个属性就构成了这条指令的逻辑地址。(3)类型属性()类型属性(TYPE)类型属性表明了它的转移特性,即是作为段内转

28、移还是段间转移的目类型属性表明了它的转移特性,即是作为段内转移还是段间转移的目标地址。标号的类型属性有标地址。标号的类型属性有2中:中:NEAR(近):段内转移。本标号只能作为标号所在段转移类指(近):段内转移。本标号只能作为标号所在段转移类指令的目标地址。令的目标地址。FAR(远):段间转移。本标号可作为其他段(不是标号(远):段间转移。本标号可作为其他段(不是标号 所在段)转移类指令的目标地址所在段)转移类指令的目标地址第19页,共86页。五、汇编语言程序设计五、汇编语言程序设计 标号的类型属性可以用下面两个方法来设置:标号的类型属性可以用下面两个方法来设置:1、隐含方式,某一指令选定一标

29、号后,隐含为、隐含方式,某一指令选定一标号后,隐含为NEAR属性。例如:属性。例如:NEXT:MOV AX,1234H这时,标号这时,标号NEXT就具有就具有NEAR的类型属性。隐含方式不能设置的类型属性。隐含方式不能设置FAR属性属性 2、用标识伪指令、用标识伪指令LABEL设置类型属性。设置类型属性。LABEL伪指令语句格式:伪指令语句格式:名字名字 LABEL 类型类型 LABEL伪指令的意义是:指定名字(如标号、变量名)的类型属性。通伪指令的意义是:指定名字(如标号、变量名)的类型属性。通常与指令语句、数据定义语句配合使用,补充设置类型属性。常与指令语句、数据定义语句配合使用,补充设置

30、类型属性。其使用分其使用分2中情况:中情况:A、LABEL语句与指令语句连用语句与指令语句连用 SUB1_FAR LABEL FAR SUB1:MOV AX,789H 第20页,共86页。五、汇编语言程序设计五、汇编语言程序设计 SUB1_FAR和和SUB1有相同的段和偏移量属性的标号,但属性类型不有相同的段和偏移量属性的标号,但属性类型不同,同,SUB1_FAR是是FAR,SUB1是是NEAR。如果这一指令是某程序段。如果这一指令是某程序段的入口,则段内转移时可用的入口,则段内转移时可用SUB1作为入口,而其他段转移到此程序段作为入口,而其他段转移到此程序段时,就要用时,就要用SUB1_FA

31、R作入口。作入口。B、LABEL语句与数据定义语句连用语句与数据定义语句连用 例:例:DA_B1 LABEL BYTE DA_W1 DW 10H DUP(1234H)上述变量上述变量DA_W1的数据类型是字,因此每次对它的存取是按字的数据类型是字,因此每次对它的存取是按字(两个字节)进行。如:(两个字节)进行。如:“MOV AX,DA_W14”指令就是指令就是把把DA_W1起始的第起始的第5,6个字节组成的个字节组成的3个字节送个字节送AX。欲想取。欲想取出第出第5个字节的内容,这时可用个字节的内容,这时可用“MOV AL,DA_B1+4”。5.3.4表达式与运算符表达式与运算符 1 1算术运

32、算符算术运算符 2 2逻辑运算符逻辑运算符 3 3关系运算符关系运算符 4 4属性与分离字节运算属性与分离字节运算 5 5数值返回运算符数值返回运算符第21页,共86页。五、汇编语言程序设计五、汇编语言程序设计1算术运算符算术运算符 算术运算符包括:(加)、(减)、算术运算符包括:(加)、(减)、*(乘)、(除)、(乘)、(除)、MOD (求模)、(求模)、(下标运算下标运算)、SHL(左移)、(左移)、SHR(右移)几种,它既可(右移)几种,它既可 以用于数值表达式又可用于地址表达式。以用于数值表达式又可用于地址表达式。【例【例3.4】用算术运算符进行数值表达式运算。】用算术运算符进行数值表

33、达式运算。NUM1 EQU 25*4 50 ;NUM1=50 NUM2 EQU NUM1/7 ;NUM2=7 NUM3 DB NUM1 MOD 7;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB 12345 NUM4 EQU VAR2-VAR1;NUM4=5 NUM5 EQU 0FH MOVAL,NUM5 SHL 4;(AL)=11110000B MOVBL,NUM5 SHR 4;(BL)=00000000B第22页,共86页。五、汇编语言程序设计五、汇编语言程序设计 移位运算符与移位指令是完全不同的。移位运算符是对某一具体数移位运算符与移位指令是完全不同的。移位运算符是对某

34、一具体数(常数)在汇编时完成移位的,而移位指令是对一个寄存器操作数或存(常数)在汇编时完成移位的,而移位指令是对一个寄存器操作数或存 储器操作数,在程序允许时完成的。储器操作数,在程序允许时完成的。下标运算符下标运算符 只用于地址表达式,它表示地址相加,常用于存取数组只用于地址表达式,它表示地址相加,常用于存取数组 元素。如:下面两条指令语句是等价的。元素。如:下面两条指令语句是等价的。MOV AX,ARRAY3 MOV AX,ARRAY+32逻辑运算符逻辑运算符 逻辑运算符包括:逻辑乘(逻辑运算符包括:逻辑乘(AND)、逻辑加()、逻辑加(OR)、按位加)、按位加(XOR)、逻辑非()、逻辑

35、非(NOT)四种运算。由于逻辑运算是按位操作,且)四种运算。由于逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。在汇编过程中完成,因而运算的结果仍为整数常量。【例】用逻辑运算符进行运算。【例】用逻辑运算符进行运算。MOVAL,34H AND 0FH ;04HAL MOVBL,05H OR 30H ;35HBL第23页,共86页。五、汇编语言程序设计五、汇编语言程序设计 MOVCX,NOT 00FFH ;0FF00HCX MOVDX,789AH XOR 000FH;7895HDX3关系运算符关系运算符 关系运算符包括:相等(关系运算符包括:相等(EQ),不等(),不等(NE)

36、,小于(),小于(LT),大于),大于(GT),小于等于(),小于等于(LE)及大于等于()及大于等于(GE)。)。对对2个表达式比较要求个表达式比较要求2个表达式表示方法个表达式表示方法/性质相同,例同为数值表达性质相同,例同为数值表达式或地址表达式。当关系成立时,结果为全式或地址表达式。当关系成立时,结果为全1;不成立时,为全;不成立时,为全0。【例】用关系运算符进行数值表达式运算。【例】用关系运算符进行数值表达式运算。NUM1DB 10 LT 5 ;NUM1=0 NUM2DB 0AAAAH GT 7FFFH;NUM2=0FFFFH MOVAX,A EQ 41H ;0FFFFHAX MOV

37、BX,NUM2 LT NUM1 ;0BX第24页,共86页。五、汇编语言程序设计五、汇编语言程序设计4.数值返回运算符数值返回运算符(1)SEG 运算符运算符(2)OFFSET运算符运算符(3)TYPE运算符运算符(4)LENGTH运算符运算符(5)SIZE运算符运算符(1)SEG 运算符 格式:SEG 变量或标号 功能:分离出其后变量或标号所在段的段首址。例如:MOVAX,SEGARR MOVDS,AX(2)OFFSET运算符 格式:OFFSET 变量或标号 功能:分离出其后变量或标号的偏移地址。例如:MOV BX,OFFSET BUF第25页,共86页。五、汇编语言程序设计五、汇编语言程序

38、设计例:设例:设DATA数据段是从物理地址数据段是从物理地址20000H开始,其定义如下:开始,其定义如下:DATA SEGMENT VAR1 DB 10,15,20 VAR2 DW 0FFFFH,100H DATA ENDS MOV AX,SEG VAR1 MOV SI,OFFSET VAR1 MOV BX,SEG VAR2 MOV DI,SEG VAR2 上述上述4条指令汇编后就分别是:条指令汇编后就分别是:MOV AX,2000H MOV SI,0 MOV BX,2000H MOV DI,3第26页,共86页。五、汇编语言程序设计五、汇编语言程序设计(3)TYPE运算符格式:TYPE 变

39、量或标号功能:分离出其后变量或标号的类型。如果是变量,将返回该变 量的类型对应字节数;如果是标号,则返回代表标号类型的数 值。它们之间的关系见表3.2所示。第27页,共86页。五、汇编语言程序设计五、汇编语言程序设计 例如:例如:VAR1 DB 12H,13H VAR2 DW 10H,DUP(0)VAR3 DD VAR1 MOV AL,TYPE VAR1;AL1 MOV CX,TYPE VAR2;CX2 MOV BL,TYPE VAR3;BL4(4)LENGTH运算符和运算符和SIZE运算符运算符 格式:格式:LENGTH 变量变量 功能:取出变量所含的数据存储单元个数。功能:取出变量所含的数

40、据存储单元个数。格式:格式:SIZE 变量变量 功能:取出变量所含的数据存储区大小。其返回值为:功能:取出变量所含的数据存储区大小。其返回值为:LENGTH 变量变量*TYPE 变量变量第28页,共86页。五、汇编语言程序设计五、汇编语言程序设计 LENGTH和和SIZE运算符的具体运算规则是:如果变量是用重复操作符运算符的具体运算规则是:如果变量是用重复操作符 DUP定义的,那么运算符定义的,那么运算符LENGTH的运算结果是外层的运算结果是外层DUP的给定值的给定值(即外层重复次数),如果没有用(即外层重复次数),如果没有用DUP定义的变量,运算结果总是定义的变量,运算结果总是1。而运算符

41、而运算符SIZE是是LENGTH和和TYPE两个运算结果的乘积。两个运算结果的乘积。【例】取出变量占存储单元个数。【例】取出变量占存储单元个数。DATASEGMENT A DBABCDEF BDW10DUP(1,2DUP(2)CDB3,20DUP(0)DATAENDS MOVAX,LENGTH A;1AX MOVBX,LENGTHB;10BX MOVCX,LENGTHC;1CX 第29页,共86页。五、汇编语言程序设计五、汇编语言程序设计 SIZE A=LENGTH A*TYPE A=1 SIZE B=LENGTH B*TYPE B=20 SIZE C=LENGTH C*TYPE C=1 SI

42、ZE只能加在变量前面,对于一维数组,正好是数则所占的存储单元只能加在变量前面,对于一维数组,正好是数则所占的存储单元的字节数。的字节数。5、属性与分离字节运算、属性与分离字节运算 1、属性运算符、属性运算符 这种运算符的运算对象只能是变量、标号或存储器地址。其功能是在这种运算符的运算对象只能是变量、标号或存储器地址。其功能是在汇编过程中,为存储器操作数指定一个新的类型属性。汇编过程中,为存储器操作数指定一个新的类型属性。格式:格式:类型类型 PTR 地址表达式地址表达式 其中,类型可以为其中,类型可以为BYTE、WORD、DWORD、NEAR和和FAR,地址,地址 表达式是指要修改类型属性的变

43、量、标号或存储器操作数。表达式是指要修改类型属性的变量、标号或存储器操作数。这种类型这种类型 属性的设定只在含有这运算符的语句内有效。属性的设定只在含有这运算符的语句内有效。PTR与与EQU连用,可定义与连用,可定义与PTR右边地址表达式类型不同的新变量名右边地址表达式类型不同的新变量名或新标号,但不另分配存储单元。例如:或新标号,但不另分配存储单元。例如:第30页,共86页。五、汇编语言程序设计五、汇编语言程序设计 VRW1 DW 1234H VRB1 EQU BYTE PTR VRW1 MOV AX,VRW1 MOV BL,VRB1;不会为不会为VRB1重新分配新的存储单元,重新分配新的存

44、储单元,VRB1和和VRW1具有相同的段属具有相同的段属性和偏移量。即逻辑地址相同。性和偏移量。即逻辑地址相同。在指令中也可使用在指令中也可使用PTR,临时修改变量或标号属性仅在此指令中存放,临时修改变量或标号属性仅在此指令中存放,其他指令无效。其他指令无效。例如:例如:VB DB 10H DUP(0)VW DW 20H DUP(0)MOV AX,WORD PTR VB6 ADD BYTE PTR VW1,0FH INC WORD PTR SI JMP FAR PTR SUB1 AX是是16位,临时修位,临时修改按字访问改按字访问0FH是是8位,临时位,临时修改按字节访问修改按字节访问第31页

45、,共86页。五、汇编语言程序设计五、汇编语言程序设计 2、分离字节运算符、分离字节运算符 字节分离运算符包括:字节分离运算符包括:HIGH和和LOW。格式:格式:HIGH 常量或地址表达式常量或地址表达式 LOW 常量或地址表达式常量或地址表达式 功能:功能:HIGH 用来分离出其后用来分离出其后16位常量或地址表达式的偏移量的高字位常量或地址表达式的偏移量的高字节;节;LOW用来分离出其后用来分离出其后16位常量或地址表达式偏移量的低字节。位常量或地址表达式偏移量的低字节。运算符优先级:见课本运算符优先级:见课本P187表表5-5 5.4伪指令语句伪指令语句 5.4.1段定义语句段定义语句

46、编制一个编制一个8086/8088汇编语言程序,段是基础。一是必须按照段来构汇编语言程序,段是基础。一是必须按照段来构 造程序,二是程序的执行,根据造程序,二是程序的执行,根据DS、ES、CS、SS分别访问不同段对分别访问不同段对 应的单元。应的单元。一、段定义伪指令一、段定义伪指令SEGMENT/END二、段寻址伪指令二、段寻址伪指令ASSUME三、段寄存器的装入三、段寄存器的装入第32页,共86页。五、汇编语言程序设计五、汇编语言程序设计一、段定义伪指令一、段定义伪指令SEGMENT/END 定义段名、起始边界定义段名、起始边界 其语句格式为:其语句格式为:段名段名 SEGMENT 定位类

47、型定位类型 组合类型组合类型 类别名类别名 (段内的语句序列)(段内的语句序列)段名段名 ENDS 1段名段名 2定位方式定位方式 3类别类别 4组合方式组合方式1、段名、段名 段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置。由用户自定,且必须满足标识符的条件。如位置。由用户自定,且必须满足标识符的条件。如 STACK、CODE、DATA第33页,共86页。五、汇编语言程序设计五、汇编语言程序设计2定位类型定位类型 定位类型是一个选项,它表示对段起始边界的要求,可以有定位类型是一个选项,它表示对段起始边界的要求,可以

48、有4种选择:种选择:(1)PAGE(页):表示本段要从一个页的边界开始,即能被(页):表示本段要从一个页的边界开始,即能被256整整除的地址处开始存放,即起始地址的最低八位必须是除的地址处开始存放,即起始地址的最低八位必须是0。(2)PARA(节):表示本段必须从一个节的边界开始,即必须从能(节):表示本段必须从一个节的边界开始,即必须从能被被16整除的地址处开始存放,即段起始地址最低四位必须是整除的地址处开始存放,即段起始地址最低四位必须是0。如果未选择定位类型,则隐含如果未选择定位类型,则隐含PARA。(3)WORD(字):表示本段要从一个偶数地址处开始存放,即段(字):表示本段要从一个偶

49、数地址处开始存放,即段起始地址的最低一位必须是起始地址的最低一位必须是0。(4)BYTE(字节):表示本段起始地址可以从任一地址处开始存放。(字节):表示本段起始地址可以从任一地址处开始存放。3、组合类型、组合类型 组合类型也是一个可选项,它表示本段是否与其它段进行连接,组合类型也是一个可选项,它表示本段是否与其它段进行连接,有六种有六种 类型可供选择。类型可供选择。(1 1)NONENONE“不选择不选择”(2 2)PUBLIC PUBLIC (3 3)STACK STACK(4 4)COMMON COMMON(5 5)MEMORY MEMORY(6 6)ATAT表达式表达式 第34页,共8

50、6页。五、汇编语言程序设计五、汇编语言程序设计(1)NONE 这是隐含选择,表示本段与其他段在逻辑上无连接关系,本段有自己的段基址。这是隐含选择,表示本段与其他段在逻辑上无连接关系,本段有自己的段基址。(2)PUBLIC 在满足定位类型的条件下,将本段与其他段名相同的段邻接在一起形成一个段,在满足定位类型的条件下,将本段与其他段名相同的段邻接在一起形成一个段,共用一个段基址,并相对这个段基址调整段内变量的偏移量。共用一个段基址,并相对这个段基址调整段内变量的偏移量。(3)COMMON 当连接多个程序模块时,为各模块中段名相同且用当连接多个程序模块时,为各模块中段名相同且用COMMON说明的段指

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|