微型计算机原理与接口技术张荣标课件第三章_第1页
微型计算机原理与接口技术张荣标课件第三章_第2页
微型计算机原理与接口技术张荣标课件第三章_第3页
微型计算机原理与接口技术张荣标课件第三章_第4页
微型计算机原理与接口技术张荣标课件第三章_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章第三章 80 x8680 x86寻址方式与指令系统寻址方式与指令系统3.1 3.1 数据类型及其存储规则数据类型及其存储规则 3.1.13.1.1基本数据类型及存储基本数据类型及存储 一个存储单元一个存储单元一个字节占用内存的一个地址。一个字节占用内存的一个地址。基本数据类型:字、双字、四字、双四字基本数据类型:字、双字、四字、双四字字字两个相邻字节组成的两个相邻字节组成的1616位二进制;位二进制;双字双字4 4个相邻字节组成的个相邻字节组成的3232位二进制数;位二进制数;四字四字8 8个相邻字节组成的个相邻字节组成的6464位二进制数;位二进制数;双四字双四字1616个相邻字节组成

2、的个相邻字节组成的128128位二进制数。位二进制数。高高 低低高高 字字 低低 字字高高 双双 字字低低 双双 字字字节字节字字双字双字四字四字高高 四四 字字低低 四四 字字双四双四字字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 基本数据类型的结构形式基本数据类型的结构形式45H12HA2HABH3AH8BH92H72H23HC3H1AH7AH6AH2BH48H9CHN15N1

3、4N13N12N11N10N9N8N7N6N5N4N3N2N1N单元地址单元地址图图3.2 3.2 基本数据类型存储规律基本数据类型存储规律 3.1.2 3.1.2 数字数据类型数字数据类型数据类型包含:无符号整数、带符号整数和浮点数。数据类型包含:无符号整数、带符号整数和浮点数。1 1无符号整数(范围:无符号整数(范围:0 02 2n n-1-1)图图3.33.3(a a)无符号整数类型)无符号整数类型7 07 015 015 031 031 063 063 0字节无符号整数字节无符号整数字无符号整数字无符号整数四字无符号整数四字无符号整数双字无符号整数双字无符号整数2 2带符号整数(范围:

4、带符号整数(范围:2 2n-1 n-1 +2+2n-1n-1-1-1) 带符号整数是用带符号整数是用2 2的补码表示的二进制值。规定操作数的最的补码表示的二进制值。规定操作数的最高位为符号位。高位为符号位。图图3.33.3(b b)带符号整数类型)带符号整数类型7 07 015 015 031 031 063 063 0字节符号整数字节符号整数字符号整数字符号整数四字符号整数四字符号整数双字符号整数双字符号整数6 6141430306262(b b)3 3浮点数浮点数 浮点数据类型可分为三种:单精度浮点、双精度浮点和双浮点数据类型可分为三种:单精度浮点、双精度浮点和双扩展的精度浮点。扩展的精度

5、浮点。 图图3.33.3(c c)是浮点数类型)是浮点数类型31 031 0双精度浮点数双精度浮点数单精度浮点数单精度浮点数303063 063 0626263 063 0626279 6479 647878双扩展精度浮点双扩展精度浮点数数(c c)3.1.33.1.3指针数据类型指针数据类型在实方式下有两种类型的指针:近指针(在实方式下有两种类型的指针:近指针(1616位)和远指针(位)和远指针(3232位)位)偏偏 移移NearNear指针指针31 031 0偏偏 移移段选择子段选择子FarFar指针或逻辑地址指针或逻辑地址31 031 047 3247 32(a a)(b b)图图3.4

6、 3.4 指针数据类型(虚拟方式)指针数据类型(虚拟方式)3.1.43.1.4字符串、位及位串数据类型字符串、位及位串数据类型字符串包括字节串、字串和双字串。字符串包括字节串、字串和双字串。它们分别是字节、字和双字的相邻序列。它们分别是字节、字和双字的相邻序列。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.5 3.5 字节、字、双字字符串数据类型字节、字、双字字符串数据类

7、型3.2 3.2 计算机指令格式计算机指令格式 指令包括两部分:指令操作码部分和地址码部分。指令包括两部分:指令操作码部分和地址码部分。指令操作码部分是给出该指令应完成何种操作。指令操作码部分是给出该指令应完成何种操作。地址码部分是用来描述该指令的操作对象。地址码部分是用来描述该指令的操作对象。指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令。指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令。零地址指令:只有操作码部分,而没有操作数的指令;零地址指令:只有操作码部分,而没有操作数的指令;一地址指令:只有目的操作数的单操作数指令;一地址指令:只有目的操作数的单操作数指

