微处理器原理及应用---第三章 寻址方式与指令系统_第1页
微处理器原理及应用---第三章 寻址方式与指令系统_第2页
微处理器原理及应用---第三章 寻址方式与指令系统_第3页
微处理器原理及应用---第三章 寻址方式与指令系统_第4页
微处理器原理及应用---第三章 寻址方式与指令系统_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

第三章寻址方式与指令系统3.1数据类型及其存储规则3.1.1基本数据类型及存储一个存储单元一个字节占用内存的一个地址。基本数据类型:字、双字、四字、双四字字两个相邻字节组成的16位二进制;双字4个相邻字节组成的32位二进制数;四字8个相邻字节组成的64位二进制数;双四字16个相邻字节组成的128位二进制数。,图3.2基本数据类型存储规律,3.1.2数字数据类型数据类型包含:无符号整数、带符号整数和浮点数。1无符号整数(范围:02n-1)2带符号整数(范围:2n-1+2n-1-1)带符号整数是用2的补码表示的二进制值。规定操作数的最高位为符号位。3浮点数浮点数据类型可分为三种:单精度浮点、双精度浮点和双扩展的精度浮点。,3.1.3指针数据类型在实方式下有两种类型的指针:近指针(16位)和远指针(32位),3.1.4字符串、位及位串数据类型字符串包括字节串、字串和双字串。它们分别是字节、字和双字的相邻序列。,图3.4字节、字、双字字符串数据类型,3.2计算机指令格式,指令包括两部分:指令操作码部分和地址码部分。指令操作码部分是给出该指令应完成何种操作。地址码部分是用来描述该指令的操作对象。指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令。零地址指令:只有操作码部分,而没有操作数的指令;一地址指令:只有目的操作数的单操作数指令;二地址指令:有两个地址指出两个操作数的地址;三地址指令优点:操作结束后,原两个操作数的内容均未被破坏;缺点:增加一个地址后,使得指令码加长,增加了存储空间,取指时间变长。,3.2.1指令的助记符格式助记符格式可用以下通式表示:L:opD1,D2,D3其中:L是标号,在标识符后面跟有冒号(:)op是助记符,具有相同功能的指令操作码的保留名例如:,3.2.280 x86指令编码格式指令编码格式包含操作码和操作数两部分。操作码表示计算机执行什么操作。操作数指明参与操作的数的本身,或规定了操作数的地址。图3.58086CPU指令编码的一般形式1)操作码字节它是指令的第一字节,规定指令的操作类型,是指令的必选字节,字节内容如下:D7D6D5D4D3D2D1D0,OP:表示指令操作码,D:表示指令中数据传送的方向。W:表示操作数类型。2)寻址方式字节。它是指令的第二字节,规定操作数的寻址方式。是指令的可选字节,字节内容如下:D7D6D5D4D3D2D1D0MOD:表示方式域,D7、D6位能表示4种不同的方式。REG:表示寄存器域,D5、D4、D3位能表示8种不同的寄存器。R/M:表示寄存器存储器域,D2、D1、D0位能表示8种不同的寄存器存储器。,表3-1mod与rm域所组合的寻址方式,3)偏移量字节是指令的第三、四字节,是指令的可选字节,给出了存储器操作数的偏移量。4)立即数字节是指令的可选字节,给出了指令的立即数。3.38086CPU的寻址方式寻址方式寻找指令或操作数存放地址的方法。两种寻址方式:一种是用来对操作数进行寻址;另一种是用来对转移地址或调用地址进行寻址,即对指令地址进行寻址。,3.3.1操作数的寻址方式1、立即寻址立即数寻址特点:指令执行速度快。立即数只能是整数,且只能作为源操作数。,图3-6立即数寻址过程,2、寄存器寻址方式寄存器寻址方式的优点:不但可以减少指令码的长度,而且由于操作数已存于寄存器中,执行速度较快。寄存器既能作为源操作数,又能作为目的操作数。例如:MOVAX,CX该指令将CX(源操作数)的内容传送到AX寄存器(目的操作数)中,其中源操作数CX,目的操作数AX都是寄存器寻址方式。3、存储器寻址指令给出了操作数在数据区中的地址信息。五种不同的存储器寻址方式:,(1)直接寻址方式例如:MOVAX,7834H该指令将有效地址EA=8064H单元中的内容传送到AX寄存器中。若(DS)=2000H,则该指令源操作数的存储单元的物理地址为20000H7834H=27834H。,(2)寄存器间接寻址操作数存放在存储单元中。注意两点:一是寄存器中的内容是操作数的有效地址,而不是操作数本身;二是只能用CPU中的基址寄存器BX、BP或变址寄存器DI、SI来间接寻址。如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认段寄存器为DS。即:物理地址=DS10H+EA=DS10H+或物理地址=SS10H+BP,例如:MOVAX,DI,(3)寄存器相对寻址操作数存放在存储单元中物理地址=DS10H+EA=DS10H+或物理地址=SS10H+BP例如:MOVBX,DI+10H,基址寻址用BX、BP为基址寄存器进行寻址变址寻址用SI、DI为变址寄存器进行寻址,(4)基址加变址寻址方式操作数存放在存储单元中物理地址=DS10H+EA=DS10H+或物理地址=SS10H+例如:ADDAX,BX+SI,(5)相对的基址和变址寻址方式操作数存放在存储单元中物理地址=DS10H+EA=DS10H+或物理地址=SS10H+,例如:MOVAH,BXSI2468H,4、IO端口寻址操作数在IO端口中。两种编址方式:与存储器统一编址方式独立的IO空间编址方式与存储器统一编址方式,上述五种存储器寻址方式均可采用。独立的IO空间编址方式则对IO端口有两种寻址方式:(l)直接端口寻址方式端口地址的寻址范围是00FFH,端口地址直接由指令给出。(2)间接端口寻址方式端口地址的寻址范围是00FFFFH,端口地址由DX寄存器给出。,3.3.2指令地址的寻址方式指令地址的寻址方式以下4种:(1)段内直接寻址方式转移的指令地址是由当前的IP内容和指令中规定的8位或16位偏移量之和给出。,(2)段内间接寻址方式转移的指令地址是由用寄存器或一个字存储单元的内容给出。,图3-13段内间接寻址方式过程,(3)段间直接寻址方式转移的指令地址是由指令码字节直接给出。,(4)段间间接寻址方式转移的指令地址由一个双字存储单元的内容给出。,图3-15段间间接寻址方式过程,3.48086指令系统指令系统按功能可分为6类:数据传送类指令;算术运算类指令;逻辑运算与移位类指令;字符串指令;控制转移类指令;处理器控制类指令。,3.4.1数据传送类指令分为4种:通用数据传送指令累加器专用传送指令地址传送指令标志传送指令。1通用数据传送指令(1)最基本的传送指令格式:MOV目的操作数,源操作数,举例:MOVBL,ALMOVDS,AXMOVDL,DIMOVBX,AXMOVDX,1000MOVBH,120MOVDX,1234H,(2)堆栈操作指令堆栈是一种数据结构,是在内存中开辟了一个比较特殊的存储区,这个区域中数据的存取采用“后进先出”的原则。,1000,SS,0018,SP,60,50,40,30,20,10,10018,1001A,栈顶,栈底,1000,SS,0016,SP,60,50,40,30,20,10,AB,CD,10018,1001A,栈顶,栈底,1000,SS,001A,SP,40,30,20,10,1001A,栈顶,栈底,10016,图3.168086系统椎栈及其操作(a)堆栈原始状态(b)执行pushAX(c)执行POPAX(AX)=CDABHPOPBX后的状态,(a)(b)(c),堆栈段8086CPU在存储器分段管理时,划分了一个专门的堆栈区。格式:PUSH源操作数POP目的操作数举例:PUSHBXPUSHESPUSHDSPUSHSIPOPAXPOPBXPOSHDI,(3)交换指令实现两个操作数之间进行直接交换,方便程序的编写。格式:XCHG目的操作数,源操作数举例:XCHGAH,BLXCHGDX,BXXCHG505H,AX,2累加器专用传送指令累加器是8086CPU进行数据传输的核心。有两类指令:输入输出指令换码指令(1)输入输出指令工业控制中常用的指令格式:INAC,源操作数OUT目的操作数,AC举例:INAL,20HOUTDX,AX,(2)换码指令该指令用来将一个代码值转换成相应的另一种代码值,格式:XLAT,举例:若要将十进制数09转换成共阳极LED显示的字形代码,则列表如表3-2所示。,表3-2十进制数09转换成LED显示的字形代码,3地址传送指令它包括3条指令:取有效地址指令LEA;将地址指针装入DS指令LDS;将地址指针装入ES指令LES。格式:LEA寄存器,源操作数LDS寄存器,源操作数LES寄存器,源操作数举例:LEAAX,DI+1000LEAAX,3721HLDSSI,2130HLESDI,SI,4标志传送指令标志传送指令包括4条指令:标志读取指令LAHF标志设置指令SAHF标志寄存器压入堆栈指令PUSHF标志寄存器从堆栈弹出指令POPF格式:LAHFSAHFPUSHFPOPF,举例:PUSHFPOPBXPUSHCXPOPF,图3-19LAHF和SAHF指令传送操作,3.4.2算术运算类指令1加法指令格式:ADD目的操作数,源操作数ADC目的操作数,源操作数INC目的操作数举例:ADDBL,15HADDBX,SIADCCX,BXINCDX,2减法指令格式:SUB目的操作数,源操作数SBB目的操作数,源操作数DEC目的操作数NEG目的操作数CMP目的操作数,源操作数,举例:SUBAX,BXSUBAH,110SBBBX,AXDECBX,3乘法指令格式:MUL源操作数IMUL源操作数举例:MULDLIMULBX,(a)(b)图3-20乘法运算操作数及其运算结果间关系(a)字节操作数(b)字操作数,4除法指令格式:DIV源操作数IDIV源操作数CBWCBD举例:DIVDLIDIVBXMOVAL,72HCBWMOVAX,8600HCWD,AL,AH,商,余数,操作数,AX,8位,16位,AX,DX,商,余数,操作数,DXAX,16位,32位,(a)(b)图3-21除法运算操作数及其运算结果存放关系(a)字节操作数(b)字操作数,5BCD码运算的调整指令分为两类:组合式BCD码和分离式BCD码格式:DAAAAADASAASAAMAAD,举例:ADCAL,SIDAAADDAL,DIAAASUBAL,BXDASMULDLAAMAADDIVBL,3.4.3逻辑运算和移位指令两组处理指令:逻辑运算指令和移位指令。1逻辑运算指令指令格式:AND目的操作数,源操作数OR目的操作数,源操作数NOT目的操作数XOR目的操作数,源操作数TEST目的操作数,源操作数,举例:ANDBL,0FHORCX,BX+DIXORAX,0FF00HTESTBX,8000HNOTDH2移位指令分为两大类:非循环移位指令和循环移位指令。,(1)非循环移位指令指令格式:SAL目的操作数,计数值SHL目的操作数,计数值SAR目的操作数,计数值SHR目的操作数,计数值举例:SALAX,1SHLAX,CLSARWORDPTRSI,1SHRDI,1,图3-22非循环移位指令操作示意图(a)SHL/SAL算术左移(b)SHR逻辑右移(c)SAR算术右移,(2)循环移位指令指令格式:ROL目的操作数,计数值ROR目的操作数,计数值RCL目的操作数,计数值RCR目的操作数,计数值举例:ROLAX,1RORAH,CLRCLBYTEPTRBX,1RCRBX,1,图3.23循环移位移位指令操作示意图(a)ROL不带进位循环左移(b)ROR不带进位循环右移(c)RCL带进位循环左移(d)RCR带进位循环右移,3.4.4串操作指令串操作指令-用一条指令实现对一串字符或数据的操作。串操作指令的特点:通过加重复前缀来实现串操作,规定CX寄存器存放要处理的字符串的元素个数,即:字节数或字数。可以对字节串进行操作,也可以对字串进行操作。串操作时,SI和DI的增减规定由方向标志DF设定,当DF=1时,SI和DI作自动减量修改,当DF=0时,SI和DI作自动增量修改,对字节串操作增减量为1,对字串操作增减量为2。重复的字符串处理过程可以被中断。5条串操作指令:串传送指令MOVS、串比较指令CMPS、串检索指令SCAS、LODS串装入指令和串存储指令STOS。,3条重复前缀:重复前缀REP、相等时重复REPE和不相等时重复REPNE。1指令的重复前缀格式:REP串操作指令REPE串操作指令或REPZ串操作指令REPNE串操作指令或REPNZ串操作指令,2字符串指令(1)字符串传送指令指令格式:MOVSBMOVSW举例:MOVDS,2000HMOVES,3000HCLDMOVCX,20MOVSI,200HMOVDI,100HREPMOVSW,(2)字符串比较指令指令格式:CMPSBCMPSW举例:编程比较从逻辑地址2000H:100H开始的10个字节与逻辑地址4000H:200H开始的10个字节是否对应相等,相等则转DONE。MOVDS,2000HMOVES,4000HMOVDI,200HMOVSI,100HCLD,MOVCX,10REPZCMPSBJZDONERETDONE(3)字符串检索指令指令格式:SCASWSCASB功能:SCASB/SCASW在字符串中查找一个与已知数值相同或不同的元素。,举例:从逻辑地址9000H:100H开始的10个单元中如果有一个单元的内容为2CH,则BX加1。MOVES,9000HMOVDI,100HCLDMOVCX,10MOVAL,2CHREPNZSCASBJNZAAAINCBXAAA:,(4)取字符串指令指令格式:LODSBLODSW举例:将100H:20H单元开始10个字节的内容均加5。CLD;方向标志清0,SI递增MOVCX,10;置计数初值10MOVDS,100H;置DS为100HMOVSI,20H;置SI为20,作为初始地址指针LL1:LODSB;取1个字节到AL中,并使SI增1ADDAL,5;加5处理MOVSI,AL;处理结果送回DECCX;计数值减1JNZLL1;如未处理完,转LL1HLT;暂停,(5)存字符串指令指令格式:STOSBSTOSW举例:将100H:20H开始的128个单元清0。CLD;清除方向标志,DI递增MOVCX,0080H;置计数初值128MOVES,100H;置ES为100HMOVDI,20H;置DI为20H,作为初始地址指针XORAL,AL;AL清0REPSTOSB;将128个字节清0,3.4.5控制转移类指令5种转移指令:无条件跳转指令条件跳转指令循环控制指令子程序调用和返回指令中断指令1无条件跳转指令指令格式:JMP目标地址,举例:JMPSHORTMULTIJMPNEARPRTMULT2JMPCXJMPFARPTRMULT3JMPDWORDPTRSI2条件跳转指令(1)简单条件跳转指令指令格式:JC目标地址JNC目标地址JZ目标地址JNZ目标地址JS目标地址JNS目标地址,JO目标地址JNO目标地址JP目标地址JNP目标地址JCXZ目标地址举例:用条件跳转指令实现程序的循环MOVSI,1000HMOVDI,2000HMOVCX,100KKK:MOVSBDECCXJNZKKK,(2)带符号数条件跳转指令指令格式:JG/JNLE目标地址JGE/JNL目标地址JL/JNGE目标地址JLE/JNG目标地址举例:设有2个互不相等的带符号字节数存放在以100H单元为首地址的数据缓冲区中,试编程把较大的数送200H单元中。,(3)无符号数条件跳转指令指令格式:JB/JNAE目标地址JNB/JAE目标地址JA/JNBE目标地址JNA/JBE目标地址,MOVSI,100H;首址100H送SIMOVAL,SI;取第一个数据CMPAL,SI+1;与第二个数相比较JGL1;如果比第二个数大,转L1MOVAL,SI+1;取第二个数L1:MOVSI,200H;将较大的数送至200HMOVSI,AL,3循环控制指令指令格式:LOOP目标地址LOOPZLOOPE目标地址LOOPNZLOOPNE目标地址举例:编程求1+2+3+4+100MOVCX,100;置循环计数初值100MOVAX,0;求和寄存器AX清0,SUM:ADDAX,CX;把CX计数值累加入AXLOOPSUM;CX=CX-1,当CX0时再循环RET;返回,结果在AX中,4子程序调用和返回指令指令格式:CALL目标地址RETRET参数举例:CALL200HCALLBXCALL500H:600HCALLDWORDPTRBXRET4,5中断指令3.4.6处理器控制类指令1标志操作指令指令格式:STCCLCCMCSTDCLDSTICLI,28086CPU与外部事件同步指令指令格式:HLTWAITESC外部操作码,源操作数LOCK指令3空操作指令指令格式:NOP3.580X86的寻址方式及新增的指令3.5.1虚地址方式下的寻址方式,1立即数寻址方式例如:MOVEAX,12345678H2寄存器寻址方式例如:MOVEAX,ECX3存储器寻址方式偏移量可以由下列公式计算得到:EA基址十变址比例因子十位移量基址任何通用寄存器都可作为基址寄存器,其内容即为基址。位移量在指令操作码后面的32位、16位或8位的数。变址除了ESP寄存器外,任何通用寄存器都可以作为变址寄存器,其内容即为变址值。比例因子变址寄存器的值可以乘以一个比例因子,比例因子可以是1,2,4或8。,9种存储器寻址方式(1)直接寻址方式例如:INCWORDPTR1234567H(2)寄存器间接寻址方式例如:MOVEBX,EAXMOVAX,ECXMOVBL,CX(3)基址寻址方式例如:MOVECX,EAX124MOVDX,EBP12345H与8086CPU不同之处:位移量可以是32位,任何一个通用寄存器均可,(4)变址寻址方式例如:MOVEAX,CNTEBPMOVEDX,CNTEAX与8086CPU不同之处:位移量可以是32位,任何一个通用寄存器均可看成基址寄存器(5)带比例因子的变址寻址方式EA=变址寄存器内容*比例因子+位移量其中:比例因子可以为1、2、4或8例如:MOVEAX,CNTESI*4MOVEAX,VAREDI*2,(6)基址加变址寻址方式EA=基址寄存器内容+变址寄存器内容例如1:MOVEAX,EBXEDIMOVEAX,ESPEBP例如2:MOVEAX,EDXEBPMOVEAX,EBPEDX(7)带比例因子的变址再加基址寻址方式EA=变址寄存器内容*比例因子+基址例如:MOVEBX,EDX*8EBPMOVEAX,EDXEBP*2,(8)带位移量的基址加变址寻址方式例如:ADDEDX,EDIEBP123HEA=基址寄存器内容+变址寄存器内容+位移量(9)带比例因子的变址加基址加位移量的寻址方式例如:MOVEAX,ESI*8EBP180HEA=基址寄存器内容+(变址寄存器内容比例因子)+位移量注意:在实模式下,操作数和地址的默认长度是16位。,3.5.280286CPU新增指令新增指令包括两个方面,一是增加了一些新功能指令,二是对一些原有指令增强了其功能。80286CPU新增指令见表3-3.3-4。下面就其中一些常用指令进行介绍1数据传送类指令指令格式:PUSH源操作数PUSHAPOPA举例:PUSH-5,2算术运算类指令指令格式:IMUL寄存器,立即数IMUL寄存器1,寄存器2或存储器,立即数举例:IMULBX,50IMULDI,BXTABLE,3IMULBX,CX,345H,3移位和循

温馨提示

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

评论

0/150

提交评论