x86汇编代码学习-计算机工作原理1

文章目录

  • 前言
  • 1.CPU架构
  • 2.8086寄存器
  • 3. 指令流水线
  • 4.内存模型
  • 5.总线
  • 6.硬盘
  • 7 计算机启动过程BIOS
  • 8.BootLoader
  • 9.地址映射
  • 10.为什么boot loader要放在0x7c00这个位置?
  • 11 显卡是如何显示的
  • 12.汇编指令
    • 1.环境搭建
  • 12 程序
  • 13 x86 汇编指令介绍

前言

x86汇编

详解x86汇编

1.CPU架构

x86汇编代码学习-计算机工作原理1_第1张图片

x86汇编代码学习-计算机工作原理1_第2张图片
x86汇编代码学习-计算机工作原理1_第3张图片
x86汇编代码学习-计算机工作原理1_第4张图片
x86汇编代码学习-计算机工作原理1_第5张图片
x86汇编代码学习-计算机工作原理1_第6张图片
x86汇编代码学习-计算机工作原理1_第7张图片
x86汇编代码学习-计算机工作原理1_第8张图片
x86汇编代码学习-计算机工作原理1_第9张图片
x86汇编代码学习-计算机工作原理1_第10张图片

2.8086寄存器

x86汇编代码学习-计算机工作原理1_第11张图片
x86汇编代码学习-计算机工作原理1_第12张图片
x86汇编代码学习-计算机工作原理1_第13张图片
x86汇编代码学习-计算机工作原理1_第14张图片

32位进行了简单的继承
x86汇编代码学习-计算机工作原理1_第15张图片

x86汇编代码学习-计算机工作原理1_第16张图片
x86汇编代码学习-计算机工作原理1_第17张图片
x86汇编代码学习-计算机工作原理1_第18张图片
x86汇编代码学习-计算机工作原理1_第19张图片
x86汇编代码学习-计算机工作原理1_第20张图片

3. 指令流水线

x86汇编代码学习-计算机工作原理1_第21张图片
x86汇编代码学习-计算机工作原理1_第22张图片

4.内存模型

x86汇编代码学习-计算机工作原理1_第23张图片
x86汇编代码学习-计算机工作原理1_第24张图片
x86汇编代码学习-计算机工作原理1_第25张图片
x86汇编代码学习-计算机工作原理1_第26张图片
x86汇编代码学习-计算机工作原理1_第27张图片
x86汇编代码学习-计算机工作原理1_第28张图片
x86汇编代码学习-计算机工作原理1_第29张图片
x86汇编代码学习-计算机工作原理1_第30张图片
x86汇编代码学习-计算机工作原理1_第31张图片
在这里插入图片描述
x86汇编代码学习-计算机工作原理1_第32张图片
x86汇编代码学习-计算机工作原理1_第33张图片

5.总线

x86汇编代码学习-计算机工作原理1_第34张图片
x86汇编代码学习-计算机工作原理1_第35张图片
x86汇编代码学习-计算机工作原理1_第36张图片
x86汇编代码学习-计算机工作原理1_第37张图片
x86汇编代码学习-计算机工作原理1_第38张图片
x86汇编代码学习-计算机工作原理1_第39张图片
x86汇编代码学习-计算机工作原理1_第40张图片

6.硬盘

x86汇编代码学习-计算机工作原理1_第41张图片
x86汇编代码学习-计算机工作原理1_第42张图片
x86汇编代码学习-计算机工作原理1_第43张图片
x86汇编代码学习-计算机工作原理1_第44张图片
x86汇编代码学习-计算机工作原理1_第45张图片
x86汇编代码学习-计算机工作原理1_第46张图片
x86汇编代码学习-计算机工作原理1_第47张图片
x86汇编代码学习-计算机工作原理1_第48张图片

7 计算机启动过程BIOS

第一条指令在哪里呢
主板刷BIOS

x86汇编代码学习-计算机工作原理1_第49张图片

x86汇编代码学习-计算机工作原理1_第50张图片
x86汇编代码学习-计算机工作原理1_第51张图片

8.BootLoader

x86汇编代码学习-计算机工作原理1_第52张图片
x86汇编代码学习-计算机工作原理1_第53张图片

9.地址映射

8086是16位

1MB
x86汇编代码学习-计算机工作原理1_第54张图片
地址分配
x86汇编代码学习-计算机工作原理1_第55张图片

10.为什么boot loader要放在0x7c00这个位置?

x86汇编代码学习-计算机工作原理1_第56张图片

这主要是历史遗留问题,5150支持32KB寻址
x86汇编代码学习-计算机工作原理1_第57张图片
x86汇编代码学习-计算机工作原理1_第58张图片
然后从rom里面读取指令开始执行

x86汇编代码学习-计算机工作原理1_第59张图片
x86汇编代码学习-计算机工作原理1_第60张图片
x86汇编代码学习-计算机工作原理1_第61张图片
x86汇编代码学习-计算机工作原理1_第62张图片
找到后加载到内存里面
x86汇编代码学习-计算机工作原理1_第63张图片
x86汇编代码学习-计算机工作原理1_第64张图片
x86汇编代码学习-计算机工作原理1_第65张图片
所以放在内存最后面,用完就释放。
x86汇编代码学习-计算机工作原理1_第66张图片
x86汇编代码学习-计算机工作原理1_第67张图片
x86汇编代码学习-计算机工作原理1_第68张图片

11 显卡是如何显示的

x86汇编代码学习-计算机工作原理1_第69张图片
x86汇编代码学习-计算机工作原理1_第70张图片
要让显示器显示文字,就要把内容写到现存里面去,现存很大,但是系统分配的却很少地址空间
x86汇编代码学习-计算机工作原理1_第71张图片
通过映射,来写显卡内存
x86汇编代码学习-计算机工作原理1_第72张图片

显卡也有自己的汇编指令,这些指令就可以完成切换映射地址空间的操作
x86汇编代码学习-计算机工作原理1_第73张图片
x86汇编代码学习-计算机工作原理1_第74张图片
x86汇编代码学习-计算机工作原理1_第75张图片
除了显示本身外,还有下面一个属性字节,所以需要两个字节,所以最后的代码是两个字节

x86汇编代码学习-计算机工作原理1_第76张图片

12.汇编指令

1.环境搭建

86汇编
8086汇编语言精讲

NASM编译器之下载安装使用

Nasm下载

VS Code:https://code.visualstudio.com/
Nasm:https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/
VBox:https://www.virtualbox.org/

关软件已全部上传云盘,链接: https://pan.baidu.com/s/1YN7mB5uPuIzcacS-Q-YCmg 提取码: 5ua2

安装后可以在vscode的terminal中能识别nasm,如果识别不了,设置nasm的环境PATH,重启vscode后就可以了

x86汇编代码学习-计算机工作原理1_第77张图片

代码如下

mov ax,0b800h
mov ds,ax

mov byte [0x00], '2'
mov byte [0x02], '0'
mov byte [0x04], '2'
mov byte [0x06], '4'
mov byte [0x08], 'h'
mov byte [0x10], 'e'
mov byte [0x12], 'l'
mov byte [0x14], 'l'
mov byte [0x16], 'o'
mov byte [0x18], '0'
mov byte [0x1a], '2'
mov byte [0x00], '4'

jmp $

times 510-($-$$) db 0
db 0x55,0xaa

如下图编译
x86汇编代码学习-计算机工作原理1_第78张图片
打开ORacle VM VirtualBox
x86汇编代码学习-计算机工作原理1_第79张图片
x86汇编代码学习-计算机工作原理1_第80张图片
x86汇编代码学习-计算机工作原理1_第81张图片
一步步发现没有vhd的选项,结果最后发现了
x86汇编代码学习-计算机工作原理1_第82张图片
x86汇编代码学习-计算机工作原理1_第83张图片
再次返回发现成功了,当然还要设置第一和第二选项,一定要选择提前分配
x86汇编代码学习-计算机工作原理1_第84张图片

接着打开vhd writer,下面是因为磁盘没有选择提前分配,重新创建磁盘,选择提前分配后
x86汇编代码学习-计算机工作原理1_第85张图片
选择提前分配后,终于可以了
x86汇编代码学习-计算机工作原理1_第86张图片
打开虚拟机,注意一定要 虚拟化开启
x86汇编代码学习-计算机工作原理1_第87张图片
如何开启虚拟化,重启电脑,按F2,将Disabled 改为Enabled

x86汇编代码学习-计算机工作原理1_第88张图片

12 程序

8086是16位处理器,但是数据总线却有20位
x86汇编代码学习-计算机工作原理1_第89张图片
x86汇编代码学习-计算机工作原理1_第90张图片
x86汇编代码学习-计算机工作原理1_第91张图片

x86汇编代码学习-计算机工作原理1_第92张图片
x86汇编代码学习-计算机工作原理1_第93张图片

mv ds,ax
指定数据段基准地址
x86汇编代码学习-计算机工作原理1_第94张图片

800H是因为这段地址是显卡的显存地址
x86汇编代码学习-计算机工作原理1_第95张图片
x86汇编代码学习-计算机工作原理1_第96张图片
x86汇编代码学习-计算机工作原理1_第97张图片
下面单中写法是一样的
x86汇编代码学习-计算机工作原理1_第98张图片

;开辟200字节内存空间
times 200 db 0

;开辟200字节内存空间
db 200 dup (0)


MBR 512字节
$ 代表程序的起始位置, 代表程序的起始位置, 代表程序的起始位置,代表jmp所在的位置

− - $=从开头到jmp的位置一共有多少个字节
下面这段代码是为了在最末尾添加0x55aa
x86汇编代码学习-计算机工作原理1_第99张图片
x86汇编代码学习-计算机工作原理1_第100张图片

13 x86 汇编指令介绍

x86汇编代码学习-计算机工作原理1_第101张图片
红色的表示不能传递
x86汇编代码学习-计算机工作原理1_第102张图片
x86汇编代码学习-计算机工作原理1_第103张图片
x86汇编代码学习-计算机工作原理1_第104张图片

你可能感兴趣的:(硬件,汇编,数据库)