8、令;二地址指令:有两个地址指出两个操作数的地址;二地址指令:有两个地址指出两个操作数的地址;三地址指令优点:操作结束后,原两个操作数的内容均未被破坏;三地址指令优点:操作结束后,原两个操作数的内容均未被破坏; 缺点:增加一个地址后,使得指令码加长,增加了存储空间,取缺点:增加一个地址后,使得指令码加长,增加了存储空间,取 指时间变长。指时间变长。3.2.1 3.2.1 指令的助记符格式指令的助记符格式助记符格式可用以下通式表示:助记符格式可用以下通式表示:L L:op D1, D2, D3op D1, D2, D3其中:其中:L L是标号,在标识符后面跟有冒号(:)是标号,在标识符后面跟有冒号

9、(:)opop是助记符,具有相同功能的指令操作码的保留名是助记符,具有相同功能的指令操作码的保留名例如:例如: MOV MOV AXAX, BXBX操作码的助记符目的操作数源操作数操作码的助记符目的操作数源操作数3.2.2 80 x863.2.2 80 x86指令编码格式指令编码格式指令编码格式包含操作码和操作数两部分。指令编码格式包含操作码和操作数两部分。操作码表示计算机执行什么操作。操作码表示计算机执行什么操作。操作数指明参与操作的数的本身,或规定了操作数的地址。操作数指明参与操作的数的本身,或规定了操作数的地址。图图 3.6 8086 CPU3.6 8086 CPU指令编码的一般形式指令

10、编码的一般形式1 1操作码字节操作码字节 它是指令的第一字节,规定指令的操作类型,是它是指令的第一字节,规定指令的操作类型,是指令的必选字节,字节内容如下:指令的必选字节,字节内容如下: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 寻

11、址方式字节。寻址方式字节。它是指令的第二字节,规定操作数的寻址方它是指令的第二字节,规定操作数的寻址方式。是指令的可选字节,字节内容如下:式。是指令的可选字节,字节内容如下: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

12、D2 2、D D1 1、D D0 0位能表示位能表示8 8种不种不同的寄存器存储器。同的寄存器存储器。MODMODREGREGR/MR/M表表3.1 REG3.1 REG值与寄存器之间的对应关系值与寄存器之间的对应关系表表3.2 REG3.2 REG值与寄存器之间的对应关系值与寄存器之间的对应关系MODMOD方式方式0000存储器编址,没有位移量存储器编址,没有位移量 0101存储器编址,有存储器编址,有8 8位移量位移量 1010存储器编址,有存储器编址,有1616位移量位移量 1111寄存器编址,没有位移量寄存器编址,没有位移量 REGW1W0(字节操作)(字节操作)000AXAL001C

13、XCL010DXDL011BXBL100SPAH101BPCH110SIDH111DIBH表表3.3 mod3.3 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

14、+DISS:BP+DIDS:SIDS:SIDS:DIDS:DIDS:disp16DS: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:B

15、X+SI+disp16DS:BX+DI +disp16DS:BX+DI +disp16SS: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 偏移量字节偏移量字节 是指

16、令的第三、四字节,是指令的可选字节,是指令的第三、四字节,是指令的可选字节, 给出了存储器操作数的偏移量。给出了存储器操作数的偏移量。4 4 立即数字节立即数字节 是指令的可选字节,给出了指令的立即数。是指令的可选字节,给出了指令的立即数。opcodeopcodeopcodeopcodemodmod字节字节opcodeopcodemodmod字节字节opcodeopcodemodmod字节字节Data/dispData/disp( (低低) ) Data/dispData/disp( (高高) )opcodeopcodemodmod字节字节dispdisp( (低低) )dispdisp( (

17、高高) )Data/dispData/dispDataDataopcodeopcodemodmod字节字节dispdisp( (低低) )dispdisp( (高高) )Data(Data(低低) )Data(Data(高高) )图图3.7 80863.7 8086不同字长的指令格式类型不同字长的指令格式类型3.3 8086CPU3.3 8086CPU的寻址方式的寻址方式 寻址方式寻址方式寻找指令或操作数存放地址的方法。寻找指令或操作数存放地址的方法。 两种寻址方式:一种是用来对操作数进行寻址;另一种是两种寻址方式:一种是用来对操作数进行寻址;另一种是 用来对转移地址或调用地址进行寻址,即用来

18、对转移地址或调用地址进行寻址,即 对指令地址进行寻址。对指令地址进行寻址。 3.3.1 3.3.1 操作数的寻址方式操作数的寻址方式指令的操作数存放位置有指令的操作数存放位置有4 4种:种:l l)立即寻址)立即寻址操作数直接包含在指令字节中。操作数直接包含在指令字节中。该操作数就称为立即数。该操作数就称为立即数。2 2)寄存器寻址)寄存器寻址操作数存放在操作数存放在CPUCPU的某个内部寄存器中。的某个内部寄存器中。3 3)存储器寻址)存储器寻址操作数在内存的数据区中。操作数在内存的数据区中。4 4)操作数存放在)操作数存放在I/OI/O端口中端口中1 1、 立即寻址立即寻址立即数寻址特点:

19、指令执行速度快。立即数寻址特点:指令执行速度快。立即数只能是整数,且只能作为源操作数。立即数只能是整数,且只能作为源操作数。图图3.83.8立即数寻址过程立即数寻址过程代码段代码段12123434MOV AX, 3412HMOV AX, 3412H的指令代码的指令代码3434AXAXAHAHALAL操作码操作码12122 2、 寄存器寻址方式寄存器寻址方式寄存器寻址方式的优点:不但可以减少指令码的长度,而且由寄存器寻址方式的优点:不但可以减少指令码的长度,而且由 于操作数已存于寄存器中,执行速度于操作数已存于寄存器中,执行速度 较快。较快。寄存器既能作为源操作数,又能作为目的操作数。寄存器既能

20、作为源操作数,又能作为目的操作数。例如:例如: MOV AXMOV AX,CXCX 该指令将该指令将CXCX(源操作数)的内容传送到(源操作数)的内容传送到AXAX寄存器(目的操寄存器(目的操作数)中,其中源操作数作数)中,其中源操作数CXCX,目的操作数,目的操作数AXAX都是寄存器寻址都是寄存器寻址方式。方式。 3 3、 存储器寻址存储器寻址指令给出了操作数在数据区中的地址信息。指令给出了操作数在数据区中的地址信息。五种不同的存储器寻址方式:五种不同的存储器寻址方式:1 1)直接寻址方式)直接寻址方式例如:例如: MOV AXMOV AX,7834H7834H 该指令将有效地址该指令将有效

21、地址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.93.9直接寻址方式寻址过程直接寻址方式寻

22、址过程2 2)寄存器间接寻址)寄存器间接寻址操作数存放在存储单元中。操作数存放在存储单元中。注意两点:一是寄存器中的内容是操作数的有效地址,而不是注意两点:一是寄存器中的内容是操作数的有效地址,而不是 操作数本身;操作数本身; 二是只能用二是只能用CPUCPU中的基址寄存器中的基址寄存器BXBX、BPBP或变址寄存器或变址寄存器 DIDI、SISI来间接寻址来间接寻址。如果指令前面没有用前缀指令指明操作数在哪一段,则通常如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认段寄存器为默认段寄存器为DSDS。即:。即: 物理地址物理地址=DS=DS10H+EA=DS10H+EA=DS10H+

23、10H+ 或或 物理地址物理地址=SS=SS10H+BP10H+BP例如:例如: MOV AXMOV AX,BX BX 代码段代码段操作码操作码数据段数据段121234341 12 23 34 4DSDS2 24 46 68 8BXBX1234012340+2468+2468147A8147A834 1234 12AXAXMOV AX,BXMOV AX,BX指指令代码令代码图图3.10 3.10 寄存器间接寻址示意图寄存器间接寻址示意图3 3)寄存器相对寻址)寄存器相对寻址操作数存放在存储单元中操作数存放在存储单元中物理地址物理地址=DS=DS10H+EA= DS10H+EA= DS10H+

24、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指令代码指令代码+6824+6824图

25、图3.11 3.11 寄存器相对寻址操作过程寄存器相对寻址操作过程4 4)基址加变址寻址方式)基址加变址寻址方式操作数存放在存储单元中操作数存放在存储单元中 物理地址物理地址= DS= DS10H+EA=DS10H+EA=DS10H+ 10H+ 或或 物理地址物理地址= SS= SS10H+ 10H+ 例如:例如: ADD AXADD AX,BX+DI BX+DI +1026+1026003400341234012340代码段代码段操作码操作码数据段数据段787856561 12 23 34 4DSDS1 10 02 26 6SISI1339A1339A56 7856 78AXAXMOV AX

