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

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

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni