南邮微型计算机原理与接口技术复习笔记
南邮微型计算机原理与接口技术复习笔记
1-4章
1.没有-0的补码,8位二进制时-128的补码就是1000 0000
2.补码的补码等于原码
3.(x+y)补=x补+y补
4.溢出:运算结果超出了运算器所能表示的范围
5.CPU判溢:如加数与被加数的最高位相同,却与结果的最高位相异,则将溢出标志置为1
6.程序员判溢:
如果参与运算的数是无符号数,则判进位标志,进位标志=1,表示溢出错;
如果参与运算的数是有符号数,则判溢出标志,溢出标志=1,表示溢出错。
7.变质寻址中,比例因子只能是1、2、4、8中的一个数
8.对于MOV指令,立即数不能直接送段寄存器;
不允许在两个段寄存器之间传送数据
9.对各操作指令是否影响标志位的总结:
(1)传送指令(MOV、LEA等):不影响
(2)堆栈指令(PUSH、POP):POPF影响,其他不影响
(3)算数指令
1)加法指令:影响6个(INC不影响C标志)
2)减法指令:影响6个(DEC不影响C标志)
3)求补指令:影响6个
4)比较指令:影响6个
5)乘法指令:影响O、C标志
6)除法指令:不影响
7)BCD码调整指令:影响(具体影响位见第10点内)
(4)逻辑运算指令:
1)逻辑运算(AND、OR、NOT、XOR、TEST)除NOT不影响标志位外,均影响OSZPC标志(即除A标志外,并且其中O、C置0)
2)一般移位指令(SHL、SAL、SHR、SAR)均影响OSZPC(即除A标志外)
3)循环移位指令(ROL、ROR、RCL、RCR)均只影响O、C标志
(5)转移和调用指令:不影响
10.需要掌握的指令集
一.传送类指令
(1)通用传送
1)数据传送MOV
2)地址传送LEA
3)交换指令XCHG
4)查表指令XLAT(查找的是数据段中的字节表,EBX/BX=表头有效地址,AL=元素对表头偏移地址)
(2)堆栈指令(操作数必须是字或者双字。
SP指向的是最后推入堆栈的信息的所在单元,注意进栈时SP向低位移动,即向低地址方向延伸。
入栈时先入高位后入低位,出栈时相反)
1)进栈PUSH
2)出栈POP
3)标志寄存器出入栈PUSHF/POPF
4)通用寄存器保护现场PUSHA/POPA
二.算数运算指令
1)加法ADD、ADC、INC(INC将操作数视为无符号数,不影响C标志)
2)减法SUB、SBB、DEC(同上)
3)求补指令NEG(即求负数)
4)比较指令CMP(同SUB,但不保存结果)
5)乘法指令MUL(无符号乘法,隐含目的操作数DX、AX,源操作数不能是立即数)、IMUL(带符号乘法,隐含目的操作数DX、AX,源操作数不能是立即数)
6)除法指令DIV(无符号除法,同上)、IDIV(有符号除法,同上)
7)BCD码调整指令:
加法:DAA(组合BCD,影响除O标志外的标志位)、AAA(未组合BCD,只影响A、C标志位)
减法:DAS(组合BCD,影响除O标志外的标志位)、AAS(未组合BCD,只影响A、C标志位)
乘法:AAM(未组合BCD,只影响P、S、Z标志位)
除法:AAD(未组合BCD,只影响P、S、Z标志位)
三.逻辑运算指令
(1)逻辑运算指令
逻辑与AND、逻辑或OR、逻辑非NOT、逻辑异或XOR、测试TEST(进行AND运算,但结果不送入目标操作数)
(2)移位指令:书P101
四.转移和调用指令
(1)无条件转移JMP
(2)条件转移(括号内为转移条件)
1)单个条件标志:JZ/JNZ、JS/JNS、JO/JNO、JP/JNP、JCXZ(CX=0转移)
2)无符号数大小比较(前跟CMP):JC(小于)/JNC(不小于)、JA(大于)/JNA(不大于)
3)有符号数大小比较(前跟CMP):JL(小于)/JLE(不小于)、JG(大于)/JGE(不大于)
(3)循环控制转移
1)LOOP:CX不等于0转移
2)LOOPZ/LOOPE:CX不等于0且Z=1转移
3)LOOPNZ/LOOPNE:CX不等于0且Z=0转移
(4)子程序调用CALL/返回RET(注意子程序定义格式PROC/ENDP)
调用时可以间接转移,如BX存储转移地址
注意调用时将IP存于堆栈段
带返回参数的RET EXP:即释放多余的参数占用的堆栈空间(见第三章PPT第170页)
五.串操作指令
(1)串传送:把DS:[SI]的若干元素→ES:[DI]的若干单元 MOVSB/MOVSW/MOVSD(传送一个元素后CPU自动修改SI、DI,D标志为0时SI、DI自增,D标志为1自减)
有重复前缀的格式:如REP MOV