26、, BXMOV AX, BXSISI指令代码指令代码0 00 03 34 4BXBX图图3.12 3.12 基址加变址寻址方式操作过程基址加变址寻址方式操作过程5 5)相对的基址和变址寻址方式)相对的基址和变址寻址方式操作数存放在存储单元中操作数存放在存储单元中物理地址物理地址=DS=DS10H+EA=DS10H+EA=DS10H+10H+或或 物理地址物理地址=SS=SS10H + 10H + 例如:例如:MOV AHMOV AH,BXBXSISI2468H2468HMOV AH,BXMOV AH,BXSISI2468H2468H指令代码指令代码01100110010001002000020

27、000代码段代码段操作码操作码6868数据段数据段262623232 20 00 00 0DSDS0 01 11 10 0SISI22678226782626AHAH0 01 10 00 0BXBX+2468+24682424图图3.13 3.13 相对的基址和变址寻址方式操作过程过程相对的基址和变址寻址方式操作过程过程4 4、 I IO O端口寻址端口寻址操作数在操作数在I IO O端口中。端口中。两种编址方式:与存储器统一编址方式两种编址方式:与存储器统一编址方式独立的独立的I IO O空间编址方式空间编址方式与存储器统一编址方式,上述五种存储器寻址方式均可采用。与存储器统一编址方式,上述

28、五种存储器寻址方式均可采用。独立的独立的I IO O空间编址方式则对空间编址方式则对I IO O端口有两种寻址方式:端口有两种寻址方式:l l)直接端口寻址方式直接端口寻址方式端口地址的寻址范围是端口地址的寻址范围是00FFH00FFH,端口地址直接由指令给出。,端口地址直接由指令给出。2 2) 间接端口寻址方式间接端口寻址方式端口地址的寻址范围是端口地址的寻址范围是00FFFFH00FFFFH,端口地址由,端口地址由DXDX寄存器给寄存器给出。出。 3.3.2 3.3.2 指令地址的寻址方式指令地址的寻址方式指令地址的寻址方式以下指令地址的寻址方式以下4 4种:种:1 1 段内直接寻址方式段

29、内直接寻址方式转移的指令地址是由当前的转移的指令地址是由当前的IPIP内容和指令中规定的内容和指令中规定的8 8位或位或1616位位偏移量之和给出。偏移量之和给出。+2101+2101012101211234012340代码段代码段操作码操作码操作码操作码010121211 12 23 34 4CSCS1456214562段内直接转移段内直接转移指令代码指令代码0 01 12 21 1IPIP目标指令代码目标指令代码图图3.143.14段内直接寻址段内直接寻址方式方式过程过程代码段代码段操作码操作码操作码操作码数据寻数据寻址方式址方式CSCS段内间接转段内间接转移指令代码移指令代码根据数据寻址

30、根据数据寻址方式计算方式计算EAEAIPIP目标指目标指令代码令代码图图3.153.15段内间接寻址段内间接寻址方式方式过程过程3 3 段间直接寻址方式段间直接寻址方式 转移的指令地址是由指令码字节直接给出。转移的指令地址是由指令码字节直接给出。 34123412+78560+78560代码段代码段操作码操作码操作码操作码121234347 8 5 67 8 5 6CSCS7B9727B972段间直接段间直接转移代码转移代码3 4 1 23 4 1 2IPIP目标指目标指令代码令代码56567878图图3.163.16段间段间直接寻址过程直接寻址过程4 4 段间间接寻址方式段间间接寻址方式 转

31、移的指令地址由一个双字存储单元的内容给出转移的指令地址由一个双字存储单元的内容给出。图图3.173.17段间间接寻址段间间接寻址方式方式过程过程代码段代码段操作码操作码操作码操作码数据寻数据寻址方式址方式段间间接转段间间接转移指令代码移指令代码目标指目标指令代码令代码DSDSCSCSIPIP数据段数据段1212343456567878根据数据寻址根据数据寻址方式计算方式计算EAEA3.4 80863.4 8086指令系统指令系统指令系统按功能可分为指令系统按功能可分为6 6类:类: 数据传送类指令;数据传送类指令; 算术运算类指令;算术运算类指令; 逻辑运算与移位类指令;逻辑运算与移位类指令;

32、 字符串指令;字符串指令; 控制转移类指令;控制转移类指令; 处理器控制类指令。处理器控制类指令。3.4.1 3.4.1 数据传送类指令数据传送类指令分为分为4 4种:种: 通用数据传送指令通用数据传送指令 累加器专用传送指令累加器专用传送指令 地址传送指令地址传送指令 标志传送指令。标志传送指令。1 1通用数据传送指令通用数据传送指令1 1)最基本的传送指令)最基本的传送指令格式:格式: MOV MOV 目的操作数,源操作数目的操作数,源操作数举例:举例:MOV ALMOV AL,BL BL MOV ESMOV ES,DXDXMOV ALMOV AL,BXBX MOV MOV SISI,AX

