汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层

上传人:w****i 文档编号:92615136 上传时间:2019-07-11 格式:PPT 页数:83 大小:774KB
返回 下载 相关 举报
汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层_第1页
第1页 / 共83页
汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层_第2页
第2页 / 共83页
汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层_第3页
第3页 / 共83页
汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层_第4页
第4页 / 共83页
汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层》由会员分享,可在线阅读,更多相关《汇编语言与计算机系统组成 教学课件 ppt 作者 李心广 第5章 汇编语言层(83页珍藏版)》请在金锄头文库上搜索。

1、第五章 汇编语言层,5.1 概述,5.4 宏指令,5.3 80x86宏汇编伪指令,5.2 汇编语言语句类型及格式,5.5 汇编语言程序设计步骤,5.6 汇编语言设计基本技术,5.1 概述,汇编指令和机器指令是“一一对应”的 汇编语言程序需由汇编程序将其汇编为机器语言 程序,才能被计算机执行。 汇编语言大体上包括了汇编指令、系统调用和中断、伪指令和宏指令,汇编语言是强烈依赖硬件和汇编环境的。 学习和使用汇编语言程序设计的原因,5.2 汇编语言语句类型及格式,5.2.1 语句类型 指令语句(instructions) 完成一定操作功能,能够翻译成机器代码的语句。 伪指令语句(directives,

2、 指示性语句) 为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码。 宏指令语句(marcos) 可看成是由若干条指令语句形成的语句,一条宏指令语句的功能相当于若干条指令语句的功能。,5.2.2 语句格式,指令性语句:,格式:标号: 操作码 操作数,操作数 ;注释,伪指令语句:,格式:名字 伪操作 操作数,操作数, ;注释,名字定义满足的规则 (1)第一个字符必须是字母或5个特殊字符 (2)单独的问号(?)不能作为名字 (3)最大有效长度为31 (4)保留字不能作为名字使用,操作码和伪操作,含义:指明操作的性质或功能。 书写规则:操作码和伪操作与操作数之间用空格分开。 操作数 含

3、义:指定参与操作的数据。 个数:一般指令,1个或2个,也可以没有; 伪指令和宏指令,可以有多个。 书写规则:操作数多于1个时,操作数之间用逗号分开,汇编器MASM5.06.15对字母的大小写不敏感,但保留字通常习惯用大写。,5.3 80x86宏汇编伪指令,5.3.1 符号定义伪指令,例: D1 EQU 25 D2 EQU X1+12 D3 EQU SI+2,2.等号伪指令 = 格式与功能和EQU类似,3.解除定义伪指令PURGE 格式:PURGE 功能:解除指定符号的定义,例: Y1=7,例:Y1 EQU 7 PURGE Y1 Y1 EQU 128,EQU与=的差异:同一个程序中 = 可以对一

4、个符号重复定义,EQU不能对同一个符号重复定义 例:Y1=7 Y1=128 的定义是正确的 Y1 EQU 7 Y1 EQU 128 的定义是错误的,1.等值伪指令EQU 格式: EQU 功能:给符号名定义一个值、别的符号名、表达式或助记符。,5.3.2 数据定义伪指令,格式:变量名 伪操作 操作数,操作数, ;注释 功能:为操作数分配存储单元;还可为存储单元赋初值并把变量名与存储单元相联系。,操作数,常数,代表数据,字节数据,例:DATAB SBYTE 18H,-1,30,字数据,例:DATAW WORD 18H,2A45H,双字数据,例:DATAD DD 18H,2F3A124BH,地址表达

5、式,代表内存单元地址,例: ADDR1 WORD NEXT ADDR2 DWORD NEXT,字符串,存放各字符的ASCII码,例:STR1 BYTE ABCD STR1 DB A, B, C, D STR1 DB 41H,42H,43H,44H,注意:字符多于2个时,只能使用BYTE(或DB)定义,?,只分配单元,不定义初值,例:BUF1 DB 5,6,7,? BUF2 DW 56H,78H,?,345FH,例:操作数用复制操作符DUP,表示操作数重复若干次 BUF1 DB 2 DUP(2,3,4) BUF2 DW 1,2,3 DUP(6),1. 定义操作数,分析运算,TYPE ,含义:计算

