x86汇编代码学习

编程入门 行业动态 更新时间:2024-10-25 16:26:30

x86汇编<a href=https://www.elefans.com/category/jswz/34/1771412.html style=代码学习"/>

x86汇编代码学习

文章目录

  • 前言
  • 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架构









2.8086寄存器




32位进行了简单的继承





3. 指令流水线


4.内存模型












5.总线







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:/
Nasm:.15.05/
VBox:/

关软件已全部上传云盘,链接: 提取码: 5ua2

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

代码如下

mov ax,0b800h
mov ds,axmov 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 汇编指令介绍


红色的表示不能传递


更多推荐

x86汇编代码学习

本文发布于:2023-11-16 06:52:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1614117.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!