当前位置:文档之家› 微机原理期末应急复习总结

微机原理期末应急复习总结

开篇寄语:这些是个人一开始什么都不懂的时候的傻瓜式的总结,不知道大家有没有耐心看完,但是希望大家尽量吧,祝大家考个好成绩。

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(?)然后稍微看一下对应一下哪个英文字母对应哪个数字,实在不行随便
二、代码段:
CODE SEGMENT
ASSUME DS:DATA,ES:DATA,CS:CODE
MIAN:MOV AX,DATA
MOV DS,AX
MOV ES,AX
设计步骤
MOV AH,4CH
INT 21H
CODE END
END MAIN
好了,以上这个是代码段的八股文部分,一定要写的,假如你完全不懂怎么设计怎么写代码,你在设计步骤那个地方,写上一些瞎编乱造的东西也好,或者你连瞎编乱造也不会,那你就随便乱写指令,神马MOV AX,英文字母啊之类的都好,多少得到点分数吧
三、宏定义
宏名(可以用任意英文字母组合,参考P128-130)
例:宏名MACRO
宏内容
ENDM
宏内容只能听天由命了
四、子程序设计
子程序名(同宏名)
例:子程序名PROC
子程序内容
RET
内容还是只能听天由命了
DOS系统功能调用(INT 21H)
MOV AH,数字X
INT 21H (表示执行第X号功能)
1号功能:输入一个字符放在AL中
2号功能:输出一个字符,字符先放进DL中
9号功能:输出一串字符,一串字符一定是存在内存中的,内存地址放在DX中,例:TABLE DB 1,2,3,4,5,6,7,8,9(假设数据
段有这个内容)MOV DX,OFFSET TABLE
MOV AH,09
INT 21H
10号功能:输入一串字符,内存地址存放在DX中,所以也要先执行MOV DX,OFFSET 标号这条指令。

换行指令:就是输出一个10
即:MOV DL,0AH
MOV AH,2
INT 21H
回车指令:就是输出一个0DH(见换行指令)
其他
ASCII码(P22)
常用的要记得的是:41H开始是大写字母41H=‘A’
61H开始是小写字母61H=‘a’
30H开始是数字30H=‘0’
回车0DH
换行0AH
补码
正数补码就是本身
负数补码,全部0换1,1换0,换好再+1
补码运算,干脆直接换成源码再计算,知道补码,反过来求源
码就好了
寄语:整理那么多,感觉自己好装逼,但是还是希望大家考好一点就好,别的也顾不了那么多了!哈哈,别到时候考完了发现自
己竟然挂科了,那就搞笑了,到时候就让大家都来鄙视我吧!心里话:作为一个留级生加入这个班级,事实上面对留级,自己挺伤心的,可是没办法,事已至此,后悔也已经太迟了。

心里话,
本来我以为我可能无法融入这个集体,可是这个班级却让我
觉得很温暖,因为很多人都帮了我很多,有时候很多很感动,
谢谢大家没有用不同的眼光看待我,谢谢大家这么照顾我。

就要和大家一起住了,心里好生鸡冻了一回,希望接下来的
两年里,能和大家开开心心地一起度过!。

相关主题