33、 AX MOV CXMOV CX,1000 1000 MOV BLMOV BL,4040MOV DXMOV DX,50405040MOV WORD PTRMOV WORD PTRSISI, 1234H 1234H MOV WORD PTR BPMOV WORD PTR BP, 2345H 2345H 2 2)堆栈操作指令)堆栈操作指令 堆栈是一种数据结构,是在内存中开辟了一个比较特殊的堆栈是一种数据结构,是在内存中开辟了一个比较特殊的存储区,这个区域中数据的存取采用存储区,这个区域中数据的存取采用“后进先出后进先出”的原则。的原则。10001000SSSS00180018SPSP6060505

34、0404030302020101010018100181001A1001A栈顶栈顶栈底栈底10001000SSSS00160016SPSP606050504040303020201010ABABCDCD10018100181001A1001A栈顶栈顶栈底栈底10001000SSSS001A001ASPSP40403030202010101001A1001A栈顶栈顶栈底栈底1001610016(a) (b) (c)(a) (b) (c)图图3.183.1880868086系统椎栈及其操作系统椎栈及其操作( (a)a)堆栈原始状态堆栈原始状态 ( (b)b)执行执行push AX (c)push

35、AX (c)执行执行POP AXPOP AX ( (AX)=CDABH AX)=CDABH POP BX POP BX后的状态后的状态堆栈段堆栈段-8086CPU-8086CPU在存储器分段管理时,划分了一个专门的在存储器分段管理时,划分了一个专门的 堆栈区。堆栈区。格式:格式: PUSH PUSH 源操作数源操作数 POP POP 目的操作数目的操作数举例:举例: PUSH BX PUSH BX PUSH DSPUSH DS PUSH CS PUSH CS PUSH BXPUSH BXDI DI POP BXPOP BX POP ESPOP ES POP DIPOP DI 3 3)交换指令)

36、交换指令实现两个操作数之间进行直接交换,方便程序的编写。实现两个操作数之间进行直接交换,方便程序的编写。格式:格式: XCHG XCHG 目的操作数,源操作数目的操作数,源操作数举例:举例:XCHG ALXCHG AL,DLDLXCHG BXXCHG BX,CXCXXCHG XCHG 1234H1234H,CXCX2 2累加器专用传送指令累加器专用传送指令累加器是累加器是8086CPU8086CPU进行数据传输的核心。进行数据传输的核心。有两类指令:有两类指令:输入输出指令输入输出指令换码指令换码指令1 1)输入输出指令)输入输出指令工业控制中常用的指令工业控制中常用的指令格式:格式: IN

37、ACIN AC,源操作数,源操作数 OUT OUT 目的操作数,目的操作数,ACAC举例:举例: IN ALIN AL,50H50H IN AX IN AX,70H 70H OUT 44H OUT 44H,ALAL OUT 80H OUT 80H,AX AX 2 2)换码指令)换码指令该指令用来将一个代码值转换成相应的另一种代码值,该指令用来将一个代码值转换成相应的另一种代码值,格式:格式: XLATXLAT代码段代码段D7D77979数据段数据段404078780 03 30 00 0BXBX07070300030080307803070 70 7ALALXLATXLAT指令代码指令代码+8

38、0000+800008 80 00 00 0DSDS803008030080301803018030780307图图3.193.19XLATXLAT指令执行过程指令执行过程举例:举例:若要将十进制数若要将十进制数0909转换成共阳极转换成共阳极LEDLED显示的字形代码,则列显示的字形代码,则列表如表表如表3.43.4所示。所示。表表3.4 3.4 十进制数十进制数0909转换成转换成LEDLED显示的字形代码显示的字形代码十进制数(十进制数(BCDBCD码)码)字形代码字形代码0 040H40H1 179H79H2 224H24H3 330H30H4 419H19H5 512H12H6 60

39、2H02H7 778H78H8 800H00H9 918H18H 3 3地址传送指令地址传送指令它包括它包括3 3条指令:条指令: 取有效地址指令取有效地址指令LEALEA; 将地址指针装入将地址指针装入DSDS指令指令LDSLDS; 将地址指针装入将地址指针装入ESES指令指令LESLES。格式:格式: LEA LEA 寄存器,源操作数寄存器,源操作数 LDS LDS 寄存器,源操作数寄存器,源操作数LES LES 寄存器,源操作数寄存器,源操作数举例:举例: LEA AXLEA AX, DI+10 DI+10 LEA AX LEA AX,2728H2728H LDS SI LDS SI,2

