8086汇编总结程伟整理8086汇编总结一、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))18086汇编总结程伟整理相对基址变址寻址PA=(DS|SS)×16+(BX|BP)+(SI|DI)+偏移量MOVAX,OFFSET(BX+DI);(AX)←((DS)×16+(BX)+(DI)+OFFSET)B——二进制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指令的结果判断方法28086汇编总结程伟整理一、指令表(指令分六大类)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~4大小关系A-B相关标志位判断依据无符号ZFCFA>B00ZF=1A=BCF=1A<BCF或ZF=0A>BA=B10CF=0A>=BA<B01CF或ZF=1A<=BAB大小关系相关标志位判断条件大小关系有符号SFZFOF>0>0A>B000ZF=1A=B>0>0A<B100SF异或OF=1A<B>0<0A>B000(SF异或OF)或ZF=0A>B101<0>0A<B100001<0<0A<B100SF异或OF=0A>=B<0<0A>B000(SF异或OF)或ZF=1A<=BABA=B01038086汇编总结程伟整理XCHGdest,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)...