版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微处理器指令系统微机原理与接口技术·第02章Intel8086/8088微处理器指令体系详解Contents本章知识框架微处理器指令系统的六大核心模块,从结构基础到控制逻辑完整覆盖。01微处理器结构与寻址方式02数据传送类指令03算术运算类指令04位操作类指令05控制转移类指令06处理器控制类指令CHAPTER01微处理器结构与寻址方式理解8086/8088的内部结构、寄存器组织与七种寻址方式MicroprocessorArchitecture8086/8088的功能结构8086CPU采用双单元并行架构——总线接口单元BIU负责取指和数据传输,执行单元EU负责指令译码与执行,二者通过6字节指令队列实现流水线式并行操作,显著提升了处理器吞吐率。总线接口单元BIUIntel8086微处理器芯片实物负责CPU与存储器、I/O端口之间的数据传送,执行取指令、读操作数、写操作数等总线操作内含指令队列缓冲器(8086为6字节,8088为4字节),实现指令预取,EU执行当前指令时BIU并行预取后续指令包含4个16位段寄存器(CS/DS/SS/ES)和指令指针IP,管理存储器的段基址和偏移地址执行单元EU8086CPU内部芯片结构从BIU的指令队列中取出指令进行译码和执行,完成算术逻辑运算、数据传送和控制转移等操作内含4个16位通用数据寄存器(AX/BX/CX/DX)、2个指针寄存器(SP/BP)和2个变址寄存器(SI/DI)包含标志寄存器FLAGS(16位,其中9位有效),记录运算结果的状态特征如进位、零、溢出等MICROPROCESSORARCHITECTURE8086/8086的寄存器结构8086共有14个16位寄存器,按功能分为通用数据寄存器(8个)、段寄存器(4个)和控制寄存器(IP与FLAGS各1个),寄存器是CPU内部最快的高速存储单元,指令系统的设计高度依赖这些寄存器的组织方式。01通用数据寄存器AX/BX/CX/DX各16位,可拆分为高8位(AH/BH/CH/DH)和低8位(AL/BL/CL/DL)独立使用,其中BX常作基址寄存器、CX常作计数寄存器02指针与变址寄存器SP(堆栈指针)、BP(基址指针)、SI(源变址)、DI(目的变址)均为16位,在存储器寻址中提供偏移地址,SP专用于堆栈操作03段寄存器CS/DS/SS/ES各16位,分别存放代码段、数据段、堆栈段和附加段的段基址,与偏移地址组合形成20位物理地址04IP指令指针16位,存放下一条待执行指令在代码段内的偏移地址,程序员不能直接修改IP,由转移指令自动更新05FLAGS标志寄存器16位中9位有效,包含6个状态标志(CF/PF/AF/ZF/SF/OF)和3个控制标志(TF/IF/DF),反映最近一次运算的结果特征微处理器内部结构与寄存器电路实拍MICROPROCESSORARCHITECTURE8086的存储器分段结构8086采用分段存储管理机制,通过"段基址×16+偏移地址"公式将16位段地址和16位偏移地址组合为20位物理地址,突破了16位寄存器只能寻址64KB的限制,实现对1MB存储空间的完整访问。0120位地址总线与1MB寻址8086具有20位地址总线,可寻址2²⁰=1MB物理存储空间,地址范围00000H~FFFFFH,而内部寄存器均为16位,最大仅能表示64KB。1MB02逻辑段划分规则分段机制将1MB空间划分为若干逻辑段,每段最大64KB且起始地址必须是16的倍数(段基址末位为0),段基址由段寄存器提供。64KB03物理地址计算公式物理地址=段基址×10H+偏移地址。例如CS=2500H、IP=0200H时,物理地址=2500H×10H+0200H=25200H。25200H04段的灵活组合方式各逻辑段可独立、部分重叠或完全重叠,同一物理地址可通过不同的段基址和偏移地址组合来访问,这种灵活性是x86架构的重要特征。X868086ASSEMBLY·ADDRESSING寻址方式概述与基本寻址寻址方式是指令寻找操作数或操作数地址的方法,8086共提供7种寻址方式,从简单到复杂依次为立即数寻址、寄存器寻址和5种存储器寻址方式,寻址方式的丰富程度直接决定了汇编语言程序的表达能力。SECTION01立即数寻址操作数直接包含在指令中,紧跟在操作码之后存放在代码段中,取指令时一并取出,无需额外访存。立即数只能作为源操作数,不能作为目的操作数,如MOVAX,2000H合法但MOV2000H,AX非法。支持8位和16位立即数,8位立即数会自动符号扩展到16位,如MOVAX,-1等价于MOVAX,0FFFFH。SECTION02寄存器寻址操作数在CPU内部的通用寄存器中,指令中给出寄存器名即可,如ADDAX,BX将BX内容加到AX中。执行速度最快,因为操作数在CPU内部无需访问总线,不产生总线周期,是所有寻址方式中效率最高的。要求源和目的操作数的位数必须匹配,16位寄存器只能与16位寄存器运算,8位只能与8位运算。MemoryAddressing五种存储器寻址方式存储器寻址通过计算有效地址EA定位操作数,8086提供5种方式,EA由基址、变址和位移量三个分量的不同组合构成。直接寻址EA直接写在指令中,如MOVAX,[2000H],默认使用DS段,适合访问固定地址变量无需计算,执行速度最快EA=disp寄存器间接寻址EA由BX/BP/SI/DI之一提供,BX/SI/DI默认DS段,BP默认SS段地址灵活可变EA=[reg]寄存器相对寻址EA=寄存器内容+位移量,如[SI+6],常用于访问数组元素数组遍历常用方式reg+disp基址变址寻址EA=基址(BX/BP)+变址(SI/DI),如[BX+SI],适合二维数组索引双寄存器协同计算base+idx相对基址变址EA=基址+变址+位移量,最灵活的寻址方式,适合结构体成员访问三分量组合最灵活b+i+disp寻址能力递进:直接寻址→寄存器间接→寄存器相对→基址变址→相对基址变址,灵活性逐步增强,复杂度相应提升ADDRESSINGMODE·PHYSICALADDRESS寻址方式物理地址计算实例物理地址计算是掌握存储器寻址的核心技能,必须同时正确确定有效地址EA(基址+变址+位移量)和默认段寄存器(BX/SI/DI用DS,BP用SS),段超越前缀可改变默认段选择。计算示例DS=3000H,BX=0100H,SI=0002HMOVAX,[BX]EA=BX=0100HPA=3000H×10H+0100H=30100HMOVAX,[BX+SI]EA=0100H+0002H=0102HPA=30000H+0102H=30102HMOVAX,[BX+SI+50H]EA=0100H+0002H+0050H=0152HPA=30152H(最完整的寻址形式)段超越与注意事项BP基址→SS段BP做基址寄存器时默认使用SS段而非DS段,如MOVAX,[BP]的物理地址=SS×10H+BP段超越前缀段超越前缀可改变默认段选择,如MOVAX,ES:[BX]强制使用ES段而非默认的DS段非法组合8086不允许两个基址寄存器或两个变址寄存器同时使用,[BX+BP]和[SI+DI]均为非法寻址CHAPTER02数据传送类指令通用数据传送、堆栈操作、标志操作与地址传送指令详解Assembly·DataTransfer通用数据传送指令MOV指令是汇编编程中使用频率最高的指令,但受限于8086架构约束,不允许存储器到存储器的直接传送、不允许立即数直接送段寄存器,这些限制需要通过多条指令组合来突破。01·MOV传送指令01格式:MOVdest,src,将src内容复制到dest中,src不变;支持reg↔reg、reg↔mem、reg↔imm、mem↔imm等组合MOV02关键限制:不允许mem→mem直接传送;不允许imm→段寄存器直接赋值;CS不能作为目的操作数约束03段寄存器初始化须分两步:先MOVAX,数据段地址,再MOVDS,AX,这是每个汇编程序开头的标准操作DS初始化02·XCHG交换与XLAT换表01XCHGdest,src:交换两个操作数的内容,不支持两个操作数同时为存储器,至少一个必须是寄存器XCHG02XLAT:查表转换指令,执行AL←[BX+AL],BX指向表首地址,AL中为表内偏移,常用于ASCII码转换和密码映射XLATx86Architecture堆栈操作指令8086堆栈位于SS段中,栈顶由SP指向,遵循LIFO原则且只能按字(16位)操作,PUSH先SP-2再存数、POP先取数再SP+2,堆栈是子程序调用、中断处理和参数传递的核心机制。01PUSH先将SP减2指向新栈顶,再将src的16位内容存入[SS:SP]指向的存储单元,src可以是寄存器、段寄存器或存储器02POP先将[SS:SP]指向的栈顶字单元内容取出送入dest,再将SP加2,dest可以是寄存器、段寄存器(CS除外)或存储器03操作约束堆栈只能按16位字操作,PUSHAL或POPBL均为非法指令;PUSH和POP必须成对使用以保持堆栈平衡04应用场景子程序入口处PUSH保存现场寄存器,返回前POP恢复;CALL指令自动将返回地址压栈,RET指令自动弹出8086InstructionSet·Flags&Address标志操作指令与地址传送指令标志操作指令直接控制FLAGS寄存器中的状态和控制标志位,是串操作编程和中断控制的基础工具;地址传送指令LEA/LDS/LES用于获取和加载存储器地址,与MOV取内容的功能形成互补。标志操作指令01CLC/STC/CMC分别清除、设置和取反进位标志CF,在多精度加减法运算中控制进位/借位的初始状态02CLD/STD分别清除和设置方向标志DF,控制串操作指令(MOVS/CMPS等)的地址递增或递减方向03CLI/STI分别禁止和允许可屏蔽中断(IF=0/IF=1),在临界区代码中保护中断安全FLAGSRegisterControl地址传送指令01LEAreg,mem将mem的有效地址EA(而非内容)送入reg,如LEABX,TABLE使BX=TABLE的偏移地址02LDSreg,mem从mem连续取出32位远指针,低16位送reg,高16位送DS,用于加载跨段的数据指针03LESreg,mem类似LDS但高16位送ES,常用于加载指向附加段的数据结构指针FarPointerLoadingCHAPTER03算术运算类指令加减法、乘除法、符号扩展与十进制调整指令详解ArithmeticInstructions加法与减法指令8086的加减法指令体系以ADD/SUB为基础,ADC/SBB扩展多精度运算能力,CMP执行减法仅影响标志位用于条件判断,INC/DEC不影响CF以保护多精度运算的进位链,标志位的正确理解是编写可靠算术程序的前提。加法指令组01ADDdest,src—dest←dest+src,影响全部6个状态标志位,是基本加法运算02ADCdest,src—dest←dest+src+CF,带进位加法,用于多精度运算的高位部分03INCdest—dest←dest+1,加1操作,不影响CF标志位,常用于循环计数器递增减法指令组04SUB/SBB—dest←dest−src;SBB额外减去借位CF,用于多精度减法05NEGdest—dest←0−dest,对操作数求补(取相反数),等价于按位取反再加106CMPdest,src—执行dest−src但结果不保存,仅设置标志位,为条件转移提供依据指令速查ADD加法·影响全部标志ADC带进位加法·多精度INC加1·不影响CFSUB减法·影响全部标志SBB带借位减法·多精度NEG求补·取相反数CMP比较·仅设标志位CF标志位行为ADD/ADC/SUB/SBB正常更新CF;INC/DEC不修改CF,保护多精度运算的进位链完整性。x86Arithmetic乘法与除法指令乘除法指令采用隐含操作数设计——乘法隐含使用AX(和DX),除法隐含使用DX:AX作为被除数、AX存商、DX存余数,这种设计简化了指令编码但要求程序员熟练掌握寄存器的隐含约定。乘法指令MUL/IMUL8位乘法MULr/m8—隐含被乘数在AL中,16位结果存入AXMULCL→AX←AL×CL16位乘法MULr/m16—隐含被乘数在AX中,32位结果高16位存DX、低16位存AXDX:AX←AX×r/m16MULvsIMUL—MUL处理无符号数,IMUL处理有符号数(补码)高半部分非零时CF=OF=1除法指令DIV/IDIV8位除法DIVr/m8—被除数在AX中,8位商存AL、8位余数存AHDIVCL→AL←AX÷CL商,AH←余数16位除法DIVr/m16—32位被除数在DX:AX中,16位商存AX、16位余数存DXDX:AX÷r/m16→AX商,DX余数除法溢出—除数为0或商超出目标寄存器范围时触发Type0Interrupt→程序异常终止ASSEMBLYINSTRUCTIONS符号扩展指令与十进制调整指令符号扩展指令CBW/CWD是有符号数除法的前置必备操作,确保被除数正确扩展到双字长;十进制调整指令DAA/DAS将二进制运算结果修正为合法BCD码,是金融和商业计算中十进制精确运算的基础。符号扩展指令CBW:将AL中8位有符号数符号扩展到AX,如AL=80H(-128)则CBW后AX=FF80HCWD:将AX中16位有符号数符号扩展到DX:AX,如AX=8000H则CWD后DX=FFFFHIDIV前必备:符号扩展确保被除数字长是除数的两倍,否则商可能出错十进制调整指令DAA:BCD码加法调整,ADD/ADC后执行,若低4位>9或AF=1则加06H修正DAS:BCD码减法调整,SUB/SBB后执行,修正规则与DAA类似但为减法方向示例:37H+25H=5CH→DAA→62H,正确得到37+25=62的BCD码结果CHAPTER04位操作类指令逻辑运算、移位与循环移位指令详解Assembly·LogicOperations逻辑运算指令五条逻辑运算指令各有典型应用场景——AND用于位屏蔽、OR用于位置位、XOR用于位翻转和高效清零、NOT用于全位取反、TEST用于非破坏性位检测,它们是底层硬件控制和数据处理的基石。ANDANDAL,0FH按位与运算,常用于屏蔽(清零)某些位。例如ANDAL,0FH保留低4位、清除高4位,实现精确的位级控制。位屏蔽ORORAL,80H按位或运算,常用于设置(置1)某些位。例如ORAL,80H将最高位置1而其余位保持不变,用于标志位设置。位置位XORXORAX,AX按位异或运算,兼具翻转和清零功能。XORAX,AX是清零寄存器的最高效方式,机器码仅2字节,执行速度优于MOV指令。2字节·高效NOT按位取反指令,单操作数设计。将每一位0变1、1变0,实现数据的按位反转。特别的是,该指令执行后不影响任何标志位,适合需要保留标志状态的场合。全位取反TESTTESTAL,01H执行按位与运算但不保存结果,仅更新标志位。例如TESTAL,01H检测最低位是否为1,实现非破坏性的位状态检测。非破坏性检测ASSEMBLY·INSTRUCTIONS移位指令与循环移位指令移位指令分为逻辑移位(SHL/SHR空位补0)和算术移位(SAR保持符号位不变),左移1位等价于乘2、右移1位等价于除2,循环移位将移出位循环回补。逻辑与算术移位SHL/SAL逻辑/算术左移,二者功能完全相同,低位补0,左移1位等价于无符号/有符号数乘2SHR逻辑右移,高位补0,适用于无符号数,右移1位等价于无符号数除以2SAR算术右移,高位补符号位(保持符号不变),如F8H(-8)右移1位得FCH(-4)循环移位ROL/ROR循环左/右移,移出的位同时送入另一端和CF中,如ROLAL,1将AL各位循环左移一位RCL/RCR带进位循环左/右移,CF参与循环,共17位(含CF)一起循环,常用于多精度移位操作CL寄存器移位次数大于1时必须用CL寄存器指定,如MOVCL,4→SHLAX,CL,8086不允许直接写SHLAX,4Chapter05控制转移类指令无条件转移、条件转移、循环控制、子程序与中断指令详解ASSEMBLY·CONTROLFLOW无条件转移指令JMPJMP指令实现程序执行流的无条件跳转,按目标地址的编码方式分为段内直接、段内间接和段间转移,是构建分支、循环和跳转表的基础。段内直接转移JMPlabel—指令中包含相对位移量disp,执行IP←IP+disp,位移范围为−32768~+32767字节。IP←IP+disp段内间接转移JMPr/m16—目标IP值从16位寄存器或存储器字单元中获取,如JMPBX使IP←BX。IP←BX段间直接转移JMPFARPTRlabel—指令直接包含目标段的CS和IP值,同时更新CS←新段基址、IP←新偏移。CS+IP段间间接转移JMPDWORDPTRmem—从存储器连续4字节取出32位远指针,低16位送IP、高16位送CS。32-bitFARx86INSTRUCTIONSET条件转移指令条件转移指令根据FLAGS标志位状态决定是否跳转,全部为段内短转移(-128~+127字节),分为单标志判断、无符号数比较和有符号数比较三大类。单标志位判断JZ/JE·ZF=1时跳转;JNZ/JNE·ZF=0时跳转。CMP后最常用的一对条件转移指令。JC/JB·CF=1时跳转;JNC/JAE·CF=0时跳转。判断进位与借位状态,用于无符号数大小比较。JS·SF=1时跳转,结果为负;JNS·SF=0时跳转,结果非负。判断结果正负号。无符号数与有符号数比较无符号数:JA(高于)、JAE(高于等于)、JB(低于)、JBE(低于等于),基于CF与ZF组合判断。有符号数:JG(大于)、JGE(大于等于)、JL(小于)、JLE(小于等于),基于SF、OF、ZF组合判断。关键区别:CMPAX,BX后若AX=-1、BX=1,无符号JA判断错误(FFFFH>0001H),有符号JL正确(-1<1)。8086INSTRUCTIONSET循环控制指令与串操作指令LOOP指令以CX为计数器自动控制循环次数,串操作指令配合REP前缀实现高效的批量数据处理,二者结合方向标志DF构成8086最强大的数据块操作能力,是内存拷贝、比较和填充等操作的标准实现方式。循环指令LOOPCX←CX-1,若CX≠0则跳转到label继续循环,等价于DECCX+JNZlabel的组合LOOPE/LOOPZCX←CX-1,若CX≠0且ZF=1则跳转,适合在数组中搜索第一个不匹配的元素LOOPNE/LOOPNZCX←CX-1,若CX≠0且ZF=0则跳转,适合在数组中搜索第一个匹配的元素串操作指令与重复前缀MOVS/CMPS/SCAS/LODS/STOS分别实现串传送、比较、扫描、装入和存储,自动根据DF递增或递减SI/DIREP使串操作重复CX次,如REPMOVSB实现CX个字节的块传送,是最高效的内存拷贝方式REPE/REPNE在REP基础上附加ZF条件判断,如REPECMPSB逐字节比较直到不匹配或CX=0Assembly·Subroutine子程序调用与返回指令CALL/RET指令通过堆栈机制实现子程序的调用与返回——CALL自动将返回地址压栈并跳转,RET自动弹出返回地址恢复执行,段间调用额外保存CS以支持跨段调用,RETn变体可在返回时自动清理堆栈参数。CALL调用指令01段内直接调用—CALLlabel,先将IP(返回地址)压栈,再IP←IP+disp跳转到子程序入口IP+disp02段内间接调用—CALLr/m16,将IP压栈后从寄存器或存储器获取新IP值,如CALLBX使IP←BXr/m1603段间调用—CALLFARPTRlabel,先压CS再压IP,同时更新CS和IP为目标段地址,支持跨代码段调用FARPTRRET返回指令01段内返回—RET,从栈顶弹出2字节送入IP恢复执行,SP←SP+2SP+202段间返回—RETF,先弹出IP再弹出CS共4字节,恢复跨段调用的完整返回地址4bytes03带参数返回—RETn,弹出返回地址后SP再额外加n,自动清理调用者压入的参数,简化堆栈管理RETnINTERRUPT&SYSTEMCALL中断指令与系统功能调用INTn指令通过中断向量表跳转到中断服务程序,IRET恢复IP/CS/FLAGS完整现场实现中断返回,INT21H作为DOS系统功能调用接口提供了键盘输入、屏幕输出、文件操作等丰富的系统服务,是汇编程序与操作系统交互的标准途径。INTn软件中断指令,CPU将FLAGS/CS/IP依次压栈,从中断向量表地址n×4处取出4字节送入IP和CS,跳转到中断服务程序IRET中断返回指令,从堆栈依次弹出IP、CS和FLAGS(共6字节),完整恢复中断前的处理器状态INT3类型3断点中断,机器码仅1字节(CCH),调试器用其替换目标指令实现断点功能INTO溢出中断指令,当OF=1时触发类型4中断,常放在有符号数运算之后检测溢出INT21HDOS功能调用:AH=01H键盘输入、AH=02H显示字符(DL=字符)、AH=09H显示字符串(DS:DX=串地址)、AH=4CH程序退出INT21H·ProgrammingDOS系统功能调用编程实例DOS系统功能调用通过INT21H实现,以AH寄存器指定功能号、其他寄存器传递参数,掌握02H字符输出、09H字符串输出、01H键盘输入和4CH程序退出这四个最常用功能,即可编写基本的交互式汇编程序。01字符与字符串输出02H显示单个字符MOVAH,02H→MOVDL,'A'→INT21H,在屏幕当前光标位置显示字符'A'09H显示字符串MOVAH,09H→LEADX,message→INT21H,message必须以'$'字符结尾作为终止标志02键盘输入与程序退出01H键盘输入单字符MOVAH,01H→INT21H,等待用户按键,输入字符存入AL并在屏幕回显08H键盘输入不回显MOVAH,08H→INT21H,功能同01H但不在屏幕回显,适合密码输入场景4CH程序正常退出MOVAH,4CH→INT21H,返回DOS并传递返回码(AL中),是程序结束的标准方式CHAPTER06处理器控制类指令标志控制、同步、总线与处理器状态管理指令ProcessorControl处理器控制类指令详解处理器控制指令管理CPU的运行状态和总线行为,HLT暂停等待中断、WAIT同步协处理器、LOCK锁定总线保证多处理器互斥访问、NOP空操作精确定时,这些指令虽然简单但在系统级编程中不可或缺。Section01·处理器状态控制HLT(Halt)使CPU进入暂停状态,不执行任何总线周期,直到收到中断请求或复位信号才被唤醒继续执行HALTSTATEWAIT使CPU进入等待状态,反复检测TEST引脚,直到TEST引脚变为低电平才继续执行后续指令TESTPINSYNCESCopcode,mem将指令的操作码和存储器操作数交给外部协处理器(如8087浮点协处理器)执行COPROCESSOR8087Section02·总线控制与空操作LOCK前缀加在任何指令前面,在该指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026维信电子面试题及答案大全
- 2026县医院口腔面试题及答案
- (2026年)正规个人租房合同简单版
- 2025-2026学年河南省信阳市潢川县数学三年级下学期期中模拟试题(含解析)
- 《水泥生产防尘技术规程》
- 2025-2026学年河北省唐山市丰润区数学三年级下学期期末学业水平测试模拟试题(含答案解析)
- 2025-2026学年河北省保定市安新县三年级数学下学期期末教学质量检测试题(含答案解析)
- 2025-2026学年江西省抚州市崇仁县三年级数学下学期期末复习检测试题含解析
- 阜阳颍上县县直机关选调公务员笔试真题2025
- 成都市双流区医务社会工作服务岗位考试真题2025
- 八大特殊作业监护人员安全手册
- 2026秋北师大版四年级数学上册第4单元我们生活的空间(二)第1课时观察的范围课件
- 北师大版四年级下册数学题每日一练
- 生物质循环流化床气化装置项目可行性研究报告
- xx区加强生物多样性保护实施方案
- 后勤部管理制度培训
- 新疆城市绿地养护管理标准
- DLT 572-2021 电力变压器运行规程
- 电力网电能损耗管理规定
- 防洪防汛风险评估报告
- 闽教版英语四年级上学期第一单元测试卷
评论
0/150
提交评论