40、130H2130H LES DI LES DI,DI+10DI+10 代码段代码段C5C57878数据段数据段5656000020201 10 00 00 0DSDS初值初值+2130+213012130121307 8 5 67 8 5 6SISILDS SI, 2130HLDS SI, 2130H指令代码指令代码363621213030 1000010000图图3.203.20LDSLDS指令执行过程指令执行过程2 20 00 00 0DSDS终值终值4 4标志传送指令标志传送指令标志传送指令包括标志传送指令包括4 4条指令:条指令: 标志读取指令标志读取指令LAHFLAHF 标志设置指令

41、标志设置指令SAHFSAHF 标志寄存器压入堆栈指令标志寄存器压入堆栈指令PUSHFPUSHF 标志寄存器从堆栈弹出指令标志寄存器从堆栈弹出指令POPFPOPF格式:格式:LAHFLAHF SAHF SAHF PUSHF PUSHF POPF POPF举例举例:PUSHFPUSHFPOP BXPOP BXPUSH CXPUSH CXPOPFPOPF OF DF IF TF SF ZF AF 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 0FLAGSFLAGSLAHFLA

42、HFSAHFSAHFAHAH图图3.21 LAHF3.21 LAHF和和SAHFSAHF指令传送操作指令传送操作3.4.2 3.4.2 算术运算类指令算术运算类指令1 1加法指令加法指令格式:格式:ADD ADD 目的操作数,源操作数目的操作数,源操作数 ADC ADC 目的操作数,源操作数目的操作数,源操作数 INC INC 目的操作数目的操作数举例:举例: ADD ALADD AL,50H 50H ADD DIADD DI,SI SI ADD ADD BXBXDIDI,AX AX ADD AXADD AX,BXBX2000H2000H ADC AXADC AX,SI SI ADC DXAD

43、C DX,SI SI ADC BXADC BX,3000H 3000H INC ALINC AL INC CXINC CX INC BYTE PTRINC BYTE PTRBXBXDIDI500500 2 2减法指令减法指令格式:格式:SUB SUB 目的操作数,源操作数目的操作数,源操作数 SBB SBB 目的操作数,源操作数目的操作数,源操作数 DEC DEC 目的操作数目的操作数 NEG NEG 目的操作数目的操作数 CMP CMP 目的操作数,源操作数目的操作数,源操作数举例:举例:SUB BXSUB BX,CX CX SUB SUB BPBP2 2,CL CL SUB ALSUB A

44、L,20 20 SUB SISUB SI,5010H 5010H SUB WORD PTRSUB WORD PTRDIDI,1000H1000HSBB AXSBB AX,2030H 2030H DEC AXDEC AXDEC BLDEC BLDEC BYTEDEC BYTEPTR DIPTR DI2 2 3 3乘法指令乘法指令格式:格式:MUL MUL 源操作数源操作数 IMUL IMUL 源操作数源操作数ALAL操作数操作数乘积乘积 AHAH ALALAXAX操作数操作数乘积乘积DX DX AXAX(a) (b)(a) (b)图图3.223.22乘法运算操作数及其运算结果间关系乘法运算操作数

45、及其运算结果间关系(a)(a)字节操作数字节操作数 (b)(b)字操作数字操作数举例:举例:MUL BL MUL BL MUL CXMUL CXMUL BYTE PTR DIMUL BYTE PTR DIMUL WORD PTRSIMUL WORD PTRSIIMUL CLIMUL CLIMUL BX IMUL BX IMUL BYTE PTR BXIMUL BYTE PTR BXIMUL WORD PTRDI IMUL WORD PTRDI 4 4除法指令除法指令格式:格式:DIV DIV 源操作数源操作数 IDIV IDIV 源操作数源操作数 CBWCBW CBDCBD举例:举例:DIV

46、CLDIV CLDIV WORD PTR DIDIV WORD PTR DIIDIV BXIDIV BXIDIV BYTE PTR DIIDIV BYTE PTR DIMOV MOV ALAL,72H72HALALAHAH商商余数余数操作数操作数AXAX8 8位位1616位位AXAXDXDX商商余数余数操作数操作数DX AXDX AX1616位位3232位位(a) (b)(a) (b)图图3.233.23除法运算操作数及其运算结果存放关系除法运算操作数及其运算结果存放关系(a)(a)字节操作数字节操作数 (b)(b)字操作数字操作数CBWCBWMOV AXMOV AX,8600H8600H C

