版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 寻址方式与指令系统寻址方式与指令系统3.1 3.1 数据类型及其存储规则数据类型及其存储规则 3.1.13.1.1基本数据类型及存储基本数据类型及存储 一个存储单元一个存储单元一个字节占用内存的一个地址。一个字节占用内存的一个地址。基本数据类型:字、双字、四字、双四字基本数据类型:字、双字、四字、双四字字字两个相邻字节组成的两个相邻字节组成的1616位二进制;位二进制;双字双字4 4个相邻字节组成的个相邻字节组成的3232位二进制数;位二进制数;四字四字8 8个相邻字节组成的个相邻字节组成的6464位二进制数;位二进制数;双四字双四字1616个相邻字节组成的个相邻字节组成的128
2、128位二进制数。位二进制数。高高 低低高高 字字 低低 字字高高 双双 字字低低 双双 字字字节字节字字双字双字四字四字高高 四四 字字低低 四四 字字双四双四字字7 07 07 07 015 815 815 15 0 031 31 161631 31 0 063 63 323263 63 0 0127 127 64 64 N NN NN+1N+1N NN+2N+2N NN+4N+4N NN+8N+8图图3.1 3.1 基本数据类型的结构形式基本数据类型的结构形式9CH48H2BH6AH7AH1AHC3H23H72H92H8BH3AHABHA2H12H45HNN1N2N3N4N5N6N7N8
3、N9N10N11N12N13N14N+15N+15单元地址单元地址图图3.2 3.2 基本数据类型存储规律基本数据类型存储规律 3.1.2 3.1.2 数字数据类型数字数据类型数据类型包含:无符号整数、带符号整数和浮点数。数据类型包含:无符号整数、带符号整数和浮点数。1 1无符号整数(范围:无符号整数(范围:0 02 2n n-1-1)2 2带符号整数(范围:带符号整数(范围:2 2n-1 n-1 +2+2n-1n-1-1-1) 带符号整数是用带符号整数是用2 2的补码表示的二进制值。规定操作数的最的补码表示的二进制值。规定操作数的最高位为符号位。高位为符号位。3 3浮点数浮点数 浮点数据类型
4、可分为三种:单精度浮点、双精度浮点和双浮点数据类型可分为三种:单精度浮点、双精度浮点和双扩展的精度浮点。扩展的精度浮点。3.1.33.1.3指针数据类型指针数据类型在实方式下有两种类型的指针:近指针(在实方式下有两种类型的指针:近指针(1616位)和远指针(位)和远指针(3232位)位)偏偏 移移NearNear指针指针31 031 0偏偏 移移段选择子段选择子FarFar指针或逻辑地址指针或逻辑地址31 031 047 3247 32(a a)(b b)图图3.3 3.3 指针数据类型(虚拟方式)指针数据类型(虚拟方式)3.1.43.1.4字符串、位及位串数据类型字符串、位及位串数据类型字符
5、串包括字节串、字串和双字串。字符串包括字节串、字串和双字串。它们分别是字节、字和双字的相邻序列。它们分别是字节、字和双字的相邻序列。7 07 07 07 07 07 015 015 015 015 015 015 031 031 031 031 031 031 0字节串字节串字字 串串双字串双字串N NN+1N+1N+MN+MN NN+2N+2N+2MN+2MN NN+4N+4N+4MN+4M图图3.4 3.4 字节、字、双字字符串数据类型字节、字、双字字符串数据类型3.2 3.2 计算机指令格式计算机指令格式指令包括两部分:指令操作码部分和地址码部分。指令包括两部分:指令操作码部分和地址码部
6、分。指令操作码部分是给出该指令应完成何种操作。指令操作码部分是给出该指令应完成何种操作。地址码部分是用来描述该指令的操作对象。地址码部分是用来描述该指令的操作对象。指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令。指令。零地址指令:只有操作码部分,而没有操作数的指令;零地址指令:只有操作码部分,而没有操作数的指令;一地址指令:只有目的操作数的单操作数指令;一地址指令:只有目的操作数的单操作数指令;二地址指令:有两个地址指出两个操作数的地址;二地址指令:有两个地址指出两个操作数的地址;三地址指令优点:操作结束后,原两个操作数
7、的内容均未被破坏;三地址指令优点:操作结束后,原两个操作数的内容均未被破坏; 缺点:增加一个地址后,使得指令码加长,增加了存储缺点:增加一个地址后,使得指令码加长,增加了存储空间,取指时间变长。空间,取指时间变长。 3.2.1 3.2.1 指令的助记符格式指令的助记符格式助记符格式可用以下通式表示:助记符格式可用以下通式表示:L L:op D1, D2, D3op D1, D2, D3其中:其中:L L是标号,在标识符后面跟有冒号(:)是标号,在标识符后面跟有冒号(:)opop是助记符,具有相同功能的指令操作码的保留名是助记符,具有相同功能的指令操作码的保留名例如:例如: MOV MOV AX
8、AX, BXBX操作码的助记符目的操作数源操作数操作码的助记符目的操作数源操作数3.2.2 80 x863.2.2 80 x86指令编码格式指令编码格式指令编码格式包含操作码和操作数两部分。指令编码格式包含操作码和操作数两部分。操作码表示计算机执行什么操作。操作码表示计算机执行什么操作。操作数指明参与操作的数的本身,或规定了操作数的地址。操作数指明参与操作的数的本身,或规定了操作数的地址。图图 3.5 8086 CPU3.5 8086 CPU指令编码的一般形式指令编码的一般形式1)1)操作码字节操作码字节 它是指令的第一字节,规定指令的操作类型,是它是指令的第一字节,规定指令的操作类型,是指令
9、的必选字节,字节内容如下:指令的必选字节,字节内容如下: D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0 操作码字节操作码字节寻址方式字节寻址方式字节偏移量字节(偏移量字节(1/21/2)立即数字节(立即数字节(1/21/2)OP D WOP D WOPOP:表示指令操作码,:表示指令操作码,D D:表示指令中数据传送的方向。:表示指令中数据传送的方向。W W:表示操作数类型。:表示操作数类型。2)2)寻址方式字节。寻址方式字节。它是指令的第二字节,规定操作数的寻址方它是指令的第二字节,规定操作数的寻址方式。是指令的可选字节,字节
10、内容如下:式。是指令的可选字节,字节内容如下:D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0 MODMOD:表示方式域,:表示方式域,D D7 7、D D6 6位能表示位能表示4 4种不同的方式。种不同的方式。REGREG:表示寄存器域,:表示寄存器域,D D5 5、D D4 4、D D3 3位能表示位能表示8 8种不同的寄存器。种不同的寄存器。R/MR/M:表示寄存器存储器域,:表示寄存器存储器域,D D2 2、D D1 1、D D0 0位能表示位能表示8 8种不同种不同的寄存器存储器。的寄存器存储器。MODMODREGREGR
11、/MR/M表表3-1 mod3-1 mod与与r rm m域所组合的寻址方式域所组合的寻址方式 MOD MODR/MR/M存储器寻址存储器寻址寄存器寻址寄存器寻址逻辑地址的计算公式逻辑地址的计算公式W W0 0W W1 1MODMOD00B00BMODMOD01B01BMODMOD10B10BMODMOD11B11B000000001001010010011011100100101101110110111111DS:BX+SIDS:BX+SIDS:BX+DIDS:BX+DISS:BP+SISS:BP+SISS:BP+DISS:BP+DIDS:SIDS:SIDS:DIDS:DIDS:disp16
12、DS:disp16Ds:BXDs:BXDS:BX+SI+disp8DS:BX+SI+disp8DS:BX+DI +disp8DS:BX+DI +disp8SS:BP+SI +disp8SS:BP+SI +disp8SS:BP+DI +disp8SS:BP+DI +disp8DS:SI +disp8DS:SI +disp8DS:DI +disp8DS:DI +disp8DS:disp16 DS:disp16 +disp8+disp8Ds:BX +disp8Ds:BX +disp8DS:BX+SI+disp16DS:BX+SI+disp16DS:BX+DI +disp16DS:BX+DI +dis
13、p16SS:BP+SI +disp16SS:BP+SI +disp16SS:BP+DI +disp16SS:BP+DI +disp16DS:SI +disp16DS:SI +disp16DS:DI +disp16DS:DI +disp16DS:disp16 +disp16DS:disp16 +disp16Ds:BX +disp16Ds:BX +disp16ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDI3 3) 偏移量字节偏移量字节 是指令的第三、四字节,是指令的可选字节,是指令的第三、四字节,是指令的可选字节,
14、给出了存储器操作数的偏移量。给出了存储器操作数的偏移量。4 4) 立即数字节立即数字节 是指令的可选字节,给出了指令的立即数。是指令的可选字节,给出了指令的立即数。3.3 8086CPU3.3 8086CPU的寻址方式的寻址方式寻址方式寻址方式寻找指令或操作数存放地址的方法。寻找指令或操作数存放地址的方法。 两种寻址方式:一种是用来对操作数进行寻址;另一种是两种寻址方式:一种是用来对操作数进行寻址;另一种是 用来对转移地址或调用地址进行寻址,即用来对转移地址或调用地址进行寻址,即 对指令地址进行寻址。对指令地址进行寻址。3.3.1 3.3.1 操作数的寻址方式操作数的寻址方式1 1、 立即寻址
15、立即寻址立即数寻址特点:指令执行速度快。立即数寻址特点:指令执行速度快。立即数只能是整数,且只能作为源操作数。立即数只能是整数,且只能作为源操作数。图图3-63-6立即数寻址过程立即数寻址过程代码段代码段12123434MOV AX, 3412HMOV AX, 3412H的指令代码的指令代码3434AXAXAHAHALAL操作码操作码12122 2、 寄存器寻址方式寄存器寻址方式寄存器寻址方式的优点:不但可以减少指令码的长度,而且由寄存器寻址方式的优点:不但可以减少指令码的长度,而且由 于操作数已存于寄存器中,执行速度于操作数已存于寄存器中,执行速度 较快。较快。寄存器既能作为源操作数,又能作
16、为目的操作数。寄存器既能作为源操作数,又能作为目的操作数。例如:例如: MOV AXMOV AX,CXCX 该指令将该指令将CXCX(源操作数)的内容传送到(源操作数)的内容传送到AXAX寄存器(目的操寄存器(目的操作数)中,其中源操作数作数)中,其中源操作数CXCX,目的操作数,目的操作数AXAX都是寄存器寻址方式。都是寄存器寻址方式。3 3、 存储器寻址存储器寻址指令给出了操作数在数据区中的地址信息。指令给出了操作数在数据区中的地址信息。五种不同的存储器寻址方式:五种不同的存储器寻址方式:(1 1)直接寻址方式)直接寻址方式例如:例如: MOV AXMOV AX,7834H7834H 该指
17、令将有效地址该指令将有效地址EA=8064HEA=8064H单元中的内容传送到单元中的内容传送到AXAX寄存器寄存器中。若(中。若(DSDS)=2000H=2000H,则该指令源操作数的存储单元的物理,则该指令源操作数的存储单元的物理地址为地址为20000H20000H7834H=27834H7834H=27834H。代码段代码段操作码操作码3434数据段数据段2 0 0 02 0 0 0DSDS2000020000+7834+783427834278343434 1212AXAXMOV AX,7834HMOV AX,7834H指指令代码令代码787812123434图图3 3- -7 7直接
18、寻址方式寻址过程直接寻址方式寻址过程(2 2)寄存器间接寻址)寄存器间接寻址操作数存放在存储单元中。操作数存放在存储单元中。注意两点:一是寄存器中的内容是操作数的有效地址,而不是注意两点:一是寄存器中的内容是操作数的有效地址,而不是 操作数本身;操作数本身; 二是只能用二是只能用CPUCPU中的基址寄存器中的基址寄存器BXBX、BPBP或变址寄存器或变址寄存器 DIDI、SISI来间接寻址。来间接寻址。如果指令前面没有用前缀指令指明操作数在哪一段,则通常如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认段寄存器为默认段寄存器为DSDS。即:。即: 物理地址物理地址=DS=DS10H+EA
19、=DS10H+EA=DS10H+ 10H+ 或或 物理地址物理地址=SS=SS10H+BP10H+BP例如:例如: MOV AXMOV AX,DI DI 代码段代码段操作码操作码数据段数据段121234341 12 23 34 4DSDS2 24 46 68 8BXBX1234012340+2468+2468147A8147A834 1234 12AXAXMOV AX,BXMOV AX,BX指指令代码令代码图图3-8 3-8 寄存器间接寻址示意图寄存器间接寻址示意图(3(3)寄存器相对寻址)寄存器相对寻址操作数存放在存储单元中操作数存放在存储单元中物理地址物理地址=DS=DS10H+EA= D
20、S10H+EA= DS10H+ 10H+ 或或 物理地址物理地址=SS=SS10H+BP10H+BP例如:例如: MOV BXMOV BX,DI+10H DI+10H 基址寻址基址寻址用用BXBX、BPBP为基址寄存器进行寻址为基址寄存器进行寻址变址寻址变址寻址用用SISI、DIDI为变址寄存器进行寻址为变址寄存器进行寻址 代码段代码段操作码操作码2424数据段数据段2626787868681 12 23 34 4DSDS2 27 73 32 2BXBX1234012340273227321B2961B29678 2678 26AXAXMOVMOVAX,BXAX,BX6824H6824H指令代
21、码指令代码+6824+6824图图3-9 3-9 寄存器相对寻址操作过程寄存器相对寻址操作过程(4(4)基址加变址寻址方式)基址加变址寻址方式操作数存放在存储单元中操作数存放在存储单元中 物理地址物理地址= DS= DS10H+EA=DS10H+EA=DS10H+ 10H+ 或或 物理地址物理地址= SS= SS10H+ 10H+ 例如:例如: ADD AXADD AX,BX+SI BX+SI +1026+1026003400341234012340代码段代码段操作码操作码数据段数据段787856561 12 23 34 4DSDS1 10 02 26 6SISI1339A1339A56 78
22、56 78AXAXMOV AX, BXMOV AX, BXSISI指令代码指令代码0 00 03 34 4BXBX图图3-10 3-10 基址加变址寻址方式操作过程基址加变址寻址方式操作过程(5(5)相对的基址和变址寻址方式)相对的基址和变址寻址方式操作数存放在存储单元中操作数存放在存储单元中物理地址物理地址=DS=DS10H+EA=DS10H+EA=DS10H+10H+或或 物理地址物理地址=SS=SS10H + 10H + 例如:例如:MOV AHMOV AH,BXBXSISI2468H2468HMOV AH,BXMOV AH,BXSISI2468H2468H指令代码指令代码0110011
23、0010001002000020000代码段代码段操作码操作码6868数据段数据段262623232 20 00 00 0DSDS0 01 11 10 0SISI22678226782626AHAH0 01 10 00 0BXBX+2468+24682424图图3-11 3-11 相对的基址和变址寻址方式操作过程过程相对的基址和变址寻址方式操作过程过程4 4、 I IO O端口寻址端口寻址操作数在操作数在I IO O端口中。端口中。两种编址方式:与存储器统一编址方式两种编址方式:与存储器统一编址方式独立的独立的I IO O空间编址方式空间编址方式与存储器统一编址方式,上述五种存储器寻址方式均可
24、采用。与存储器统一编址方式,上述五种存储器寻址方式均可采用。独立的独立的I IO O空间编址方式则对空间编址方式则对I IO O端口有两种寻址方式:端口有两种寻址方式:(l(l)直接端口寻址方式)直接端口寻址方式端口地址的寻址范围是端口地址的寻址范围是 0 0 0FFH0FFH,端口地址直接由指令给,端口地址直接由指令给出。出。(2(2) 间接端口寻址方式间接端口寻址方式端口地址的寻址范围是端口地址的寻址范围是 0 0 0FFFFH0FFFFH,端口地址由,端口地址由DXDX寄存器寄存器给出。给出。3.3.2 3.3.2 指令地址的寻址方式指令地址的寻址方式指令地址的寻址方式以下指令地址的寻址
25、方式以下4 4种:种:(1) (1) 段内直接寻址方式段内直接寻址方式转移的指令地址是由当前的转移的指令地址是由当前的IPIP内容和指令中规定的内容和指令中规定的8 8位或位或1616位位偏移量之和给出。偏移量之和给出。+2101+2101012101211234012340代码段代码段操作码操作码操作码操作码010121211 12 23 34 4CSCS1456214562段内直接转移段内直接转移指令代码指令代码0 01 12 21 1IPIP目标指令代码目标指令代码图图3 3- -1 12 2段内直接寻址方式过程段内直接寻址方式过程代码段代码段操作码操作码操作码操作码数据寻数据寻址方式址
26、方式CSCS段内间接转段内间接转移指令代码移指令代码根据数据寻址根据数据寻址方式计算方式计算EAEAIPIP目标指目标指令代码令代码图图3 3- -1 13 3段内间接寻址方式过程段内间接寻址方式过程(3) (3) 段间直接寻址方式段间直接寻址方式 转移的指令地址是由指令码字节直接给出。转移的指令地址是由指令码字节直接给出。 34123412+78560+78560代码段代码段操作码操作码操作码操作码121234347 8 5 67 8 5 6CSCS7B9727B972段间直接段间直接转移代码转移代码3 4 1 23 4 1 2IPIP目标指目标指令代码令代码56567878图图3 3- -
27、1 14 4段间直接寻址过程段间直接寻址过程(4) (4) 段间间接寻址方式段间间接寻址方式 转移的指令地址由一个双字存储单元的内容给出转移的指令地址由一个双字存储单元的内容给出。图图3 3- -1 15 5段间间接寻址方式过程段间间接寻址方式过程代码段代码段操作码操作码操作码操作码数据寻数据寻址方式址方式段间间接转段间间接转移指令代码移指令代码目标指目标指令代码令代码DSDSCSCSIPIP数据段数据段1212343456567878根据数据寻址根据数据寻址方式计算方式计算EAEA3.4 80863.4 8086指令系统指令系统指令系统按功能可分为指令系统按功能可分为6 6类:类: 数据传送
28、类指令;数据传送类指令; 算术运算类指令;算术运算类指令; 逻辑运算与移位类指令;逻辑运算与移位类指令; 字符串指令;字符串指令; 控制转移类指令;控制转移类指令; 处理器控制类指令。处理器控制类指令。3.4.1 3.4.1 数据传送类指令数据传送类指令分为分为4 4种:种: 通用数据传送指令通用数据传送指令 累加器专用传送指令累加器专用传送指令 地址传送指令地址传送指令 标志传送指令。标志传送指令。1 1通用数据传送指令通用数据传送指令(1(1)最基本的传送指令)最基本的传送指令格式:格式: MOV 目的操作数,源操作数目的操作数,源操作数举例:举例:MOVBL,ALMOVDS,AXMOVD
29、L,DIMOVBX,AXMOVDX,1000MOVBH,120MOVDX,1234H(2(2)堆栈操作指令)堆栈操作指令 堆栈是一种数据结构,是在内存中开辟了一个比较特殊的堆栈是一种数据结构,是在内存中开辟了一个比较特殊的存储区,这个区域中数据的存取采用存储区,这个区域中数据的存取采用“后进先出后进先出”的原则。的原则。10001000SSSS00180018SPSP60605050404030302020101010018100181001A1001A栈顶栈顶栈底栈底10001000SSSS00160016SPSP606050504040303020201010ABABCDCD1001810
30、0181001A1001A栈顶栈顶栈底栈底10001000SSSS001A001ASPSP40403030202010101001A1001A栈顶栈顶栈底栈底1001610016图图3.13.16 680868086系统椎栈及其操作系统椎栈及其操作( (a)a)堆栈原始状态堆栈原始状态 ( (b)b)执行执行push AX (c)push AX (c)执行执行POP AXPOP AX ( (AX)=CDABH AX)=CDABH POP BX POP BX后的状态后的状态(a) (b) (c)(a) (b) (c)堆栈段堆栈段8086CPU在存储器分段管理时,划分了一个专门的在存储器分段管理时
31、,划分了一个专门的堆栈区。堆栈区。格式:格式:PUSH源操作数源操作数POP目的操作数目的操作数举例:举例:PUSHBXPUSHESPUSHDSPUSHSIPOPAXPOPBX1.POSHDI(3)交换指令)交换指令实现两个操作数之间进行直接交换,方便程序的编写。实现两个操作数之间进行直接交换,方便程序的编写。格式:格式:XCHG目的操作数,源操作数目的操作数,源操作数举例:举例:XCHGAH,BLXCHGDX,BXXCHG505H,AX2累加器专用传送指令累加器专用传送指令累加器是累加器是8086CPU进行数据传输的核心。进行数据传输的核心。有两类指令:有两类指令:输入输出指令输入输出指令换
32、码指令换码指令(1)输入输出指令)输入输出指令工业控制中常用的指令工业控制中常用的指令格式:格式:INAC,源操作数,源操作数OUT目的操作数,目的操作数,AC举例:举例:INAL,20HOUTDX,AX(2(2)换码指令)换码指令该指令用来将一个代码值转换成相应的另一种代码值,该指令用来将一个代码值转换成相应的另一种代码值,格式:格式: XLAT代码段代码段D7D77979数据段数据段404078780 03 30 00 0BXBX07070300030080307803070 70 7ALALXLATXLAT指令代码指令代码+80000+800008 80 00 00 0DSDS80300
33、8030080301803018030780307图图3 3- -1717XLATXLAT指令执行过程指令执行过程举例:举例:若要将十进制数若要将十进制数09转换成共阳极转换成共阳极LEDLED显示的字形代码,则列显示的字形代码,则列表如表表如表3-23-2所示。所示。十进制数(十进制数(BCDBCD码)码)字形代码字形代码0 040H40H1 179H79H2 224H24H3 330H30H4 419H19H5 512H12H6 602H02H7 778H78H8 800H00H9 918H18H表表3-2 3-2 十进制数十进制数09转换成转换成LEDLED显示的字形代码显示的字形代码3
34、地址传送指令地址传送指令它包括它包括3条指令:条指令:取有效地址指令取有效地址指令LEA;将地址指针装入将地址指针装入DS指令指令LDS;将地址指针装入将地址指针装入ES指令指令LES。格式:格式:LEA寄存器,源操作数寄存器,源操作数LDS寄存器,源操作数寄存器,源操作数LES寄存器,源操作数寄存器,源操作数举例:举例:LEAAX,DI+1000LEAAX,3721HLDSSI,2130HLESDI,SI 代码段代码段C5C57878数据段数据段5656000020201 10 00 00 0DSDS初值初值+2130+213012130121307 8 5 67 8 5 6SISILDS
35、SI, 2130HLDS SI, 2130H指令代码指令代码363621213030 10000 10000图图3 3- -1818LDSLDS指令执行过程指令执行过程2 20 00 00 0DSDS终值终值4标志传送指令标志传送指令标志传送指令包括标志传送指令包括4条指令:条指令:标志读取指令标志读取指令LAHF标志设置指令标志设置指令SAHF标志寄存器压入堆栈指令标志寄存器压入堆栈指令PUSHF标志寄存器从堆栈弹出指令标志寄存器从堆栈弹出指令POPF格式:格式:LAHFSAHFPUSHFPOPF举例:举例:PUSHFPOPBXPUSHCXPOPF OF DF IF TF SF ZF AF
36、OF DF IF TF SF ZF AF PF CFPF CF15 15 11 10 9 8 7 6 5 4 3 2 1 011 10 9 8 7 6 5 4 3 2 1 0FLAGSFLAGSLAHFLAHFSAHFSAHFAHAH图图3-19 LAHF3-19 LAHF和和SAHFSAHF指令传送操作指令传送操作3.4.2算术运算类指令算术运算类指令1加法指令加法指令格式:格式:ADD目的操作数,源操作数目的操作数,源操作数ADC目的操作数,源操作数目的操作数,源操作数INC目的操作数目的操作数举例:举例:ADDBL,15HADDBX,SIADCCX,BXINCDX2 2减法指令减法指令格
37、式:格式:SUB 目的操作数,源操作数目的操作数,源操作数 SBB 目的操作数,源操作数目的操作数,源操作数 DEC 目的操作数目的操作数 NEG 目的操作数目的操作数 CMP 目的操作数,源操作数目的操作数,源操作数举例:举例:SUBAX,BXSUBAH,110SBBBX,AXDECBX3 3乘法指令乘法指令格式:格式:MUL 源操作数源操作数 IMUL 源操作数源操作数举例:举例: MULDLIMULBX ALAL操作数操作数乘积乘积 AHAH ALALAXAX操作数操作数乘积乘积DX DX AXAX(a) (b)(a) (b)图图3-203-20乘法运算操作数及其运算结果间关系乘法运算操
38、作数及其运算结果间关系(a)(a)字节操作数字节操作数 (b)(b)字操作数字操作数4 4除法指令除法指令格式:格式:DIV 源操作数源操作数 IDIV 源操作数源操作数 CBWCBD举例:举例:DIVDLIDIVBXMOVAL,72HCBWMOVAX,8600H CWDALALAHAH商商余数余数操作数操作数AXAX8 8位位1616位位AXAXDXDX商商余数余数操作数操作数DX AXDX AX1616位位3232位位(a) (b)(a) (b)图图3-213-21除法运算操作数及其运算结果存放关系除法运算操作数及其运算结果存放关系(a)(a)字节操作数字节操作数 (b)(b)字操作数字操
39、作数5 5BCDBCD码运算的调整指令码运算的调整指令分为两类:组合式分为两类:组合式BCDBCD码和分离式码和分离式BCDBCD码码格式:格式: DAAAAADASAASAAMAAD举例:举例:ADCAL,SIDAAADDAL,DIAAASUBAL,BXDASMULDLAAMAADDIVBL3.4.3逻辑运算和移位指令逻辑运算和移位指令两组处理指令:逻辑运算指令和移位指令。两组处理指令:逻辑运算指令和移位指令。1逻辑运算指令逻辑运算指令指令格式:指令格式:AND目的操作数,源操作数目的操作数,源操作数OR目的操作数,源操作数目的操作数,源操作数NOT目的操作数目的操作数XOR目的操作数,源操
40、作数目的操作数,源操作数TEST目的操作数,源操作数目的操作数,源操作数举例:举例:ANDBL,0FHORCX,BX+DIXORAX,0FF00HTESTBX,8000HNOTDH2移位指令移位指令分为两大类:非循环移位指令和循环移位指令。分为两大类:非循环移位指令和循环移位指令。(1)非循环移位指令)非循环移位指令指令格式:指令格式:SAL目的操作数,计数值目的操作数,计数值SHL目的操作数,计数值目的操作数,计数值SAR目的操作数,计数值目的操作数,计数值SHR目的操作数,计数值目的操作数,计数值举例:举例:SALAX,1SHLAX,CLSARWORDPTRSI,1SHRDI,1CFCF0
41、 0MSBMSBLSBLSBCFCFCFCFMSBMSBLSBLSBMSBMSBLSBLSB0 0(a)(a)(b)(b)(c)(c)图图3-22 3-22 非循环移位指令操作示意图非循环移位指令操作示意图(a)SHL/SAL (a)SHL/SAL 算术左移算术左移 (b)SHR (b)SHR 逻辑右移逻辑右移 (c) SAR(c) SAR算术右移算术右移(2)循环移位指令)循环移位指令指令格式:指令格式:ROL目的操作数,计数值目的操作数,计数值ROR目的操作数,计数值目的操作数,计数值RCL目的操作数,计数值目的操作数,计数值RCR目的操作数,计数值目的操作数,计数值举例:举例:ROLAX
42、,1RORAH,CLRCLBYTEPTRBX,1RCRBX,1图图3.23 3.23 循环移位移位指令操作示意图循环移位移位指令操作示意图(a)ROL(a)ROL不带进位循环左移不带进位循环左移 (b)ROR(b)ROR不带进位循环右移不带进位循环右移 (c)RCL(c)RCL带进位循环左移带进位循环左移 (d)RCR(d)RCR带进位循环右移带进位循环右移CFCFMSBMSBLSBLSBCFCFCFCFMSBMSBLSBLSBMSBMSBLSBLSB(a)(a)(b)(b)(d)(d)CFCFMSBMSBLSBLSB(c)(c)3.4.4 3.4.4 串操作指令串操作指令串操作指令串操作指令
43、-用一条指令实现对一串字符或数据的操作。用一条指令实现对一串字符或数据的操作。串操作指令的特点:串操作指令的特点: 通过加重复前缀来实现串操作,规定通过加重复前缀来实现串操作,规定CXCX寄存器存放要处理的寄存器存放要处理的字符串的元素个数,即:字节数或字数。字符串的元素个数,即:字节数或字数。 可以对字节串进行操作,也可以对字串进行操作。可以对字节串进行操作,也可以对字串进行操作。 串操作时,串操作时,SISI和和DIDI的增减规定由方向标志的增减规定由方向标志DFDF设定,当设定,当DF=1DF=1时,时,SISI和和DIDI作自动减量修改,当作自动减量修改,当DF=0DF=0时,时,SI
44、SI和和DIDI作自动增量修改,对作自动增量修改,对字节串操作增减量为字节串操作增减量为1 1,对字串操作增减量为,对字串操作增减量为2 2。 重复的字符串处理过程可以被中断。重复的字符串处理过程可以被中断。5 5条串操作指令:串传送指令条串操作指令:串传送指令MOVSMOVS、串比较指令、串比较指令CMPSCMPS、串检索指、串检索指 令令SCASSCAS、LODSLODS串装入指令和串存储指令串装入指令和串存储指令STOSSTOS。3条重复前缀:重复前缀条重复前缀:重复前缀REP、相等时重复、相等时重复REPE和不和不相等时重复相等时重复REPNE。1指令的重复前缀指令的重复前缀格式:格式
45、:REP串操作指令串操作指令REPE串操作指令串操作指令或或REPZ串操作指令串操作指令REPNE串操作指令串操作指令或或REPNZ串操作指令串操作指令2 2字符串指令字符串指令(1(1)字符串传送指令)字符串传送指令指令格式:指令格式:MOVSBMOVSW举例:举例:MOVDS,2000HMOVES,3000HCLDMOVCX,20MOVSI,200HMOVDI,100HREPMOVSW(2)字符串比较指令)字符串比较指令指令格式:指令格式:CMPSBCMPSW举例:举例:编程比较从逻辑地址编程比较从逻辑地址2000H:100H开始的开始的10个字节与逻辑地个字节与逻辑地址址4000H:20
46、0H开始的开始的10个字节是否对应相等,相等则转个字节是否对应相等,相等则转DONE。MOVDS,2000HMOVES,4000HMOVDI,200HMOVSI,100HCLDMOVCX,10REPZCMPSBJZDONERETDONE(3)字符串检索指令)字符串检索指令指令格式:指令格式:SCASWSCASB功能:功能:SCASB/SCASW在字符串中查找一个与已知数值在字符串中查找一个与已知数值相同或不同的元素。相同或不同的元素。举例:举例:从逻辑地址从逻辑地址9000H:100H开始的开始的10个单元中如果有一个单元个单元中如果有一个单元的内容为的内容为2CH,则,则BX加加1。MOVE
47、S,9000HMOVDI,100HCLDMOVCX,10MOVAL,2CHREPNZSCASBJNZAAAINCBXAAA:(4)取字符串指令取字符串指令指令格式:指令格式:LODSBLODSW举例:将100H:20H单元开始10个字节的内容均加5。 CLD ;方向标志清0,SI递增 MOV CX,10 ;置计数初值10 MOV DS,100H ;置DS为100H MOV SI,20H ;置SI为20,作为初始地址指针LL1: LODSB ;取1个字节到AL中,并使SI增1 ADD AL,5 ;加5处理 MOV S I,AL ;处理结果送回 DEC CX ;计数值减1 JNZ LL1 ;如未处
48、理完,转LL1 HLT ;暂停(5)存字符串指令)存字符串指令指令格式:指令格式:STOSBSTOSW举例:举例:将将100H:20H开始的开始的128个单元清个单元清0。CLD;清除方向标志,;清除方向标志,DI递增递增MOVCX,0080H;置计数初值;置计数初值128MOVES,100H;置;置ES为为100HMOVDI,20H;置;置DI为为20H,作为初始地址指针,作为初始地址指针XORAL,AL;AL清清0REPSTOSB;将;将128个字节清个字节清03.4.5 3.4.5 控制转移类指令控制转移类指令5 5种转移指令:种转移指令:无条件跳转指令无条件跳转指令条件跳转指令条件跳转
49、指令循环控制指令循环控制指令子程序调用和返回指令子程序调用和返回指令中断指令中断指令1 1无条件跳转指令无条件跳转指令指令格式:指令格式:JMP 目标地址目标地址举例:举例:JMPSHORTMULTIJMPNEARPRTMULT2JMPCXJMPFARPTRMULT3JMPDWORDPTRSI2条件跳转指令条件跳转指令(1)简单条件跳转指令)简单条件跳转指令指令格式:指令格式:JC目标地址目标地址JNC目标地址目标地址JZ目标地址目标地址JNZ目标地址目标地址JS目标地址目标地址JNS目标地址目标地址JO目标地址目标地址JNO目标地址目标地址JP目标地址目标地址JNP目标地址目标地址JCXZ目
50、标地址目标地址举例:用条件跳转指令实现程序的循环举例:用条件跳转指令实现程序的循环MOVSI,1000HMOVDI,2000HMOVCX,100KKK:MOVSBDECCXJNZKKK(2)带符号数条件跳转指令)带符号数条件跳转指令指令格式:指令格式:JG/JNLE目标地址目标地址JGE/JNL目标地址目标地址JL/JNGE目标地址目标地址JLE/JNG目标地址目标地址举例:设有2个互不相等的带符号字节数存放在以100H单元为首地址的数据缓冲区中,试编程把较大的数送200H单元中。(3)无符号数条件跳转指令)无符号数条件跳转指令指令格式:指令格式:JB/JNAE目标地址目标地址JNB/JAE目
51、标地址目标地址JA/JNBE目标地址目标地址JNA/JBE目标地址目标地址MOVSI,100H;首址;首址100H送送SIMOVAL,SI;取第一个数据;取第一个数据CMPAL,SI+1;与第二个数相比较;与第二个数相比较JGL1;如果比第二个数大,转;如果比第二个数大,转L1MOVAL,SI+1;取第二个数;取第二个数L1:MOVSI,200H;将较大的数送至;将较大的数送至200HMOVSI,AL3循环控制指令循环控制指令指令格式:指令格式:LOOP目标地址目标地址LOOPZLOOPE目标地址目标地址LOOPNZLOOPNE目标地址目标地址举例:举例:编程求1+2+3+4+ +100 MO
52、V CX,100 ;置循环计数初值100 MOV AX,0 ;求和寄存器AX清0, SUM:ADD AX,CX ;把CX计数值累加入AX LOOP SUM ;CX=CX-1, 当CX0时再循环 RET ;返回,结果在AX中4子程序调用和返回指令子程序调用和返回指令指令格式:指令格式:CALL目标地址目标地址RETRET参数参数举例:举例:CALL200HCALLBXCALL500H:600HCALLDWORDPTRBXRET4主程序主程序MOV AL,3AHMOV AL,3AHCALL PROGCALL PROGMOV BX,AXMOV BX,AXCALL PROGCALL PROGMOV D
53、X,AXMOV DX,AX子程序子程序PROG:MOV BL,ALPROG:MOV BL,AL RETRET图图3-24 3-24 调用子程序的过程调用子程序的过程5中断指令中断指令3.4.6处理器控制类指令处理器控制类指令1标志操作指令标志操作指令指令格式:指令格式:STCCLCCMCSTDCLDSTICLI28086CPU与外部事件同步指令与外部事件同步指令指令格式:指令格式:HLTWAITESC外部操作码,源操作数外部操作码,源操作数LOCK指令指令3空操作指令空操作指令指令格式:指令格式:NOP3.580X86的寻址方式及新增的指令的寻址方式及新增的指令3.5.1虚地址方式下的寻址方式
54、虚地址方式下的寻址方式1立即数寻址方式立即数寻址方式例如:例如:MOVEAX,12345678H2寄存器寻址方式寄存器寻址方式例如:例如:MOVEAX,ECX3存储器寻址方式存储器寻址方式偏移量可以由下列公式计算得到:偏移量可以由下列公式计算得到:EA基址十变址基址十变址比例因子十位移量比例因子十位移量基址基址任何通用寄存器都可作为基址寄存器,其内容即为基址。任何通用寄存器都可作为基址寄存器,其内容即为基址。位移量位移量在指令操作码后面的在指令操作码后面的32位、位、16位或位或8位的数。位的数。变址变址除了除了ESP寄存器外,任何通用寄存器都可以作为变址寄存器,其寄存器外,任何通用寄存器都可
55、以作为变址寄存器,其内容即为变址值。内容即为变址值。比例因子比例因子变址寄存器的值可以乘以一个比例因子,比例因子可以是变址寄存器的值可以乘以一个比例因子,比例因子可以是1,2,4或或8。属性属性CSCS段界限值段界限值段基地址段基地址属性属性DSDS段界限值段界限值段基地址段基地址属性属性ESES段界限值段界限值段基地址段基地址属性属性FSFS段界限值段界限值段基地址段基地址属性属性GSGS段界限值段界限值段基地址段基地址属性属性SSSS段界限值段界限值段基地址段基地址描述符寄存器描述符寄存器选择子选择子CSCSDSDSESESFSFSGSGSSSSS基址寄存器基址寄存器变址寄存器变址寄存器比
56、例因子比例因子1 1、2 2、4 4或或8 8位移量位移量存储器存储器目标地址目标地址目标地址目标地址图图3-25 3-25 寻址计算图解寻址计算图解9种存储器寻址方式种存储器寻址方式(1)直接寻址方式)直接寻址方式例如:例如:INCWORDPTR1234567H(2)寄存器间接寻址方式)寄存器间接寻址方式例如:例如:MOVEBX,EAXMOVAX,ECXMOVBL,CX(3)基址寻址方式)基址寻址方式例如:例如:MOVECX,EAX124MOVDX,EBP12345H与与8086CPU不同之处:不同之处:位移量可以是位移量可以是32位,位,任何一个通用任何一个通用寄存器均可寄存器均可(4)变
57、址寻址方式)变址寻址方式例如:例如:MOVEAX,CNTEBPMOVEDX,CNTEAX与与8086CPU不同之处:不同之处:位移量可以是位移量可以是32位,位,任何任何一个通用寄存器均可看成基址寄存器一个通用寄存器均可看成基址寄存器(5)带比例因子的变址寻址方式)带比例因子的变址寻址方式EA=变址寄存器内容变址寄存器内容*比例因子比例因子+位移量位移量其中:比例因子可以为其中:比例因子可以为1、2、4或或8例如:例如:MOVEAX,CNTESI*4MOVEAX,VAREDI*2(6)基址加变址寻址方式)基址加变址寻址方式EA=基址寄存器内容基址寄存器内容+变址寄存器内容变址寄存器内容例如例如
58、1:MOVEAX,EBXEDIMOVEAX,ESPEBP例如例如2:MOVEAX,EDXEBPMOVEAX,EBPEDX (7)带比例因子的变址再加基址寻址方式)带比例因子的变址再加基址寻址方式EA=变址寄存器内容变址寄存器内容*比例因子比例因子+基址基址例如:例如:MOVEBX,EDX*8EBPMOVEAX,EDXEBP*2(8)带位移量的基址加变址寻址方式)带位移量的基址加变址寻址方式例如:例如:ADDEDX,EDIEBP123HEA=基址寄存器内容基址寄存器内容+变址寄存器内容变址寄存器内容+位移量位移量(9)带比例因子的变址加基址加位移量的寻址方式)带比例因子的变址加基址加位移量的寻址
59、方式例如:例如:MOVEAX,ESI*8EBP180HEA=基址寄存器内容基址寄存器内容+(变址寄存器内容(变址寄存器内容比例因子)比例因子)+位移量位移量注意:在实模式下,操作数和地址的默认长度是注意:在实模式下,操作数和地址的默认长度是16位。位。3.5.280286CPU新增指令新增指令新增指令包括两个方面,一是增加了一些新功能指新增指令包括两个方面,一是增加了一些新功能指令,二是对一些原有指令增强了其功能。令,二是对一些原有指令增强了其功能。80286CPU新增指令见表新增指令见表33.34。下面就其中一些常用指令进行。下面就其中一些常用指令进行介绍介绍1数据传送类指令数据传送类指令指
60、令格式:指令格式:PUSH源操作数源操作数PUSHAPOPA举例:举例:PUSH52算术运算类指令算术运算类指令指令格式:指令格式:IMUL寄存器,立即数寄存器,立即数IMUL寄存器寄存器1,寄存器,寄存器2或存储器,立即数或存储器,立即数举例:举例:IMULBX,50IMULDI,BXTABLE,3IMULBX,CX,345H3移位和循环移位指令移位和循环移位指令指令格式:指令格式:SHL目的操作数,目的操作数,COUNTSAL目的操作数,目的操作数,COUNTSHR目的操作数,目的操作数,COUNTSAR目的操作数,目的操作数,COUNTROL目的操作数,目的操作数,COUNTROR目的操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程施工居间合同范本
- 南京市商业空间装修合同2024年度
- 二零二四年文化艺术节演出赞助与宣传合同
- 关于2024年度工资调整与福利方案的劳动合同
- 南通房租合同范本
- 二零二四年度文化娱乐行业版权反贿赂合同3篇
- 基于2024年度预算的广告投放代理合同5篇
- 委托拍卖合同的范本
- 公司转卖合同范本
- 2024二手珠宝首饰买卖合同格式3篇
- 班组长安全培训资料
- Unit1 lesson 1 Me and my body说课稿2024-2025学年冀教版(2024)初中英语七年级上册
- 作文写清楚一件事的起因经过和结果公开课获奖课件省赛课一等奖课件
- 线上主播管理劳动合同(3篇)
- 《中秋节》完整教学课件
- 2024年广东深圳市龙华区招聘非编人员98人管理单位遴选500模拟题附带答案详解
- 质子交换膜燃料电池汽车用氢气中颗粒物的测定-称重法-编制说明
- 2024-2030年青海省旅游行业市场发展分析及发展趋势与投资前景研究报告
- 恢复驾驶资格科目一汽车类考试题库被吊销补考用450题
- 床单洗涤与更换制度
- GB/T 23106-2024家用和类似用途毛发护理器具性能测试方法
评论
0/150
提交评论