汇编语言程序设计及上机指导+第3章+指令格式与寻址方式

上传人:xh****66 文档编号:61660137 上传时间:2018-12-08 格式:PPT 页数:20 大小:335KB
返回 下载 相关 举报
汇编语言程序设计及上机指导+第3章+指令格式与寻址方式_第1页
第1页 / 共20页
汇编语言程序设计及上机指导+第3章+指令格式与寻址方式_第2页
第2页 / 共20页
汇编语言程序设计及上机指导+第3章+指令格式与寻址方式_第3页
第3页 / 共20页
汇编语言程序设计及上机指导+第3章+指令格式与寻址方式_第4页
第4页 / 共20页
汇编语言程序设计及上机指导+第3章+指令格式与寻址方式_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《汇编语言程序设计及上机指导+第3章+指令格式与寻址方式》由会员分享,可在线阅读,更多相关《汇编语言程序设计及上机指导+第3章+指令格式与寻址方式(20页珍藏版)》请在金锄头文库上搜索。

1、第3章 指令格式与寻址方式,【本章提要】 本章讲述Intel系列微处理器的指令通用格式和各种寻址方式。除无操作数指令以外,一般指令都需要指出操作数,指令中操作数的给出(即寻址方式)有多种方法。通过多种寻址方式,提高了程序设计的灵活性,也扩充了指令的具体功能。 【学习目标】 熟练掌握汇编语言指令和机器指令的基本格式 明确操作数的各种寻址方式 掌握各种寻址方式物理地址的计算,2018/12/8,3.1 指令格式,机器指令格式: 汇编指令格式: 指令助记符表示指令的名称,它是指令功能的英文缩写,对应的是机器指令中的操作码部分; 操作数即被处理的对象,若指令中包含多个操作数,则操作数之间以逗号分隔;

2、注释以分号开始,用来说明程序功能,不影响指令的执行。 最常用的数据传送指令MOV的格式为: MOV DEST,SRC ;将源操作数SRC的值传送至目的操作数 【例】 MOV EAX,EBX ;将EBX的值送给EAX,2018/12/8,指令的3种操作数,(1)立即数 操作数以常量的形式出现在指令中,称为立即数。 如:20、3AH、1234Q、1011B 立即数只能作为指令的源操作数。 (2)寄存器操作数 指令要使用的数据存放在CPU内部寄存器中,在指令中给出寄存器名。如:AL、BX、ECX (3)内存操作数 指令要用的数据存放在内存单元中,在指令中给出内存地址或访问存储器的方法。如:2000、

3、BX 注意:指令中的某个操作数可能是上述3种中的任意一种形式,为了 明确具体操作数的存在位置,必须首先要明确操作数的寻址方式。,2018/12/8,立即数(常数),立即数只能作为源操作数,如 MOV AX,0FA00H;正确 不能作为目的操作数,如 MOV 8000H,AX ;错误,2018/12/8,3.2.2 有效地址的概念,在80X86系列CPU中,内存单元的地址由两部分组成: 段基地址和段内偏移地址(也称段内偏移量) 1)段基地址一般可由段寄存器直接给出,如CS、DS、SS、 ES等,也可以通过段寄存器的内容进行计算得出。 2)段内偏移量最多可以由四个基本部分,按照一定的规则计 算组合

4、而成,所以也称为有效地址EA。 有效地址四分量包括: 基址寄存器内容: 变址寄存器内容: 比例因子: 在32/64位寻址方式中使用 位移量: 一般是一个具体数值,基址、变址寄存器的值通常为某局部存储区的首地址(比如数组),2018/12/8,有效地址EA计算方法:,EA基址寄存器(变址寄存器比例因子)位移量 有效地址四分量的使用规则:,如:ADD AX,20BXSI ;EA=(BX)+(SI)+20 MOV EBX,EAX4*EDX+2AH ;EA=(EAX)+(EDX)4+2AH,2018/12/8,16位寻址方式主要是针对于实地址存储模式的应用,兼容了Intel 8086的工作模式。存储器

5、的最大分段不超过64KB,最大线性地址空间是1MB。 32位寻址方式主要是用于保护模式下,程序只能存取最低4GB地址空间,使用16位或32位地址。使用16位的分段选择子以及32位的段内偏移地址,每个段最大可达4GB。 64位寻址方式采用64位线性地址空间,支持40位物理地址空间。通常不采用分段方式,而是将CS,DS,ES和SS的段基址看成0,这样线性地址等于有效地址,是一种平展存储管理模式。,不同方式下的寻址空间,2018/12/8,3.3 各种寻址方式,一、立即寻址 操作数作为立即数直接包含在指令中,在指令执行时不需再访问存储器。立即数可以是8、16 、32 、64位。 MOV BL,12H

6、 ;字节传送 MOV AX,1020H ;字传送 MOV EDX,12345678H ;32位传送 MOV RAX,1122334455667788H ;64位传送(四字),2018/12/8,二、寄存器寻址方式,寄存器寻址方式下,被访问的操作数存放在指令规定的寄存器中。 INC CL ;8位寄存器加1 MOV DS,AX ;16位寄存器传送 MOV ECX,EAX ;32位寄存器传送 MOV RBX,RAX ;64位寄存器传送 CPU执行指令时,不需要使用访问总线,所以指令的执行速度快。,2018/12/8,三存储器寻址方式,含义:操作数在存储区中,指令的操作数部分指出此操作数的有效地址EA

