微机原理期末应急复习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开篇寄语:这些是个人一开始什么都不懂的时候的傻瓜式的总结,不知道大家有没有耐心看完,但是希望大家尽量吧,祝大家考个好成绩。
O(∩_∩)O
高手让路
“梅毒”症状严重者专用
8086寻址方式
标志寄存器说明:(1) 常用的有CF ZF SF OF PF 要牢记
(2)负零进位偶溢出=SZCPO(个人记忆小诀窍,当SZCPO F=1的时候)
(3)相关指令:CLC STC CMC CLI STI CLD STD
CF:清零置1 取反IF:清零置1 DF:清零置1
(有没有发现,CL*的就是清零,ST*的就是置1)
(4)DF=1的时候,用loop lop神马的,CX自减1 反之自增1 其它不管
常用的指令系统
一、计算类的指令:
只管记住以下这些就好了,要用就用,神马带不带进位,不理它
(1)ADD A,B A=A+B
ADC A,B A=A+B+FC
DEG A A=A-1
INC A A=A+1
SUB A,B A=A-B
SBB A,B A=A-B-CF
NEG A A=-A
CMP A,B A-B 但是不改变A或B的值,只改变标志寄存器(参考第一页)的值例MOV AL,10
CMP AL,10 (这时候标志寄存器值改变,AL>10减法无借位,则CF=0)
JZ NEXT1 (JZ指令:当CF=1的时候跳转到NEXT1处继续执行,
但CF=0,所以不跳转,直接执行下一条指令)
JNZ NEXT2 (JNZ指令:当CF=0时跳转到NEXT2处继续执行,此时
CF=0则跳转到NEXT去了)
NEXT1:XOR AX,AX
NEXT2: MOV AH,4CH
INT 21H
这条指令之所以花如此大篇幅介绍,是因为它实在太常用啦!
(2)IMUL A AX=AL*A(关键在于A的类型,如果A是字节类型的也就是8位2进
制数的时候,结果存放在AX中,如果A是字类型的16位,
高8位存在DX中,低8位放在AX中,以下相同)MUL A 同IMUL,只是IMUL做乘法的时候,符号位只要注意的,0表示负数,
1表示正数,在计算的时候要注意是否是有符号运算,但是
目前来看,我们还是比较少接触到有符号数乘法的,所以常
用MUL,希望不要考有符号数吧
IDIV A AL=AX/A的商AH=AX/A的余数(字运算的时候DX保存余数)DIV A同IDIV,这个是无符号的
二、逻辑运算指令
AND A,B A=A 与B (1+1=1 ,1+0=0 ,0+0=0 )
常用举例:AND AX,86H (86H=10000110,则其中第1、6、7位是1,和AX与之后,A的第1、6、7位不变,其他位清零了)
OR A,B A=A或B (A或B其中一个为1的时候,A=1)
常用举例:OR AX,86H (86H=10000110,则其中第1、6、7位是1,和AX或之后,A的第1、6、7位变成1,其他位不变)
XOR A,B A=A异或B (AB相同的时候A=1,不同的时候A=0)
常用举例:XOR AX,AX 一对比就知道,AX和AX自然是全部都一样,所以每位都变成0,于是AX就被清零了
TEXT A,B A 与B 置标志位,不改变A和B的值,有点类似CMP(见计算相关指
令)的功能
NOT A A按位取反,相比NEG,NEG是求相反数,NOT是1和0互换
三、串操作指令
MOVS 把DS:SI所指内容传给ES:DI,同时修改DI和SI的值(DI+1 SI+1)
CMPS DI:SI-ES:DI 置标志位,功能类似CMP,只是应用范围不一样
SCAS 把AX/AL内容和ES:DI进行比较,AX/AL-ES:DI置标志位,修改DI的值LODS DS:SI所指内容传送到AX/AL中
STOS AX/AL中的内容传送到ES:SI所指的内存中
对于以上所有指令,均没有操作数,但是每个指令后面都必须加一个字母表示类型,B 表示字节类型(参考IMUL指令说明了解字节类型,W表示字类型,例MOVSB表示传送一个字节,MOVSW表示传送一个字)
四、移位指令:
SHL/SAL
横(向传输)
SAR
起
SHR 跟SHL相反,R和L的区别
ROL
ROR 同ROL,方向改变,不解释
RCL
CF
旋(转一圈)不解释
(记忆小秘诀:发现没,“超”越)(S)旋横(RR)起跳(S)对齐一下,我就这么记的,求小鄙视 C H A O
五、其他一些常用指令
LEA BX,TABLE 把标号TABLE指示的地址存在BX中
PUSH/POP 进出栈,每执行一次PUSH,SP-2,POP则SP+2 条件转移指令指令详细见P105只要记住一个就可以记住两个,
一般是这样
说明:在执行条件转移指令之前一般都会先设置标志寄存
器(见第一页)的值
所谓设置标志寄存器的值,就是用计算让标志寄存器改变例如:CMP AX,BX这样不会影响AX和BX的值,但是会改变标志寄存器的值,相关的,加减乘除法指令(见
计算指令)都会改变标志寄存器的值,但是同时也会改变
AX的值,灵活使用起来就是可以在计算后直接使用条件转
移指令,就不需要CMP了
例:见计算相关指令CMP指令说明
汇编程序格式及相关
一、数据段:
DATA SEGMENT (AT [****h])括弧内选填,看题目要求定义变量
DATA END(反正有几个变量定义几个变量就可以结束了)关于定义变量:假如你完全不会,那么题目中有几个英文的,有几个数字,就这么写:英文字母DB 数字,?,数字DUP(?)然后稍微看一下对应一下哪个英文字母对应哪个数字,实在不行随便