您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 8086汇编语言速成秘籍
8086汇编总结程伟整理18086汇编总结一、8086编程结构执行部件EU通用寄存器AX累加器数据寄存器BX基数寄存器CX计数器DX数据寄存器专用寄存器BP基数指针指针寄存器堆栈段偏移地址SP堆栈指针给出栈顶偏移地址SI源变址寄存器变址寄存器数据段偏移地址DI目的变址寄存器标志F标志寄存器,标志寄存器总线接口部件BIU段寄存器CS代码段不能被赋值复位后为FFFFH存储器DS数据段复位后为0000HES附加段SS堆栈段存放堆栈基地址IPIP指令指针寄存器器指令指针寄存器二、状态标志寄存器F标志位名功能为1对应符为0对应符CF进位标志1最高位产生进位CYNCAF辅助进位标志1低四位产生进位ACNAZF零标志1结果为0,0结果不为0ZRNZSF符号标志1结果为负,0结果为正NGPLPF奇偶标志1底八位有偶数个1,0结果有奇数个1PEPOOF溢出标志1最高位有进位,0最高位没进位OVNVDF方向标志控制标志位DNUPIF中断允许标志EIDITF跟踪标志三、寻址方式{(PA物理地址=实际地址=绝对地址=cpu以实际地址访问存储器)=段基址*10H+(逻辑地址=偏移地址=有效地址EA=程序以逻辑地址编址)}寻址方式操作数物理地址(PA)指令格式举例立即寻址操作数在指令中直接给出源操作数为地址MOVDX,100H;(DX)←100H寄存器寻址操作数在寄存器中操作数需要寻址ADDAX,BX;(AX)←(AX)+(BX)直接寻址操作数的有效地址由指令直接给出操作数需要计算MOVAX,[100];(AX)←(100)寄存器间接寻址PA=(DS)|(SS)×16+(BX)|(SI)|(DI)|(BP)给出的均为操作数的逻辑地址,而且将逻辑地址分成几段,经计算才能得到操作数MOVAX,[BX];(AX)←((DS)×16+(BX))寄存器相对寻址PA=(DS|SS)×16+(BX|BP|SI|DI)+偏移量MOVAL,OFFSET[SI];(AL)←((DS)×16+(SI)+OFFSET)基址变址寻址PA=(DS|SS)×16+(BP|BX)+(SI|DI)MOVAX,[BX+DI];(AX)←((DS)×16+(BX)+(DI))相对基址变址寻址PA=(DS|SS)×16+(BX|BP)+(SI|DI)+偏移量MOVAX,OFFSET(BX+DI);(AX)←((DS)×16+(BX)+(DI)+OFFSET)8086汇编总结程伟整理2B——二进制D——十进制Q——八进制H——十六进制四、符号约定及含义符号含义i8一个8位立即数立即数i16一个16位立即数imm一个8位或16位立即数r8一个8位通用寄存器AHALBHBLCHCLDHDLr16一个16位通用寄存器或专用寄存器AXBXCXDXBPSPSIDIreg一个8位或16位通用寄存器或专用寄存器seg一个16位段寄存器DSCSESSSm8一个8位的存储器操作数m16一个16位的存储器操作数mem一个8位或16位存储器操作数m32一个32位的存储器操作数dest目标操作数src源操作数portI/O端口五、CMP指令的结果判断方法大小关系A-B相关标志位判断依据无符号ZFCFAB00ZF=1A=BCF=1ABCF或ZF=0ABA=B10CF=0A=BAB01CF或ZF=1A=BAB大小关系相关标志位判断条件大小关系有符号SFZFOF00AB000ZF=1A=B00AB100SF异或OF=1AB00AB000(SF异或OF)或ZF=0AB10100AB10000100AB100SF异或OF=0A=B00AB000(SF异或OF)或ZF=1A=BABA=B0108086汇编总结程伟整理3一、指令表(指令分六大类)1、数据传送类(只有标志传送指令对F寄存器影响)类型汇编指令格式功能操作数说明时钟周期数字节数说明通用数据传送指令MOVdest,src数据传送指令(dest)←(src)reg,segreg,memreg,immreg,regmem,regmem,segmem,immseg,regseg,mem28+EA429+EA9+EA10+EA28+EA22~42~322~42~43~622~4Cs不能做目标操作数,不能被赋值。段寄存器之间不能传输数据。目标操作数和源操作数不能同时为内存操作数(存储器操作数)。寄存器中的数为操作数地址时为内存操作数,如【XX】。PUSHsrc入栈(SP)←(SP)-2((SP)+1,(SP))←(src)r16segm16111016+EA112~4栈底为高地址高字节先入栈每次两个字节参与(16位)基地址在ss中偏移地址在sp中调用或中断时保存返回地址POPdst出栈(dst)←((SP)+1,(SP))(SP)←(SP)+2r16segm168817+EA112~4XCHGdest,src数据交换指令(des)←→(src)reg,memreg,regmem,reg17+EA432~421两者互换,但不能同时为存储器操作数,存储内容互换要借助通用寄存器XLAT换码指令AL←DS中逻辑地址为(BX+AL)的内存单元111操作数均隐含输入输出指令INAL/AX,port(acc)←(port)AX字节,AL字,DX不是操作数而是地址102直接寻址,port地址范围0-255(0ffh)OUTport,AL/AX(port)←(acc)102INAL/AX,DX(acc)←((DX))81间接寻址,端口地址在DX中,范围0-65535(0ffffh)OUTport,DX((DX))←(acc)81地址传送指令(对逻辑地址操作)LEAreg,src取有效地址指令r16←mem的EAr16,mem2+EA2~4L为取的意思操作数均为16位LDSreg,src地址指针装入DSr16←m32的底16位(DS)←m32的高16位r16,m3216+EA2~4LESreg,src地址指针装入ESr16←m32的底16位(ES)←m32的高16位r16,m3216+EA2~4标志传送指令(唯一对F寄存器操作)LAHF取标志(AH)←(F低8位字节)隐含操作数41F157SF146ZF135124AF11OF310DF2PF9IF18TF0CFSAHF置标志(F低8位字节)←(AH)隐含操作数41PUSHF标志入栈指令(SP)←(SP)-2(先入栈)((SP)+1,(SP))←F隐含操作数,标志寄存器入栈101POPF标志弹出指令F←((SP)+1,(SP))(SP)←(SP)+2(出栈)隐含操作数,数据出栈到标志寄存器818086汇编总结程伟整理42、算术运算指令(都对F寄存器产生影响)类型汇编指令格式功能操作数说明时钟周期数字节数说明辅助运算指令CBWAX←AL字节扩展到字不影响标志位AL80H时AH=00H,AL=80H时AH=FFHAX8000H时DX=0000H,AX=8000H时DX=FFFFH对于符号数:最高位为0表示正,为1表示负CWDDXAX←AX字扩展到双字BCD数(算术运算结果)调整指令DAA压缩BCD数加法调整(AL)←(AX)/(src)的商(AH)←(AX)/(src)的余数(AX)←(DX,AX)/(src)的商(DX)←(DX,AX)/(src)的余数41DAS压缩BCD数减法调整(AL)←(AX)/(src)的商(AH)←(AX)/(src)的余数(AX)←(DX,AX)/(src)的商(DX)←(DX,AX)/(src)的余数41AAA加法ASCII码调整(AL)←AL中的和调整为组合BCD41AAS减法ASCII码调整(AL)←AL中的差调整为组合BCD41AAM乘法ASCII码调整(AL)←AL中的和调整为非组合BCD(AH)←(AH)+调整产生的进位值832AAD除法ASCII码调整(AL)←AL中的差调整为非组合BCD(AH)←(AH)-调整产生的进位值602除(算术运算指令)DIVsrcSrc字节AL←AX÷src商,AH←AX÷src余数,Src字AX←DXAX÷src商,DX←DXAX÷src余数8位reg8位mem16位reg16位mem80~90(86~96)+EA144~162(150~168)+EA22~422~4不影响标志位除非溢出不能是压缩的BCD数IDIVsrcSrc字节AL←AX÷src商,AH←AX÷src余数,Src字AX←DXAX÷src商,DX←DXAX÷src余数8位reg8位mem16位reg16位mem101~112(107~118)+EA165~184(171~190)+EA22~422~48086汇编总结程伟整理5加(算术运算指令)ADDdst,src(dst)←(src)+(dst)mem,regreg,memreg,regreg,immmem,immacc,imm16+EA9+EA3417+EA42~42~423~43~62~3操作数类型:无符号二进制数,带符号位二进制数,无符号压缩BCD数,无符号非压缩BCD数。dest与src不能同时为内存操作数。ADCdst,src带进位加法(dst)←(src)+(dst)+CF(最高位进位标志符,有进位为1,否则为0)mem,regreg,memreg,regreg,immmem,immacc,imm16+EA9+EA3417+EA42~42~423~43~62~3INCdest(dest)←(dest)+1regmem2~315+EA1~22~4减(算术运算指令)SUBdest,src(dst)←(src)-(dst)mem,regreg,memreg,regreg,immmem,imm16+EA9+EA3417+EA2~42~423~43~6操作数类型:无符号二进制数,带符号位二进制数,无符号压缩BCD数,无符号非压缩BCD数。dest与src不能同时为内存操作数。SBBdest,src带进位减法(dst)←(src)-(dst)-CFmem,regreg,memreg,regreg,immmem,imm16+EA9+EA3417+EA2~42~423~43~6DEGdest(dest)←(dest)-1regmem2~315+EA1~22~4NEGdest求补指令(dest)←0-(dest)regmem316+EA22~4就是求相反数。按位取反,末位加1.CMPdest,src比较指令(dest)-(src)mem,regreg,memreg,regreg,immmem,imm9+EA9+EA3410+EA2~42~423~43~6目的操作数减去源操作数。比较结果见附表乘(算术运算指令)MULsrcSrc为字节:(AX)←(AL)*(src)Src为字:(DX,AX)←(AX)*(src)8位reg8位mem16位reg16位mem70~77(76~83)+EA118~133(124~139)+EA22~422~4不能是压缩的BCD数不能是立即数仅影响标志位OF\CFIMULsrcSrc为字节:(AX)←(AL)*(src)Src为字:(DX,AX)←(AX)*(src)8位reg8位mem16位reg16位mem80~98(86~104)+EA128~154(134~160)+EA22~422~48086汇编总结程伟整理63、位操作指令逻辑运算指令ANDdst,src(dst)←(dst)∧(src)mem,regreg,memreg,regreg,immmem,immacc,imm16+EA9+EA3417+EA42~42~423~43~62~3ORdst,src(dst)←(dst)∨(src)mem,regreg,memreg,regreg,immmem,immacc,imm16+EA9+EA3417+EA42~42~423~43~62~3NOTop1(op1)←(1op)regmem316+EA22~4XORdst,src(dst)←(dst)⊕(src)m
本文标题:8086汇编语言速成秘籍
链接地址:https://www.777doc.com/doc-4378856 .html