虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!
目录
第1节 基本术语
微机计算机/微机/PC
单片机
单板机
第2节 微机发展历史
世界上第一台计算机——ENIAC
4004:第一款用于计算机的微处理器
8088:1981年首次用于IBM PC机,开创PC机概念
IA——Intel Architecture (X86架构)
Inter Architecture 32=I.A.32位
IA-32结构的最重要成就:向后兼容性(“冯·诺依曼”结构+I.A.规范)
IA-32结构起源能追溯到Intel 8088/8086
IA-32结构同时包括16位处理器和32位处理器
内存储器:存有数据和程序
部件之间的交互遵循I.A.规范
个人计算机的标准平台、最成功的CPU架构
其它CPU架构:ARM,MIPS,PowerPC
第3节 微机部件和结构
第4节 微机工作原理
位(bit):一个二进制位,计算机中信息存储的最小单位。
字节(byte):相邻的8个二进制位。(1024字节:1KB,1024KB=1MB,1024MB=1GB)
字(word):2字节
字长:一个字包含的二进制位数。
数字编码
- 十进制编码(BCD码)
8421BCD码:如83.123对应为1000 0011 . 0001 0010 0011
字符编码
ASCII编码
计算机的三总线模型
在微机系统中,外部信息的传送是通过总线进行的。
计算机存储器模型
①读操作
②写操作
计算机的模型——执行过程
前提:程序已经放在内存中
执行过程:取出指令和执行指令的循环,32位机采用多级流水线
机器:停机状态->运行状态
把第一条指令所在的地址赋给PC
进入取指(取出指令)阶段(指令被送到指令寄存器(IR)->译码)
第5节 汇编语言【补充】
寻址方式和指令系统
指令格式及寻址的概念
寻址方式及其应用
各类指令的表示、功能、特点
5.1节 寻址方式
立即数寻址方式 | 寄存器寻址方式 | 存储器寻址方式 |
MOV AL, 10 ;十进制数(D) MOV AL, 00100101B ;二进制数(B) MOV AX, 263AH ; 十六进制数(H) | INC SI MOV AX,BX | MOV AL, [2000H] ;AL ← PA=DSx16+ 2000 MOV AX,[SI] ;AX ← DSx10H + [SI],[SI+1] MOV BH,[BP] ;BH ← SSx10H + [BP] MOV AX, [BX+10H] ;EA=(BX)+10H MOV AX, [BX+SI] ; EA=(BX)+(SI) ; DS段 |
操作数直接存放在指令中,紧跟在操作码之后 | ①指令中直接给出寄存器名,寄存器的内容即为操作数。 ②不需要访问总线周期,因此指令执行速度比较快 ③16位操作数:AX、BX、CX、DX、SI、DI、SP、BP等。 ④8位操作数:AH、AL、BH、BL、CH、CL、DH、DL等。 | ①指令直接或间接给出有效地址EA,物理地址PA需计算 ②计算物理地址分2步,先计算有效地址EA(与寻址方式有关),再计算物理地址PA(与存放的段有关)
|
存储器寻址方式又可分为
直接寻址方式 | 寄存器间接寻址方式 | 寄存器相对寻址方式 | 基址变址寻址方式 |
MOV AL,[2000H] | MOV AX,[SI] ;AX ← DSx16 + [SI],[SI+1] MOV BH,[BP] ;BH ← SSx16 + BP MOV CX,ES:[BX]
| MOV AX, [BX+10H] | MOV AX, [BX+SI] |
①指令中直接给出有效地址EA:8位或16位位移量 ②PA = (段寄存器)X 10H +指令中的EA ③默认方式下:段寄存器是数据段DS ④段跨越:指令增加段寄存器名前缀:CS,ES,SS等
| ①操作数的有效地址EA在寄存器中。 ②对16位寻址,EA只能放在DI、SI、BX、 BP中 p若EA在DI、SI、BX中,默认段为数据段DS p若EA在BP中,默认段为堆栈段SS ③支持段跨越。
| ①给定基址/变址寄存器和相对偏移量,两者之和为EA。 ②寄存器BX、SI、DI默认是数据段DS ③寄存器BP默认堆栈段SS。 ④支持段跨越 | ①有效地址EA是基址寄存器与变址寄存器的和。 ②默认段由基址寄存器决定。 ③支持段跨越。 |
在这里推荐一个博客啊:https://blog.csdn.net/skyxmstar/article/details/70039520
讲解的挺详细哈!(立即寻址,直接寻址,间接寻址)
5.2节 指令格式
基本的汇编语言程序框架
5.3节 常用指令
数据传送:MOV的例子
MOV AL,CH | 寄存器间传送字节数据 |
MOV DS,AX | 寄存器→段寄存器 |
MOV AX,0FF3BH | 立即数→寄存器 |
MOV AL,BUFFER | 内存→寄存器 |
MOV DAT[BP+DI],ES | 段寄存器→内存 |
MOV [1000H],25 | 立即数→内存 |
MOV CX, [1000H] | 内存→寄存器 |
使用MOV指令传送数据注意事项
1)段寄存器CS及立即数不能作为目标操作数;
MOV CS, 1000 ;
2)两个存储单元之间不允许直接传送数据;
MOV [1000], [2000] ;
3)立即数不能直接传送到段寄存器;
MOV DS,1000;
4)两个段寄存器之间不能直接传送数据;(段寄存器有CS、DS、SS、ES)
MOV ES,SS
5)传送数据的类型必须匹配;
6)MOV指令不影响标志位
堆栈操作指令PUSH/POP 都是对段寄存器SS的处理
进栈指令:PUSH OPR ;SP←SP-2
出栈指令:POP OPR ;SP←SP+2
堆栈以“先进后出”的方式进行数据操作。
堆栈指针寄存器SP始终指向堆栈的栈顶单元
注:
程序中有一个PUSH,必有一个对应的POP。
地址传送指令 LEA
指令格式:LEA reg,src
指令功能:将src有效地址EA传送到16位寄存器reg中
所有有疑问的人,可以推荐一个老师给你们:
搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论里去问他!!!