计算机组成原理与汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机组成原理与汇编语言程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 汇编语言 程序设计 课件
- 资源描述:
-
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的偏移量和段基值。的偏移量和段基值。三、标号三、标号 指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,
展开阅读全文