7、。根据EA的生成方式的不同,可分为以下几种寻址分式: (1)直接寻址:是存储器直接寻址的简称,指令中的操作数部分直接给出操作数的有效地址EA,是16位或32位的位移量数据,它放在代码段中,操作数一般在数据段中,也可以进行段超越 。 MOV AX,2000H ;将DS段中2000H和2001H单元内容 ; 分别送AL和AH MOV AX,ES:2000H ;将ES段中2000H和2001H单 ;元内容分别送AL和AH,2018/12/8,(2)寄存器间接寻址,操作数在存储器中,而操作数的有效地址EA却在指定的寄存器中, 即 EA寄存器 1)16位寻址时,EA放在SI、DI、BP或BX中。 若以S

8、I、DI、BX间接寻址,则默认操作数在DS段中。 MOV AX,SI ;默认DS为段基址 若以寄存器BP间接寻址,则默认操作数在堆栈段中。 MOV AX,BP ;默认SS为段基址 如果操作数不在上述规定的默认段,则必须在指令中相应的操作数前加上段超越前缀。 MOV CX,DS:BP ;DS:是段超越前缀, 表示访问 数据段,而非堆栈段 2)32位寻址时,8个32位通用寄存器均可作寄存器间接寻址。 MOV CH,EAX MOV DX,EBX 除EBP、ESP默认段寄存器为SS外,其余6个寄存器均默认段寄存器DS,可以采用段超越前缀对其它段进行寻址。 CS和ES不能被超越,在堆栈操作时,SS也不能

9、被超越。,2018/12/8,3)64位寻址时,16个32位/64位通用寄存器均可作寄存器间接寻址使用。 MOV CL,R10 ;操作数是8位的,操作数地址由64位寄存器R10指出 MOV RDX,EBX ;操作数是64位的,操作数地址由32位寄存器EBX,指 出经零扩展后形成64位有效地址 MOV AX,BX 的执行过程:假设BX寄存器的内容为1000H,则把DS段中的1000H号单元的16位数据传送给AX寄存器,该指令的机器码为8B07H。,注意:直接寻址中有效地址EA来自指令自身,相当于一个常量; 而寄存器间接寻址中有效地址EA来自寄存器,该内容由前面的指 令确定,相当于一个变量。,20

10、18/12/8,(3)寄存器相对寻址,EA基址/变址寄存器位移量 其中位移量由指令直接给出,是指令的一部分。 基址寄存器的使用规则: 1)16位寻址时,BP和BX作为基址寄存器,默认情况下,BX以DS作为段寄存器,BP以SS作为段寄存器;SI(源变址)和DI(目的变址)作为变址寄存器,默认DS作为段基址寄存器。位移量是8位或16位。 2)32位寻址时,8个32位通用寄存器都能作为基址或变址寄存器。其中ESP、EBP默认段寄存器为SS,其余6个寄存器均默认段寄存器为DS,段可以超越;除ESP外的任何32位通用寄存器均可作变址寄存器。且EBP以SS为默认段寄存器,其余以DS为默认段寄存器。位移量是

11、8位或32位,当位移量超过8位则按照32位处理。,2018/12/8,3)64位寻址时,16个32位/64位通用寄存器都能作为基址寄存器。当使用32位通用寄存器时,先将32位通用寄存器内容零扩展为64位,再与经过符号扩展为64位的位移量相加形成64位有效地址。只有MOV指令允许使用64位的位移量,而其他指令只能使用不超过32位的位移量。 MOV RAX,R155;有效地址为R15寄存器内容加5 的和 MOV RCX,EDX0F0H ;有效地址为EDX寄存器内容零扩展为64位后,再与位移量0F0H符号扩展成64位(0FFFFFFFFFFFFFFF0H)相加的和,2018/12/8,MOV AX,

12、BX24 ;也可写成 MOV AX,24BX MOV ECX,EBP50 ;也可写成 MOV ECX,50EBP MOV DX,EAXBASE ;也可写成 MOV DX,BASEEAX BASE是符号常量或变量 MOV ECX,EBP+50指令执行时,EBP寄存器内容为3000H,再加上位移量50H之和为3050H,然后把由SS寄存器寻址的段中的3050H单元的32位数据传送给ECX。,2018/12/8,(4)基址加变址寻址,EA 基址寄存器+变址寄存器 MOV AX,BX+SI ;或写成MOV AX,BXSI,BX决定默认段基址由DS指出 MOV EAX,EDXEBP ;由EBP决定默认S

13、S为段基址寄存器 MOV R12,EAX+EDX ;用于64位方式,有效地址为EAX+EDX的和再扩展为64位 MOV RBX,R10+RBP ;有效地址为R10+RBP的64位和。,2018/12/8,(5)带位移的基址加变址寻址,EA基址寄存器变址寄存器位移量 MOV AX,BX+SI+SOME ;16位寻址 MOV EAX,EBX+EBP+2 ;32位寻址 MOV R8,R9+R10+4 ;64位寻址,(6)比例变址寻址 EA变址寄存器比例因子位移量 乘比例因子的操作是在CPU内部靠硬件完成的。 MOV EAX,ARRAYESI4 ;32位寻址 MOV RAX,RBX8+10H ;64位

14、寻址,2018/12/8,(7)基址加比例变址寻址,EA基址寄存器变址寄存器比例因子 只适于32/64位寻址的情况 【例】 MOV EDX,EAX8EBX 或MOV EDX,EAX4EBX MOV EAX,EBX4ESI 或MOV EAX,EBX4ESI MOV RBX,RAX4+RCX ;64位方式,(8)带位移的基址加比例变址寻址 EA基址寄存器变址寄存器比例因子位移量 【例】 MOV AX,EBX8+ECX+100 ;或 MOV AX,EBX8ECX100 -只能是32位或64位寻址,2018/12/8,四端口寻址方式,端口寻址方式只在对外部设备的访问指令中适用,包括端口的直接寻址和间接寻址两种方式,具体细节在3.3.1节的I/O数据传送类指令的叙述中,结合具体指令详细介绍。,2018/12/8,段寄存器的使用规则,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

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