资源预览内容
第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
第9页 / 共91页
第10页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 寻址方式与指令系统3.1 数据类型及其存储规则 3.1.1基本数据类型及存储 一个存储单元一个字节占用内存的一个地址。基本数据类型:字、双字、四字、双四字字两个相邻字节组成的16位二进制;双字4个相邻字节组成的32位二进制数;四字8个相邻字节组成的64位二进制数;双四字16个相邻字节组成的128位二进制数。高 低高 字 低 字高 双 字低 双 字字节字双字四字高 四 字低 四 字双四字7 07 015 815 031 1631 063 3263 0127 64 NNN+1NN+2NN+4NN+8图3.1 基本数据类型的结构形式9CH 48H 2BH6AH 7AH 1AH C3H 23H 72H 92H8BH 3AH ABHA2H12H 45H NN1N2N3N4N5N6N7N8N9N10N11N12 N13N14N+15 单元地址图3.2 基本数据类型存储规律 3.1.2 数字数据类型数据类型包含:无符号整数、带符号整数和浮点数。1无符号整数(范围:02n-1)2带符号整数(范围:2n-1 +2n-1-1)带符号整数是用2的补码表示的二进制值。规定操作数的最高位为符号位。3浮点数浮点数据类型可分为三种:单精度浮点、双精度浮点和双 扩展的精度浮点。 3.1.3 指针数据类型在实方式下有两种类型的指针:近指针(16位)和远指针(32 位)偏 移Near指针31 0偏 移段选择子Far指针或逻辑地址31 047 32(a)(b)图3.3 指针数据类型(虚拟方式)3.1.4 字符串、位及位串数据类型字符串包括字节串、字串和双字串。它们分别是字节、字和双字的相邻序列。7 07 07 015 015 015 031 031 031 0字节串字 串双字串NN+1N+MNN+2N+2MNN+4N+4M图3.4 字节、字、双字字符串数据类型3.2 计算机指令格式指令包括两部分:指令操作码部分和地址码部分。 指令操作码部分是给出该指令应完成何种操作。 地址码部分是用来描述该指令的操作对象。 指令格式可分为:零地址指令、一地址指令、二地址指令和三地址 指令。 零地址指令:只有操作码部分,而没有操作数的指令; 一地址指令:只有目的操作数的单操作数指令; 二地址指令:有两个地址指出两个操作数的地址; 三地址指令优点:操作结束后,原两个操作数的内容均未被破坏;缺点:增加一个地址后,使得指令码加长,增加了存储 空间,取指时间变长。3.2.1 指令的助记符格式助记符格式可用以下通式表示:L: op D1, D2, D3其中:L是标号,在标识符后面跟有冒号(:)op是助记符,具有相同功能的指令操作码的保留名例如:MOV AX , BX操作码的助记符 目的操作数 源操作数3.2.2 80x86指令编码格式指令编码格式包含操作码和操作数两部分。操作码表示计算机执行什么操作。操作数指明参与操作的数的本身,或规定了操作数的地址。图 3.5 8086 CPU指令编码的一般形式1)操作码字节 它是指令的第一字节,规定指令的操作类型,是指令的必选字节,字节内容如下:D7 D6 D5 D4 D3 D2 D1 D0 操作码字节寻址方式字节偏移量字节(1/2)立即数字节(1/2)OP D WOP:表示指令操作码,D:表示指令中数据传送的方向。W:表示操作数类型。2)寻址方式字节。它是指令的第二字节,规定操作数的寻址方式。是指令的可选字节,字节内容如下:D7 D6 D5 D4 D3 D2 D1 D0 MOD:表示方式域,D7、D6位能表示4种不同的方式。REG:表示寄存器域,D5、D4、D3位能表示8种不同的寄存器。R/M:表示寄存器存储器域,D2、D1、D0位能表示8种不同的 寄存器存储器。MODREGR/M表3-1 mod与rm域所组合的寻址方式 MODR/M存储器寻址寄存器寻址 逻辑地址的计算公式W0W1MOD00B MOD01BMOD10BMOD11B 000 001 010 011 100 101 110 111DS:BX+SI DS:BX+DI SS:BP+SI SS:BP+DI DS:SI DS:DI DS:disp16 Ds:BXDS:BX+SI+disp8 DS:BX+DI +disp8 SS:BP+SI +disp8 SS:BP+DI +disp8 DS:SI +disp8 DS:DI +disp8 DS:disp16 +disp8 Ds:BX +disp8DS:BX+SI+disp16 DS:BX+DI +disp16 SS:BP+SI +disp16 SS:BP+DI +disp16 DS:SI +disp16 DS:DI +disp16 DS:disp16 +disp16 Ds:BX +disp16AL CL DL BL AH CH DH BHAX CX DX BX SP BP SI DI3) 偏移量字节 是指令的第三、四字节,是指令的可选字节, 给出了存储器操作数的偏移量。4) 立即数字节 是指令的可选字节,给出了指令的立即数。3.3 8086CPU的寻址方式寻址方式寻找指令或操作数存放地址的方法。两种寻址方式:一种是用来对操作数进行寻址;另一种是用来对转移地址或调用地址进行寻址,即对指令地址进行寻址。3.3.1 操作数的寻址方式1、 立即寻址立即数寻址特点:指令执行速度快。立即数只能是整数,且只能作为源操作数。图3-6 立即数寻址过程代码段1234MOV AX, 3412H 的指令代码34AXAH AL操作码122、 寄存器寻址方式寄存器寻址方式的优点:不但可以减少指令码的长度,而且由 于操作数已存于寄存器中,执行速度 较快。寄存器既能作为源操作数,又能作为目的操作数。例如: MOV AX,CX该指令将CX(源操作数)的内容传送到AX寄存器(目的操作数)中,其中源操作数CX,目的操作数AX都是寄存器寻址方式。3、 存储器寻址指令给出了操作数在数据区中的地址信息。五种不同的存储器寻址方式:(1)直接寻址方式例如: MOV AX,7834H该指令将有效地址EA=8064H单元中的内容传送到AX寄存器 中。若(DS)=2000H,则该指令源操作数的存储单元的物理地 址为20000H7834H=27834H。 代码段操作码34数据段2 0 0 0DS 20000 +7834 2783434 12AXMOV AX,7834H指 令代码78 12 34图3-7 直接寻址方式寻址过程(2)寄存器间接寻址操作数存放在存储单元中。注意两点:一是寄存器中的内容是操作数的有效地址,而不是 操作数本身;二是只能用CPU中的基址寄存器BX、BP或变址寄存器 DI、SI来间接寻址。如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认段寄存器为DS。即:物理地址=DS10H+EA=DS10H+ 或 物理地址=SS10H+BP例如: MOV AX,DI 代码段操作码数据段12341 2 3 4DS2 4 6 8BX12340 +2468147A834 12AXMOV AX,BX指 令代码图3-8 寄存器间接寻址示意图(3)寄存器相对寻址操作数存放在存储单元中物理地址=DS10H+EA= DS10H+ 或 物理地址=SS10H+BP例如: MOV BX,DI+10H 基址寻址用BX、BP为基址寄存器进行寻址变址寻址用SI、DI为变址寄存器进行寻址 代码段操作码24数据段2678681 2 3 4DS2 7 3 2BX1234027321B29678 26AXMOV AX,BX6824H 指令代码+6824 图3-9 寄存器相对寻址操作过程(4)基址加变址寻址方式操作数存放在存储单元中物理地址= DS10H+EA=DS10H+ 或 物理地址= SS10H+ 例如: ADD AX,BX+SI +1026003412340代码段操作码数据段78561 2 3 4DS1 0 2 6SI 1339A56 78AXMOV AX, BXSI 指令代码0 0 3 4BX图3-10 基址加变址寻址方式操作过程(5)相对的基址和变址寻址方式操作数存放在存储单元中物理地址=DS10H+EA=DS10H+或 物理地址=SS10H + 例如:MOV AH,BXSI2468HMOV AH,BXSI2468H 指令代码0110010020000代码段操作码68数据段2623 2 0 0 0DS0 1 1 0SI2267826AH 0 1 0 0BX+246824 图3-11 相对的基址和变址寻址方式操作过程过程4、 IO端口寻址操作数在IO端口中。两种编址方式:与存储器统一编址方式独立的IO空间编址方式与存储器统一编址方式,上述五种存储器寻址方式均可采用。独立的IO空间编址方式则对IO端口有两种寻址方式:(l)直接端口寻址方式端口地址的寻址范围是 0 0FFH,端口地址直接由指令给出。(2) 间接端口寻址方式端口地址的寻址范围是 0 0FFFFH,端口地址由DX寄存器给出。 3.3.2 指令地址的寻址方式指令地址的寻址方式以下4种:(1) 段内直接寻址方式转移的指令地址是由当前的IP内容和指令中规定的8位或16位偏移量之和给出。+2101012112340代码段操作码操作码01211 2 3 4CS14562段内直接转移 指令代码0 1 2 1IP目标指令代码图3-12 段内直接寻址方式过程(2) (2) 段内间接寻址方式段内间接寻址方式转移的指令地址是由用寄存器或一个字存储单元的内容给出。 转移的指令地址是由用寄存器或一个字存储单元的内容给出。代码段操作码操作码数据寻 址方式CS段内间接转 移指令代码根据数据寻址 方式计算EAIP目标指 令代码图3-13 段内间接寻址方式过程(3) 段间直接寻址方式转移的指令地址是由指令码字节直接给出。 3412+78560代码段操作码操作码12347 8 5 6CS7B972段间直接 转移代码3 4 1 2IP目标指 令代码5678图3-14 段间直接寻址过程(4) 段间间接寻址方式转移的指令地址由一个双字存储单元的内容给出。 图3-15 段间间接寻址方式过程代码段操作码操作码数据寻 址方式段间间接转 移指令代码目标指 令代码DSCSIP数据段12 3456 78根据数据寻址 方式计算EA3.4 8086指令系统指令系统按功能可分为6类: 数据传送类指令; 算术运算类指令; 逻辑运算与移位类指令; 字符串指令; 控制转移类指令; 处理器控制类指令。3.4.1 数据传送类指令分为4种: 通用数据传送指令 累加器专用传送指令 地址传送指令 标志传送指令。1通用数据传送指令(1)最基本的传送指令
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号