汇编语言复习题之知识点参考基础版本第一章十进制与二进制之间的转换(P2)降幂法除法十进制与六进制之间的转换(P5)降幂法除法补码表示:正数:采用符号—绝对值法负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示补吗运算:二进制数按位求反后在末尾加1第二章一、存储容量1K=1024=210(Kilo)1M=1024K=220(Mega)1G=1024M=230(Giga)1个二进制位:bit(比特)8个二进制位:Byte(字节)1Byte=8bit2个字节:1Word(字)1Word=2Byte=16bit二、存储单元地址和内容1.存储器以字节(8bit)为编程单位2.每个字节单元都有唯一的地址编码3.地址用无符号整数来表示(编程用十六进制表示)4.一个字要占用相继的两个字节5.低位字节存入低地址,高位字节存入高地址6.字单元地址用它的低地址来表示7.机器以偶地址访问(读/写)存储器三、物理地址=16段地址+偏移地址四、存储器的分段:20根地址线:地址范围00000H~FFFFFH(1MB)机器字长16位:仅能表示地址范围0000H~FFFFH(64KB)小段:每16个字节为一小段,共有64K个小段段起始地址:小段首地址段的大小:64K范围内的任意字节五、存储器的逻辑分段优点:允许程序在存储器内重定位;允许实模式程序在保护模式下运行;有利于程序和数据的分离。六、中央处理器8086/8088寄存器组:通用寄存器数据寄存器:AX,BX,CX,DX变址寄存器:SI、DI指针寄存器:SP、BP控制寄存器:IP、FLAGS段寄存器:CS、DS、SS、ES汇编语言复习题之知识点参考基础版本七、标志寄存器(FLAGS/PSW)条件标志位:OF溢出标志SF符号标志ZF零标志CF进位标志AF辅助进位标志PF奇偶标志控制标志位:DF方向标志IF中断标志TF陷阱标志八、寄存器与存储器的比较:寄存器:在CPU内部;访问速度快;容量小,成本高;用名字表示;没用地址存储器:在CPU外部;访问速度慢;容量大,成本低;用地址表示;地址可用各种方式形成第三章寻址方式操作数所在位置物理地址(PA)格式注意1.立即寻址存储器的代码段无MOVAL,5只能用源操作数操作数和源操作数的长度一致2.寄存器寻址寄存器(唯一)无MOVAX,BX字节寄存器只有AHALBHBLCHCLDHDLCS不能用MOV指令改变,源操作数和目的操作数的字长一致3.直接寻址存储器段地址+位移量MOVAX,ES:[2000H]MOVAX,VALUEMOVAX,[2000H]默认的段地址存储在DS中遇到BP的段地址存储在SS可以使用段跨越前缀4.寄存器间接寻址存储器段地址+基址/变址MOVAX,[BX]MOVAX,ES:[BX]可用的寄存器:BXBPSIDI不允许使用AX、CX、DX存放偏移地址(EA)SRC和DST的字长一致使用BP时,默认的数据段是SS,其余都是DS5.寄存器相对寻址存储器段地址+基址/变址+位移量MOVAX,COU[SI]MOVAX,ES:[COU+SI]MOVAX,[COU+SI]可以使用段跨越前缀6.基址变址寻址存储器段地址+基址+变址MOVAX,[BX+SI]MOVAX,[BX][SI]可以使用段跨越前缀7.相对基址变址存储器段地址+基址+变址+位移量MOVAX,MASK[BX][SI]MOVAX.MASK[BX+SI]可以使用段跨越前缀汇编语言复习题之知识点参考基础版本九、数据传送指令传送指令MOVCPU内部寄存器之间的数据传送指令格式:MOVDST,SRC执行操作:(DST)(SRC)注意:*DST、SRC不能同时为段寄存器MOVDS,ES*DST、SRC不能同时为存储单元*立即数不能直接送段寄存器MOVDS,2000H*DST不能是立即数和CS*不影响标志位交换指令XCHG指令格式:XCHGOPR1,OPR2执行操作:(OPR1)(OPR2)例:XCHGBX,[BP+SI]XCHGAL,BH注意:*两个操作数字长一致*两个操作数都不能是段寄存器*两个操作数都不能是立即数*两个操作数不能同时是存储单元*可以采用除立即寻址方式外的任何一种寻址方式。*不影响标志位地址传送指令LEA、LDS、LES1.有效地址送寄存器指令:LEAREG,SRC执行操作:(REG)SRC2.指针送寄存器和DS指令:LDSREG,SRC执行操作:(REG)(SRC)(DS)(SRC+2)相继二字寄存器、DS3.指针送寄存器和ES指令:LESREG,SRC执行操作:(REG)(SRC)(ES)(SRC+2)相继二字寄存器、ES注意:*源操作数必须为存储器操作数*目的操作数必须是一个16位通用寄存器,不能是段寄存器*源操作数可以是除立即寻址和寄存器寻址以外的任意一种寻址方式*不影响标志位堆栈操作指令PUSH、POP1.进栈指令:PUSHSRC执行操作:(SP)(SP)–2((SP)+1,(SP))(SRC)出栈指令:POPDST执行操作:(DST)((SP)+1,(SP))(SP)(SP)+2堆栈:‘先进后出’的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。注意:*堆栈操作必须以字为单位。*不影响标志位*不能用立即寻址方式PUSH1234H*DST不能是CSPOPCS堆栈的用途:临时保存寄存器的内容。PUSHAXPUSHBXPUSHCX……;其间用到AX、BX、CXPOPCX;后进先出POPBXPOPAX汇编语言复习题之知识点参考基础版本标志操作指令LAHF、SAHF、PUSHF、POPF、CLC、STC、CMC、CLD、STD、LI、STI标志传送指令:1.标志送AH指令:LAHF执行操作:(AH)(FLAGS的低字节)2.AH送标志寄存器指令:SAHF执行操作:(FLAGS的低字节)(AH)注意:*LAHF不影响标志位*SAHF影响CF、PF、AF、ZF、SF标志进栈指令:PUSHF执行操作:(SP)(SP)-2((SP)+1,(SP))(FLAGS)标志出栈指令:POPF执行操作:(FLAGS)((SP)+1,(SP))(SP)(SP)+2注意:PUSHF和POPF经常一起联用,完成保护、维护标志寄存器的内容或改变标志位的值。标志位操作指令:清进位标志指令CLCCF←0置进位标志指令STCCF←1进位标志取反指令CMCCF←CF清方向标志指令CLDDF←0置方向标志指令STDDF←1清中断允许标志指令CLIIF←0置中断允许标志指令STIIF←1注意:*只影响本指令指定的标志十、加减法指令:加法指令:ADDDST,SRC执行操作:(DST)(SRC)+(DST)带进位加法指令:ADCDST,SRC执行操作:(DST)(SRC)+(DST)+CF加1指令:INCOPR执行操作:(OPR)(OPR)+1注意:*除INC指令不影响CF标志外,均对状态标志位有影响。各加法指令对条件标志位的影响:SF=1,结果为负ZF=1,结果为0CF=1,和的最高有效位有向高位的进位OF=1,两个操作数符号相同,而结果符号与之相反CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。减法指令:SUBDST,SRC执行操作:(DST)(DST)-(SRC)带借位减法指令:SBBDST,SRC执行操作:(DST)(DST)-(SRC)-CF减1指令:DECOPR执行操作:(OPR)(OPR)-1求补指令:NEGOPR执行操作:(OPR)-(OPR)比较指令:CMPOPR1,OPR2执行操作:(OPR1)-(OPR2)各减法指令对条件标志位(CF/OF/ZF/SF)的影响:CF=1,被减数的最高有效位有向高位的借位或CF=1减数转换为加法运算时无进位OF=1两个操作数符号相反,而结果的符号与减数相同CF位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。NEG指令对CF/OF的影响CF=0,操作数为0OF=1,操作数为-128(字节运算)或-32727(字运算汇编语言复习题之知识点参考基础版本十一、乘除运算指令无符号数乘法指令:MULSRC带符号数乘法指令:IMULSRC执行操作:字节操作数(AX)(AL)*(SRC)字操作数(DX,AX)(AX)*(SRC)注意:*目的操作数必须是累加器*AL(AX)为隐含的乘数寄存器。*AX(DX,AX)为隐含的乘积寄存器。*SRC不能为立即数。*除CF和OF外,对条件标志位无乘法指令对CF/OF的影响:MUL指令:CF,OF=00乘积的高一半为零11否则IMUL指令:CF,OF=00乘积的高一半是低一半的符号扩展11否则例:(AX)=16A5H,(BX)=0611H(1)MULBX;(DX,AX)(AX)*(BX);16A5*0611=00895EF5;(DX)=0089H(AX)=5EF5HCF=OF=1(2)IMULBL;(AX)(AL)*(BL);A5*115B*11=060BF9F5;(AX)=0F9F5HCF=OF=1无符号数除法指令:DIVSRC带符号数除法指令:IDIVSRC执行操作:字节操作(AL)(AX)/(SRC)的商(AH)(AX)/(SRC)的余数字操作(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数注意:*AX(DX,AX)为隐含的被除数寄存器。*AL(AX)为隐含的商寄存器。*AH(DX)为隐含的余数寄存器。*SRC不能为立即数。*对所有条件标志位均无定义。十二、类型转换指令CBWALAX执行操作:若(AL)的最高有效位为0,则(AH)=00H,若(AL)的最高有效位为1,则(AH)=FFHCWDAX(DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)=0000H,若(AX)的最高有效位为1,则(DX)=FFFFH例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H注意:*无操作数指令*隐含对AL或AX进行符号扩展*不影响条件标志位十三、逻辑运算指令逻辑非指令:NOTOPR*OPR不能为立即数执行操作:(OPR)(OPR)*不影响标志位CFOFSFZFPFAF00***无定义逻辑与指令:ANDDST,SRC执行操作:(DST)(DST)(SRC)逻辑或指令:ORDST,SRC执行操作:(DST)(DST)(SRC)异或指令:XORDST,SRC执行操作:(DST)(DST)(SRC)测试指令:TESTOPR1,OPR2执行操作:(OPR1)(OPR2)汇编语言复习题之知识点参考基础版本十四、移位指令逻辑左移SHLOPR,CNT逻辑右移SHROPR,CNT算术左移SALOPR,CNT(同逻辑左移)算术右移SAROPR,CNT循环左移ROLOPR,CNT循环右移ROROPR,CNT带进位循环左移RCLOPR,CNT带进位循环右移RCROPR,CNT注意:*OPR可用除立即数以外的任何寻址方式*CNT=1,SHLOPR,1CNT1,MOVCL,CNTSHLOPR,CL;以SHL为例*条件标志位:CF=移入的数值1CNT=1时,最高有效位的值发生变化0CNT=1时,最高有效位的值不变移位指令:SF、ZF、PF根据移位结果设置,AF无定义循环移位指令:不影响SF、ZF、PF、AF十五、控制转移指令:无条件转移指令JMP条件转移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ循环指令LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE子程序调用和返回指令CALL、RET中断与中断返回指令INT、INTO、IRET十六、与转移地址有关的寻址方式:用来确定转移指令及转子指令的转向地址段内寻址段内直接寻址JMPNEARPTRNEXT段内间接寻址JMPTABLE[BX