8086 Intel系列16位处理器,地址总线20位
寄存器
AX Acummulator Register 基础寄存器
BX Base Register 基础寄存器
CX Count Register 计数寄存器
DX Data Register 记址寄存器
CS Code Segment Register 代码段寄存器
IP Instruction Pointer Register 指令指针寄存器
字长16位,则说16位寄存器
位宽:外部数据总线与内存之间一次能传输的数据位数
8086 16位CPU (字长16位,位宽16位)
80386SX 准32位CPU (字长32位,位宽16位)
pentium 超32位CPU (字长32位,位宽64位)
ISA
指令及体系结构:支持的指令和指令的字节编码
Instruction Set Architecture
IA32指令集,俗称X86
不同CPU差异
通用寄存器
AX AH、AL
BX BH、BL
CX CH、CL
DX DH、DL
一个字由两个字节组成,可以存在一个16位寄存器中。字的高8位 → 存放于通用寄存器的高8位寄存器
字的低8位 → 存放于通用寄存器的低8位寄存器。
mov,add指令中,两个操作的对象位数应一致
mov ax,bl 错误 ax16位,bl8位
mov al,2000 错误 al8位,溢出
例1
设(AX) = 8226H, (BX) = 8226H
执行ADD AX, BX后, 求(AX)
8 2 2 6 H
+ 8 2 2 6 H
1 0 4 4 C H
例2
设(AX) = 00C5H
执行ADD AL, 93H后,求 (AX)
C 5 H
+ 9 3 H
1 5 8 H
8086的16位寄存器无法直接表示20位物理地址
寄存器16位,但物理地址20位
解决方法:用两个16位地址合成一个20位的物理地址
8086在内部用两个16位地址 通过计算合成得到一个20位的物理地址。
计算合成由CPU内部的地址加法器实现。
基础地址 × 16 + 偏移地址 = 物理地址
123CH × 16 + 0008H = 123C8H
起始物理地址是: 123C0H
1230CH × 16 + 00C8H = 123C8H
起始物理地址是: 12300H
段的概念:将地址连续、起始物理地址为16倍数的一组内存单元(不超过64KB)当作一个「段」使用。
1「段地址: 偏移地址」 也称「逻辑地址」
2「段地址 × 16 」 构成段的起始物理地址,故根据需要划分段使用时,段的起始物理地址必须是16的倍数。
一个物理地址可以用不同的「段地址: 偏移地址」表示。只要满足段的起始物理地址是16的倍数。
物理地址: 123C8H
段地址: 偏移地址 1230:00C8 或 123C:0008
CS: 代码段段寄存器,用于存放代码段的「段地址」
IP: 指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。
CS:IP对应的物理地址存放的是CPU将要读取的指令。
(CS) × 16 + (IP) → 指令的物理地址
原文:https://www.cnblogs.com/zyx20171346065/p/9697176.html