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

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

相关文章

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea