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架构

在这里插入图片描述

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

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,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 汇编指令介绍

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式—结构型模式之桥接模式

设计模式—结构型模式之桥接模式 将抽象与实现解耦,使两者都可以独立变化。 在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不…

R语言 PPT 预习+复习

什么狗吧发明的结业考&#xff0c;站出来和我对线 第一章 绪论 吊码没有&#xff0c;就算考R语言特点我也不背&#xff0c;问就是叫么这没用。 第二章 R语言入门 x<-1:20 赋值语句 x 1到20在x上添加均值为0、标准差为2的正态分布噪声 y <- x rnorm (20, 0, 2) 这…

【Matplotlib】plt.plot() X轴横坐标展示完整整数坐标

比如说&#xff0c;我的数据应该是 x轴从2到21的20个整数 y轴对应值 但是直接plot的话x轴显示居然有小数点什么鬼 可以这样改

2022年电工杯数学建模B题5G网络环境下应急物资配送问题求解全过程论文及程序

2022年电工杯数学建模 B题 5G网络环境下应急物资配送问题 原题再现&#xff1a; 一些重特大突发事件往往会造成道路阻断、损坏、封闭等意想不到的情况&#xff0c;对人们的日常生活会造成一定的影响。为了保证人们的正常生活&#xff0c;将应急物资及时准确地配送到位尤为重要…

二十、泛型(2)

本章概要 泛型接口泛型方法 变长参数和泛型方法一个泛型的 Supplier简化元组的使用一个 Set 工具 泛型接口 泛型也可以应用于接口。例如 生成器&#xff0c;这是一种专门负责创建对象的类。实际上&#xff0c;这是 工厂方法 设计模式的一种应用。不过&#xff0c;当使用生成…

5.网络之IP

IP协议&#xff08;网络层&#xff09; 文章目录 IP协议&#xff08;网络层&#xff09;1. 报文格式2. IP地址2. 地址管理3. 特殊IP地址 IP协议&#xff08;Internet Protocol&#xff0c;互联网协议&#xff09;&#xff0c;是TCP/IP协议栈中最核心的协议之一&#xff0c;通过…

大语言模型研究进展综述

1、历史 自20世纪50年代图灵测试被提出以来&#xff0c;研究人员一直在探索和开发能够理解并掌握语言的人工智能技术。 作为重要的研究方向之一&#xff0c;语言模型得到了学术界的广泛研究&#xff0c;从早期的统计语言模型和神经语言模型开始&#xff0c;发展到基于Transform…

Linux CentOS配置阿里云yum源

一&#xff1a;先备份文件&#xff0c;在配置失败时可以恢复 cd /etc/yum.repos.d mkdir back mv *.repo back 二&#xff1a;下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.…

Linux下使用vscode编写Python项目

我此处是使用VScode远程连接的服务器&#xff0c;具体方法可看如下&#xff1a; 1、vscode中安装Python插件 按上面步骤安装好Python插件后&#xff0c;重启vscode&#xff1b; 2、选择Python解释器 创建Python项目结构&#xff1a; 按下F1&#xff0c;打开vscode命令栏&am…

zotero跨Windows设备数据同步(利用OneDrive、百度云同步空间等云服务)

zotero跨Windows设备数据同步&#xff08;利用OneDrive、百度云同步空间等云服务&#xff09; 特别注意 不能在多个设备同步使用zotero&#xff0c;否则会导致同步出现异常。 基本原理 同步zotero的数据&#xff0c;即同步全部的文献和笔记、高亮标记信息。而这两类数据分别…

Git介绍及使用

目录 一、Git 的基本概念 1. 仓库&#xff08;Repository&#xff09;: 仓库是存储代码的地方。可以通过 命令将本地文件夹初始化为 Git 仓库&#xff0c;并使用 命令从远程仓库克隆到本地 2. 分支&#xff08;Branch&#xff09;: 分支是指从主分支上创建出来的一个分支&…

QQ邮箱批量发送

场景 已有用户邮箱,需要批量对他们发送一些广告信息。 完整代码 # coding=gbk import smtplib import csv from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipartdef send_email(msg_from, passwd, msg_to_list, text_content)

【QT】QT自定义C++类

在使用Qt的ui设计时&#xff0c;Qt为我们提供了标准的类&#xff0c;但是在很多复杂工程中&#xff0c;标准的类并不能满足所有的需求&#xff0c;这时就需要我们自定义C类。 下面以自定义的QPushButton作一个很简单的例子。 先新建默认Qt Widgets Application项目 一、自定义…

机器学习中的嵌入:释放表征的威力

简介 机器学习通过使计算机能够从数据学习和做出预测来彻底改变了人工智能领域。机器学习的一个关键方面是数据的表示&#xff0c;因为表示形式的选择极大地影响了算法的性能和有效性。嵌入已成为机器学习中的一种强大技术&#xff0c;提供了一种捕获和编码数据点之间复杂关系的…

二维码智慧门牌管理系统全新升级:个性化配置,智能管理,让你的社区更安全!

文章目录 前言一、个性化配置功能的升级二、智能化管理和便捷性 前言 随着科技的飞速发展&#xff0c;智能化管理已经成为各个领域的标配。在社区管理方面&#xff0c;智能化的优势在便捷性、高效性和安全性方面得到了广泛认可。最近&#xff0c;二维码智慧门牌管理系统经过全…

SpringBoot整合JUnit

1.创建新项目 说明&#xff1a;创建springboot_04_junit项目&#xff0c;选择对应的版本。 2.接口类 说明&#xff1a;新建BookDao接口。 package com.forever.dao;public interface BookDao {public void save(); }3.实现类 说明&#xff1a; 新建BookDaoImpl实现类。 pa…

npm发布自己的包

npm发布自己的包 1. 首先在npm官网注册一个自己的账户(有账号的可以直接登录) 注册地址 2. 创建一个自己的项目(如果已有自己的项目, 跳过这一步) npm init -y3. 确认自己的npm下载源, 只能使用npm官方的地址 npm config get registry修改地址源 npm config set registr…

洛谷P1102 A-B数对 详细解析及AC代码

P1102 A-B数对 前言题目题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码经典二分&#xff08;O(nlgn)&#xff09;酷炫哈希&#xff08;O(n)&#xff09; 后话额外测试用例样例输入 #2样例输出 #2 王婆卖瓜 题目来源 前言 酷&…

DASCTF X CBCTF 2023|无畏者先行

前言 笔者没有参加此次比赛&#xff0c;由于团队后面会复现此次比赛&#xff0c;所以笔者在此进行复现记录。 EASYBOX 考点&#xff1a;命令执行&#xff1f; 栈溢出 附件给了 docker 环境&#xff0c;可以直接在本地复现&#xff0c;但是 docker 我不会调试&#xff0c;幸…

11.Z-Stack协议栈使用

f8wConfig.cfg文件 选择信道、设置PAN ID 选择信道 #define DEFAULT_CHANLIST 0x00000800 DEFAULT_CHANLIST 表明Zigbee模块要工作的网络&#xff0c;当有多个信道参数值进行或操作之后&#xff0c;把结果作为 DEFAULT_CHANLIST值 对于路由器、终端、协调器的意义&#xff1…