微机原理与接口技术总结笔记(一)
2019-06-06
课程复习笔记
由于课程限制,所学都是16位8086处理器(IA-32实地址模式)的相关知识。
IA-32处理器架构
数据类型
-
整型数据分为有符号和无符号,其中有符号数全部以补码表示。补码和原码之间转换方法为:取反加一。
名称 位数 无符号数范围 有符号数范围 BYTE(DB) 8 0~255(2^8-1) -128~+127 WORD(DW) 16 0~65535(2^16-1) -32768~+32767 -
浮点数:遵从IEEE754标准,由于课程限制省略了
-
二进制与十进制的转换问题
- 如果是负数,需要先将补码转换为原码,再对无符号部分进行转换。
-
指针类型
- 近指针:16位段内偏移(有效地址)
- 远指针:16位段地址+16位段内偏移
-
字符(ASCII码)重要的如下:
- CR - 0DH; LF - 0AH; 0 - 30H; A - 41H; a - 61H
工作模式
- 实地址模式 相当于一个8086,16位的处理器。系统启动后首先进入的模式,没啥限制。学习的主要模式。
- 保护模式 拥有执行特权级别的模式,能够限制核心指令的执行,在实地址模式后进入的模式
- 虚拟8086模式 在保护模式下,隔离出多个执行环境,运行多个实地址模式下的程序。
- 系统管理模式 管理系统的模式,比如管理电源、外围设备等
- IA-32e模式,32位兼容模式或64位模式
实地址模式(8086)特性
-
最大存储(内存)空间:1MB,按字节BYTE编址。1MB存储被分为若干段,每段常为64KB大小。
-
大端/小端存储
- 小端存储:数据的低字节存放在低地址,例如一个WORD 1234H存放在首地址100H,存储为(100H)=34H, (101H)=12H,8086采用此种存储;
- 大端正好相反;
-
逻辑存储地址和物理存储地址
-
逻辑存储地址:段基址+段内偏移地址。
-
物理存储地址:数据在内存空间中的线性地址。
-
转换:逻辑存储地址的段地址左移4位,加上偏移地址,就得到了物理存储地址。
如段地址6417H,偏移0100H,物理地址为:$6417H\times10H+0100H=64270H$
-
-
边缘对齐
- 数据占N个BYTE,其存放的起始地址就是N的倍数,这样便于CPU取值。
- 简单地说就是WORD类型的起始BYTE存放在偶数位,DWORD类型存放在4的倍数位。
8086寄存器
- 默认都是16位
- 通用寄存器
- AX, BX, CX, DX可以拆分为高低8位;BP, SI, DI, SP不能拆分;
- AX:作为端口访问指令的数据存放寄存器;INT命令的操作数。
- DX:作为端口访问指令的地址存放寄存器
- SP:堆栈指针寄存器,和栈操作指令相关。栈从高地址向低地址生长,即PUSH会造成SP减。
- 可作基址BASE:BX, BP
- 可做变址INDEX:SI, DI
- DX+AX:乘除法扩位表示32位
- 段寄存器
- 代码段CS,数据段DS,堆栈段SS,附加数据段ES;前3个是默认情况下的段地址。
- 指令指针寄存器IP,只想下一条指令的偏移量
- FLAG寄存器
- 运算状态
- OF:溢出标志,有符号数的算数运算超出有效范围置1;判断:两相同符号的数字相加符号改变。
- SF:符号标志,若有符号数的运算结果为负数;
- ZF:零标识符,若运算结果为0;
- AF:辅助进位,若BCD码运算时低4位向上进位或借位;
- PF:奇偶标志,若运算结果低8位有偶数个1;
- CF:进位标志,若无符号数向最高位进位或借位;
- 控制标志
- DF:串操作方向
- IF:中断允许,若CPU可以响应中断请求。STI使IF=1;CLI使IF=0;
- 运算状态
寻址方式
-
立即寻址
MOV AX,1234H; (AX)=1234H
-
寄存器寻址
MOV AL,CL;(AL)=(CL)
-
存储器寻址
将数据放在存储器中,通过有效地址(EA)访问,其公式为$EA=基址+变址+位移$;基址必须由基址寄存器提供,变址必须由变址寄存器提供;EA作为偏移地址,结合段寄存器作为逻辑地址就可以访问存储器了,具体方法见此。
-
直接寻址
MOV AX, [1234H]; EA=1234H
-
寄存器间接寻址
MOV BL, [AX]; EA=(AX) MOV BL, ES:[AX]; EA相同,但是使用ES作为段寄存器
-
基址寻址
MOV BL, [BP+10H]; EA=(BP)+10H MOV BL, 10H[BP];和上面一样
-
变址寻址
MOV AX, [SI+10H]; EA=(SI)+10H
-
基址变址寻址
MOV AX, [BP][SI+10H]; EA=(BP)+(SI)+10H
-
-
端口寻址
通过端口访问外设的寻址方式,AL/AX存数据,DX存地址
MOV DX, 3FCH MOV AL, 60H OUT AL, DX
-
跳转寻址
-
跳转分为
SHROT
8位,NEAR
在同一段内,FAR
在另一段内三种类型,可以不指定(不写),编译器会自己分辨;指令存储为4BYTE,其中低2BYTE为IP,高2BYTE为CS。 -
段内直接寻址
PROG: ADD AL, 05H JMP SHORT PROG ; 跳转到PROG
-
段内间接寻址
JMP BX ; 跳转到(BX)
-
段间间接寻址
JMP FAR PTR [SI+0126H] ; EA=(SI)+0126H,取4BYTE
-