6、出变量的类型值或标号的类型值 类型值: 变量:1、2、4、6、8、10; 标号:-1、-2,LENGTH ,含义:计算分配给使用DUP定义的变量的单元数,其它变量的LENGTH值为1,SIZE ,含义:计算出分配给变量的字节数 值:TYPE和LENGTH的乘积,OFFSET ,含义:计算出变量或标号的段内偏移地址,例:MOV SI,OFFSET DAB1,SEG ,含义:计算出变量或标号的段地址,例:MOV AX,SEG DAB1,2.变量(标号)定义后的分析运算,例5-8. 若定义变量如下: VAR1 DWORD 10 DUP(?) VAR2 WORD 20,34 VAR3 BYTE 3 D

7、UP(5, 9 DUP(0FFH) VAR4 BYTE ABC VAR5 DB 3 DUP (?),0,0,TYPE VAR1的值是4,LENGTH VAR1的值是10,SIZE VAR1为40 TYPE VAR2的值是2,LENGTH VAR2的值是1,SIZE VAR2为2 TYPE VAR3的值是1,LENGTH VAR3的值是3,SIZE VAR3为3 TYPE VAR4的值是1,LENGTH VAR4的值是1,SIZE VAR4为1 TYPE VAR5的值是1,LENGTH VAR5的值是3,SIZE VAR5为3,3. 变量(标号)定义后的合成运算,运算符:PTR 格式:类型 PT

8、R 表达式 功能:给表达式(一般为变量或标号)指定新的类型。 对变量可以指定的类型为BYTE、WORD和DWORD;对标号可以指定的类型是NEAR或FAR。,例5-10. 下列两个语句构成的程序段不正确: DATA1 WORD 1234H MOV AL, DATA1,使用PTR. 如下才正确: DATA1 WORD 1234H MOV AL, BYTE PTR DATA1,4. LABEL 伪指令,格式:变量名或标号 LABEL 类型 功能:对变量(或标号)定义另外的变量名(或标号)和类型 对变量而言,类型可以是BYTE、WORD、DWORD或QWORD;对标号而言,类型指FAR和NEAR。

9、使用时LABEL语句必须和数据定义语句或带标号的语句配合使用。,例 DATA_B LABEL BYTE DATA1 WORD 25F6H 则 MOV AX, DATA1 ;(AX)=25F6H MOV BL, DATA_B ;(BL)=F6H MOV BH, DATA_B+1 ;(BH)=25H:,例 (代码段1) PROG_A ABEL FAR ;其后必须跟一条带标号的指令语句 INITI: MOV AL,12H ;标号INITI为NEAR属性 JZ INITI ;段内跳转 (代码段2) JZ PROG_A ;段间跳转,5.3.3 指令集选择伪指令,.8086 使用8086/8088和协处理

10、器8087指令集 .286 使用80286和协处理器80287指令集,不包括特权指令 .286P 使用80286和协处理器80287指令集,包括特权指令 .386 使用80386和协处理器80387指令集,不包括特权指令 .386P 使用80386和协处理器80387指令集,包括特权指令 .486 使用80486指令集,不包括特权指令 .486P 使用80486指令集,包括特权指令 .586 使用Pentium指令集,不包括特权指令 .586P 使用Pentium指令集,包括特权指令 .686 使用Pentium Pro指令集,不包括特权指令 .686P 使用Pentium Pro指令集,包括

11、特权指令,5.3.4 段结构伪指令,1. 段定义伪指令 格式: SEGMENT 定位 组合 类别 属性 ;段体 ENDS 用途:在汇编语言程序中定义逻辑段,指定段的名称和范围,并指明段的定位类型、组合类型及类别。 注意: 1.完整段定义由SEGMENT和ENDS这一对伪指令实现 2.指令后的4个关键字用于确定段的各种属性 3.如不指定,则采用默认参数;但如指定,要按上列次序,(1) 定位类型,含义:规定段的起始地址要求,方式,PARA:段地址从段边界开始,BYTE:段地址从字节边界开始,WORD:段地址从字边界开始,PAGE:段地址从页边界开始,(2) 组合类型,含义:规定本段与其他段的关系,

12、方式,NONE:与其他段在逻辑上没有关系,PUBLIC:与其它同名、同类别的段相邻地连在一起,COMMON:与其他同名、同类别的段相覆盖,MEMORY:几个逻辑段连接时,本段定位在地址最高的地方,STACK:此段为堆栈段,连接方式与PUBLIC段相同,AT表达式 :本逻辑段根据表达式求值的结果定位段地址,(3) 类别,含义:指出各程序模块中类别相同的段,将它们连接在同一物理段内,连接方式:将所有的同类别段相邻分配,类别名称:可以任意,(4) 属性类型,含义:规定16位段或32位段,表示方式,USE16:表示16位段,USE32:表示32位段,注意:大多数MASM程序使用 code、data和s

13、tack来分别指名代码段、数据段和堆栈段。,2. 段约定伪指令,ASSUME :NOTHING ;取消段性质的规定,格式: ASSUME :,:,功能:建立段寄存器与段的缺省关系,注意: ASSUME伪指令并不为段寄存器设定初值,3. 段寄存器装载,在程序的代码段开始处进行DS、SS、ES等的段基址装填,例 MOV AX, DATA ;数据段段基址送入AX MOV DS, AX ;AX内容送入DS,5.3.5 定位伪指令,格式:ORG 表达式 功能:设置某个单元的起始地址,例:DATA SEGMENT ORG 100H X DB 12H Y DW ? ORG 200H Z DD 9C56H D

14、ATA ENDS,1.定位伪指令 ORG,2.地址计数器 $,含义:表示下一个可用单元的地址,例:ORG $+8 ARRAY DW 1,2,$+4,3,4 假设ARRAY的偏移地址为0074H,则$+4中$的值为0078H,应用:常用来确定数组中元素的个数,例:BUF1 DB 1,2,3,4,5 CNT1 EQU $-BUF1 (常用) BUF2 DW 1,2,3,4,5 CNT2 EQU ($-BUF2)/2 CNT1、CNT2的值分别为数组BUF1、BUF2中数据元素的个数,5.3.6 过程定义伪指令,格式: PROC NEAR/FAR RET ENDP,功能: 把具有独立功能的程序段定义

15、为过程,供其它程序调用,注意:过程中至少要有一条RET指令,5.3.7 标题伪指令 TITLE,格式:TITLE 文本 功能:汇编源程序时,在生成的.lst文件中的每一页顶行均显标题中的文本,5.3.8 结束伪指令 END 格式:END 标号 功能:表明源程序的结束,5.3.9 包含伪指令 INCLUDE 格式:INCLUDE 文件名 功能:把指定的文件插入到当前程序中,作为源程序的一个组成部分 :,5.3.10 简化段定义伪指令,格式:.MODEL 模式选择符 功能:指明简化段所用内存模式,模式选择符,TINY:微模式,所有数据及代码放入同一个物理段内,SMALL:小模式,程序中只有一个数据

16、段和一个代码段,MEDIUM:中模式,程序中有一个数据段、多个代码段,COMPACT:压缩模式,程序中有多个数据段、一个代码段,LARGE:大模式,程序中有多个数据段、多个代码段,1.模式选择伪指令 .MODEL,HUGE: 与LARGE类似,只是数据段大小可超过64KB,2.简化段伪指令,格式:.CODE 名字 功能:定义一个代码段。 如果有多个代码段,需用名字区别;只有一个代码段时,缺省默认段名为CODE。 格式:.STACK 长度 功能:定义一个堆栈段,其隐含段名为STACK,并形成SS及SP的初值;“长度”参数指定堆栈段包含的字节数,缺省默认长度为1KB。 格式:.DATA 名字 功能:定义一个数据段。 如果有多个数据段,需用名字区别;只有一个数据段时,缺省默认段名为DATA。 格式:.STARTUP 功能:指示程序的开始位置 格式:.EXIT 功能

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号