自己动手写操作系统:1.cpu中寄存器、汇编语言及其它基础知识
来源:互联网 发布:Android悬浮窗源码 编辑:程序博客网 时间:2024/06/07 12:27
一、寄存器
16位寄存器,原来都是8位的,为了表示区分,在后面加上后缀 X 表示 extent 扩展的意思
AX accumulator 累加寄存器 AH 高八位 AL 低八位
CX counter 计数寄存器 CH 高八位 CL 低八位
DX data 数据寄存器 DH 高八位 DL 低八位
BX base 栈指针寄存器 BH 高八位 BL 低八位
BP base pointer 基址指针寄存器
SI sorce index 源変址寄存器
DI destination index 目的変址寄存器
16位的段寄存器
segment register,用于基于16位寄存器的32位寻址
ES extra segment 附加段寄存器
CS code segment 代码段寄存器
SS stack segment 栈段寄存器
DS data segment 数据段寄存器
FS segment part2
GS segment part3
32位寄存器表示
EAX ECX EDX EBX 前缀E表示 extend 扩展的意思 ,其中这些寄存器的低16位就是去掉E表示的16为的寄存器,其中高16为没有明确的名字直接使用
补充:
实模式下的寻址
若直接使用BX16为的寄存器寻址,最大的内存访问范围为 0-0xffff,也就是0-65535,最大才64K
因此使用段寄存器来增加内存访问范围,以 ES:BX 这种方式表示地址,写成 MOV AL,[ES:BX] ,表示ES*16+BX的
地址,如果把两个寄存器的值都带入0xffff,则最大的访问范围为1114095字节,也就是扩展到1M以内的地址。
事实上,不管我们指定内存什么地址都需要指定段寄存器,一般省略的话默认把 DS 作为段寄存器。
因此 我们使用 MOV CX,[1234] 实际上就是 MOV CX,[DS:1234] ,MOV AL,[SI] 实际上是 MOV AL,[DS:SI] 意思
二、汇编指令介绍
MOV 复制操作 源地址和目的地址的数据长度必须相同 可以根据现有的寄存器进行隐式转化,赋值之后保留原来寄存器中的值
ADD 加法操作
ADD SI,1 等于SI=SI+1
CMP 注:是if语句的一部分
CMP AL,0 等于 if(AL==0) 下面通常跟着一条指令作为一个整体
JE 跳转指令 相当于C中的 goto操作
三、其他相关背景知识
1.内存
超大规模的存储单元 属于外部存储区
CPU 内存管理芯片 内存
32位cpu容量很小 只有40字节左右 ,需要内存的帮助
程序实际上是放在内存中的
因此,cpu中的寄存器负责运算,而运算所需要的内容存放在内存中
能够用作存放地址值的寄存器,即能够时候[]去取出地址中值的寄存器非常有限,只有BX BP SI DI (可以看作指针变量)
可以通过关键词 BYTE WORD DWORD 来指定内存中的值的类型 ,BYTE[SI],类似于C语言中定义指针的类型
例如 把DX寄存器中值为地址的值赋值给AL不能 直接写为:
MOV AL,[DX]
正确写法:
MOV BX, DX
MOV AL, BYTE [BX]
2.BIOS
基本输入输入系统,烧写在主板的ROM中,为操作系统开发人员准备的一些基本的函数集合
通过INT可以调用一些函数
3.启动区内容的装载地址
0x00007c00 - 0x00007dff
启动区指软盘的第一个扇区,512字节,关于软驱的知识,后面再继续介绍,我们写的操作系统模拟软盘的存储结构来实现。
- 自己动手写操作系统:1.cpu中寄存器、汇编语言及其它基础知识
- 《自己动手写操作系统》 x86 寄存器介绍
- 自己动手写CPU之计算机体系基础知识
- 【汇编语言】CPU寄存器的种类
- 自己动手写CPU 笔记
- 《自己动手写cpu》读书笔记
- 自己动手写操作系统
- [转载]自己动手写操作系统
- 自己动手写操作系统(一)
- 自己动手写操作系统(二)
- 自己动手写操作系统(一)
- 《自己动手写操作系统》读书笔记
- 自己动手写操作系统(一)
- 自己动手写操作系统(二)
- 读《自己动手写操作系统》
- 自己动手写操作系统
- 《自己动手写操作系统》观感
- 自己动手写操作系统
- BZOJ 3224 洛谷 3369 【模板】普通平衡树(Treap/SBT)
- Shredding Company
- sql语句合集大全(个人总结)
- 2010-2011 ACM-ICPC, NEERC, Southern Subregional Contest E
- Xamarin.Forms 基础——Behavior+EffectBehavior
- 自己动手写操作系统:1.cpu中寄存器、汇编语言及其它基础知识
- 自定义进度条
- QT pro文件解析
- hdu 1151 Air Raid
- 阿里云服务器安装WordPress,搭建自己的博客网站
- POJ-1733Parity game
- 树状数组-随笔
- Xamarin.Forms 基础——Behavior——EventToCommandBehavior
- 二叉树的深度