47、WDCWD5 5BCDBCD码运算的调整指令码运算的调整指令分为两类:组合式分为两类:组合式BCDBCD码和分离式码和分离式BCDBCD码码格式:格式: DAA DAA AAA AAA DAS DAS AAS AAS AAM AAM AAD AAD举例:举例: ADC ALADC AL,SISI DAADAA ADD ALADD AL,DIDI AAAAAA SUB ALSUB AL,BXBX DASDAS MUL DLMUL DL AAMAAM AADAAD DIV BL DIV BL 3.4.3 3.4.3 逻辑运算和移位指令逻辑运算和移位指令两组处理指令:逻辑运算指令和移位指令。两组处理

48、指令:逻辑运算指令和移位指令。1 1逻辑运算指令逻辑运算指令指令格式:指令格式:AND AND 目的操作数,源操作数目的操作数,源操作数OR OR 目的操作数,源操作数目的操作数,源操作数NOT NOT 目的操作数目的操作数XOR XOR 目的操作数,源操作数目的操作数,源操作数TEST TEST 目的操作数,源操作数目的操作数,源操作数举例:举例: AND ALAND AL,0FH0FH AND DX AND DX,BXBXSISI OR AL OR AL,30H30H OR AX OR AX,00F0H00F0H XOR AL XOR AL,OFHOFH XOR AX XOR AX,AXA

49、X TEST AX TEST AX,8000H8000H TEST AL TEST AL,0101 NOT AL NOT AL NOT WORD PTR 1000H NOT WORD PTR 1000H ; 2 2移位指令移位指令分为两大类:非循环移位指令和循环移位指令。分为两大类:非循环移位指令和循环移位指令。1 1)非循环移位指令)非循环移位指令指令格式:指令格式:SAL SAL 目的操作数,计数值目的操作数,计数值 SHL SHL 目的操作数,计数值目的操作数,计数值 SAR SAR 目的操作数,计数值目的操作数,计数值 SHR SHR 目的操作数,计数值目的操作数,计数值举例:举例:

50、SAL DXSAL DX,l l SHL AL SHL AL,CLCL SAR BYTE PTR BX SAR BYTE PTR BX,1 1 SHR WORD PTR BX SHR WORD PTR BX,1 1 CFCF0 0MSBMSBLSBLSBCFCFCFCFMSBMSBLSBLSBMSBMSBLSBLSB0 0(a)(a)(b)(b)(c)(c)图图3.24 3.24 非循环移位指令操作示意图非循环移位指令操作示意图(a)SHL/SAL (a)SHL/SAL 算术左移算术左移 (b)SHR (b)SHR 逻辑右移逻辑右移 (c) SAR(c) SAR算术右移算术右移2 2)循环移位

51、指令)循环移位指令指令格式:指令格式:ROL ROL 目的操作数,计数值目的操作数,计数值 ROR ROR 目的操作数,计数值目的操作数,计数值 RCL RCL 目的操作数,计数值目的操作数,计数值 RCR RCR 目的操作数,计数值目的操作数,计数值举例:举例: ROL DXROL DX,l l ROR AL ROR AL,CLCL RCL BYTE PTR BX RCL BYTE PTR BX,1 1 RCR WORD PTR BX RCR WORD PTR BX,1 1 图图3.25 3.25 循环移位循环移位移位指令操作示意图移位指令操作示意图(a)ROL(a)ROL不带进位循环左移不

