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

前言

x86汇编

详解x86汇编

1.CPU架构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.8086寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

32位进行了简单的继承
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 指令流水线

在这里插入图片描述
在这里插入图片描述

4.内存模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.总线

在这里插入图片描述
在这里插入图片描述
a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.硬盘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7 计算机启动过程BIOS

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8.BootLoader

在这里插入图片描述
在这里插入图片描述

9.地址映射

8086是16位

1MB
在这里插入图片描述
地址分配
在这里插入图片描述

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

在这里插入图片描述

这主要是历史遗留问题,5150支持32KB寻址
在这里插入图片描述
在这里插入图片描述
然后从rom里面读取指令开始执行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到后加载到内存里面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以放在内存最后面,用完就释放。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11 显卡是如何显示的

在这里插入图片描述
在这里插入图片描述
要让显示器显示文字,就要把内容写到现存里面去,现存很大,但是系统分配的却很少地址空间
在这里插入图片描述
通过映射,来写显卡内存
在这里插入图片描述

显卡也有自己的汇编指令,这些指令就可以完成切换映射地址空间的操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除了显示本身外,还有下面一个属性字节,所以需要两个字节,所以最后的代码是两个字节

在这里插入图片描述

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后就可以了

在这里插入图片描述

代码如下

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

如下图编译
在这里插入图片描述
打开ORacle VM VirtualBox
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一步步发现没有vhd的选项,结果最后发现了
在这里插入图片描述
在这里插入图片描述
再次返回发现成功了,当然还要设置第一和第二选项,一定要选择提前分配
在这里插入图片描述

接着打开vhd writer,下面是因为磁盘没有选择提前分配,重新创建磁盘,选择提前分配后
在这里插入图片描述
选择提前分配后,终于可以了
在这里插入图片描述
打开虚拟机,注意一定要 虚拟化开启
在这里插入图片描述
如何开启虚拟化,重启电脑,按F2,将Disabled 改为Enabled
在这里插入图片描述

在这里插入图片描述

12 程序

8086是16位处理器,但是数据总线却有20位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

mv ds,ax
指定数据段基准地址
在这里插入图片描述

800H是因为这段地址是显卡的显存地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面单中写法是一样的
在这里插入图片描述

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

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


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

− - $=从开头到jmp的位置一共有多少个字节
下面这段代码是为了在最末尾添加0x55aa
在这里插入图片描述
在这里插入图片描述

13 x86 汇编指令介绍

在这里插入图片描述
红色的表示不能传递
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值