大灰狼汇编视频的启动程序编写的笔记

2023-11-02 06:10

本文主要是介绍大灰狼汇编视频的启动程序编写的笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

主要内容

 

开发环境搭建

认识引导程序

nasm汇编

编写第一个启动程序

 

一、开发环境的搭建

我们将使用两种虚拟机Visual PC2004和VMware

Visual PC2004是微软推出的虚拟机软件我们用它来启动我们自己编写的启动程序

VMware虚拟机软件,我们在上面安装Linux。利用nasm汇编器在linux上进行启动程序的编译工作

 

启动程序演示

让Visual PC打开我们自己编写好的启动盘镜像文件,让虚拟机从我们编写的软盘镜像中启动

 

二、知识预备

理解计算机加电过程

BIOS对系统内存的分配

认识引导程序的概念

使用nasm进行编译

制作软盘镜像

 

1.计算机加电过程

当我们按下电源按钮后,计算机是如何从无到有将操作系统运行起来的?

按下开机按钮后,将发送电信号给BIOS

BIOS获得电信号后将启动自检查程序,检查周边设备是否通电完毕

检查完毕后自检程序把控制权交还BIOS,BIOS将读取引导驱动器中的启动程序

2.系统的内存安排

在系统加电时最初的1MB内存是BIOS为我们准备好的,它的分布情况如图

 

 

三、认识引导程序

什么样的程序才能成为引导程序?

BIOS将所检查启动磁盘的第一个扇区521字节载入内存,放于内存0x0000:0x07c00处

如果第一扇区最后两个字节是55AA那么它就是一个引导程序

 

引导程序的特点:

它的大小是512字节,不能多也不能少因为BIOS只读512B到内存中

它结尾必须是55AA,这是引导扇区的标志

它总是放在磁盘第一个扇区上(0磁头0磁道1扇区)因为BIOS只读取第一个扇区

 

四、nasm汇编

nasm是一个为可移植性与模块化而设计的一个80X86的汇编器。它支持相当多的目标文件格式包括linux和windows

 

如何用nasm编写一个引导程序?

什么是nasm它和masm有什么区别?

nasm拥有一个相当简单的内存引用规则,是任何对内存中内容的存取操作必须要在地址上加上方括号。但任何对地质值的操作不需要

 

比如‘mov ax,bar’的指令表示把bar的地址赋给ax寄存器,这相当于masm中mov  ax,offset bar要获得bar变量的值mov ax,[bar]

masm mov ax,es:di = nasm mov ax,[es:di]

 

 

如何在linux下安装nasm?

 

如何用nasm编译自己编写的汇编代码?

 

这篇关于大灰狼汇编视频的启动程序编写的笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328655

相关文章

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于