52、带进位循环左移 (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 串操作指令串操作指令串操作指令串操作指令-用一条指令实现对一串字符或数据的操作。用一条指令实现对一串字符或数据的操作。串操作指令的特点:串操作指令的特点:通过加重复前缀来实现串操作,规定通过加重复前缀来实现串操作,规定C

53、XCX寄存器存放要处理的字寄存器存放要处理的字符串的元素个数,即:字节数或字数。符串的元素个数,即:字节数或字数。可以对字节串进行操作,也可以对字串进行操作。可以对字节串进行操作,也可以对字串进行操作。串操作时,串操作时,SISI和和DIDI的增减规定由方向标志的增减规定由方向标志DFDF设定,当设定,当DF=1DF=1时,时,SISI和和DIDI作自动减量修改,当作自动减量修改,当DF=0DF=0时,时,SISI和和DIDI作自动增量修改,作自动增量修改,对字节串操作增减量为对字节串操作增减量为1 1,对字串操作增减量为,对字串操作增减量为2 2。重复的字符串处理过程可以被中断。重复的字符串

54、处理过程可以被中断。5 5条串操作指令:串传送指令条串操作指令:串传送指令MOVSMOVS、串比较指令、串比较指令CMPSCMPS、串检索指、串检索指 令令SCASSCAS、LODSLODS串装入指令和串存储指令串装入指令和串存储指令STOSSTOS。3 3条重复前缀:重复前缀条重复前缀:重复前缀REPREP、相等时重复、相等时重复REPEREPE和不相和不相等等 时重复时重复REPNEREPNE。1 1指令的重复前缀指令的重复前缀格式:格式: REP REP 串操作指令串操作指令 REPE REPE 串操作指令串操作指令 或或 REPZ REPZ 串操作指令串操作指令 REPNE REPNE

55、 串操作指令串操作指令 或或 REPNZ REPNZ 串操作指令串操作指令2 2字符串指令字符串指令1 1)字符串传送指令)字符串传送指令指令格式:指令格式:MOVSBMOVSB MOVSW MOVSW举例:举例:MOV DSMOV DS,2000H2000HMOV ESMOV ES,3000H3000HMOV SIMOV SI,1000H1000HMOV DIMOV DI,2000H2000HMOV CXMOV CX,200200CLDCLDREP MOVSB REP MOVSB 2 2)字符串比较指令)字符串比较指令指令格式:指令格式:CMPSBCMPSB CMPSW CMPSW举例:举例

56、: 编程比较从逻辑地址编程比较从逻辑地址2000H2000H:100H100H开始的开始的1010个字节与逻辑地个字节与逻辑地址址4000H4000H:200H200H开始的开始的1010个字节是否对应相等,相等则转个字节是否对应相等,相等则转DONEDONE。MOV DSMOV DS,2000H2000HMOV ESMOV ES,4000H4000HMOV DIMOV DI, 200H200HMOV SIMOV SI, 100H100HCLDCLDMOV CXMOV CX,1010REPZ CMPSB REPZ CMPSB JZ DONEJZ DONERET RET DONE DONE 3

57、3)字符串检索指令)字符串检索指令指令格式:指令格式:SCASWSCASW SCASBSCASB功能:功能:SCASB /SCASWSCASB /SCASW在字符串中查找一个与已知数值相在字符串中查找一个与已知数值相 同或不同的元素。同或不同的元素。举例:举例: 从逻辑地址从逻辑地址9000H9000H:100H100H开始的开始的1010个单元中如果有一个单个单元中如果有一个单元的内容为元的内容为2CH2CH,则,则BXBX加加1 1。MOV ESMOV ES,9000H9000HMOV DIMOV DI,100H100HCLDCLDMOV CXMOV CX,1010MOV ALMOV AL

58、,2CH2CHREPNZ SCASBREPNZ SCASBJNZ AAAJNZ AAAINC BXINC BXAAAAAA: 4 4) 取字符串指令取字符串指令指令格式:指令格式:LODSBLODSB LODSW LODSW举例:举例: 将将2000H2000H:0700H0700H单元开始的单元开始的5 5个字节的内容逐一取出,放个字节的内容逐一取出,放在累加器中进行处理,处理以后再送到在累加器中进行处理,处理以后再送到2000H2000H:0700H0700H的内存的内存区域。区域。 CLDCLD MOV DS MOV DS,2000H2000H MOV SI MOV SI,0700H07

59、00H MOV DI MOV DI,0700H0700H MOV CX MOV CX,5 5L1L1: LODSB LODSB PUSH CXPUSH CX POP CX POP CX DEC CX DEC CX MOV DI MOV DI,ALAL JNZ L1 JNZ L1 5 5)存字符串指令)存字符串指令指令格式:指令格式:STOSBSTOSB STOSWSTOSW举例:举例:将将2000H2000H:40H40H开始的开始的256256个单元清个单元清0 0。CLDCLDMOV ESMOV ES,2000H2000HLEA DILEA DI,040H040H MOV CX MOV C

60、X,0080H0080H XOR AX XOR AX,AXAX REP STOSW REP STOSW 3.4.5 3.4.5 控制转移类指令控制转移类指令5 5种转移指令:种转移指令:无条件跳转指令无条件跳转指令条件跳转指令条件跳转指令循环控制指令循环控制指令子程序调用和返回指令子程序调用和返回指令中断指令中断指令 1 1无条件跳转指令无条件跳转指令指令格式:指令格式:JMP JMP 目标地址目标地址举例:举例: JMP SHORT MULTIJMP SHORT MULTI JMP NEAR PRT MULT2 JMP NEAR PRT MULT2 JMP CXJMP CX JMP FAR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论