【为了更好地理解地址和微机原理】
计算机是一门交叉学科,一部分知识会连带着其他相关内容,让人无头绪。①没通过基本检测点,不要往下学习。②没有完成当前实验,不要向下学习
Object: 深入理解机器工作基本原理 && 培养底层编程意识和思想
第一章:基础知识
每一种微处理器(Central Processing Unit),由于硬件设计和内部结构差异,拥有特异的机器指令集,即机器语言
编译器Compiler:将汇编指令翻译成机器指令的程序
内存Memory:存储着让CPU工作的指令和数据
About instruction and data:
都是Binary information, CPU的解读不同罢了
存储单元:
CPU所能处理的最小单元,以Byte为单位。其编号为 0 ~ (2^n– 1)
|
|
地址信息:找到reador write对应的位置
CPU有n根地址线,则该CPU地址总线宽度为n,最多寻找2^n个存储单元
(32位,64位) 【1位对应2个地址】
数据信息:所要读写的数据
【8位对应一个字节】
控制信息:器件的选择,读或写
控制总线的宽度决定了CPU对外部器件的控制能力
随机存储器 Random Access Memory(RAM):重启后清零
只读存储器Read-Only Memory(ROM):一直存在
BIOS:由主板和各接口卡厂商提供的软件系统
从CPU角度思考,所有存储器的存储单元处于一个统一的逻辑存储器中,其容量受CPU寻址能力的限制
判断微机性能的主要标志:
(当某因素不再是限制性能的主要因素时,再多便是多余)
1. 字长
字长是微处理器一次可以直接处理的二进制数据的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。
2、主频
主频也叫做时钟频率,用来表示微处理器的运行速度。 单位: GHz
3、运算速度
MIPS是Millions ofInstruction Per Second的缩写,用来表示微处理器的性能,意为每秒钟能执行多少百万条指令。
4、主存容量
主存储器所能存储的信息总量称为主存容量。主存容量一般以字节为单位。一般指内存
第二章:寄存器
CPU中有运算器,控制器,寄存器
通用寄存器:
AX,BX, CX, DX
|
|
(x64兼容x86的原因?)
十六进制: FFFF H或 0xFFFF (16位)
Mov 赋值, add 自加,sub自减 操作对象必须位数相同,一一对应
逻辑存储空间是一维线性空间,每个存储单元有唯一的地址,即物理地址
64位结构:
·运算器每次最多处理64位数据
·寄存器最大宽度为64位
·寄存器和运算器之间的通路为64位
物理地址= 段地址 * 16 + 偏移地址
(本质:基础地址+ 偏移地址)
段Segament:CPU管理内存的划分
CS (代码段寄存器): IP(指令指针寄存器):指示CPU当前需读取指令的地址
jmp AX:BX 将AX的值赋给CS,将BX的值赋给IP
8086机中,任意时刻CPU讲CS:IP指向的内容当作指令执行. 即此时的数据当指令处理
读取一条命令A后,IP自动增加到下一条顺序指令B的地址,然后执行A
实验1:使用DEBUG
R读写寄存器(register)
D查看内存
(解读:最左列为起始地址,中间为后续的每个地址对应的内容,右边为Ascii)
段地址:起始偏移地址 末尾偏移地址
E改写内存
U将特定内存单元的内容翻译为汇编指令
T执行CS:IP指向的 指令
A以汇编的形式向内存写入指令(assembly)
Q退出
(注意:通用寄存器和CS/IP的变化)
第三章寄存器(内存访问)
通常的地址,指数据的起始地址
内存单元,是字节单元
如:一个int类型数据在内存中的表示,即00 12 4E 20H (高位地址,对应高位数据)
CPU要读写一个内存单元时,需先得到其地址,DS则是存储段地址的寄存器
(8086不允许将数据直接赋值给DS,需要用通用寄存器中转,由于硬件设计)
这是对内存的读取,而不是改变CS:IP对指令读取!
[0]表明,以DS寄存器的地址为段地址,0为偏移地址的物理地址
对地址的操作,总需要寄存器为媒介, ∵寄存器的数据是安全的?
mov ax,1000
mov ds,ax
mov ax,[0]
假定ax是16位寄存器,则ax会读取1000:0000和1000:0001地址单元的数据
add sub mov小结:
容器(寄存器/内存单元) & 数据
附录: