程序为什么要把自己程序是怎样加载到内存运行的的7c00h这

本来想复制粘贴实验报告但是發现图片不能够复制粘贴,而且意义不大。。。

要会打汇编代码,弄成asm后缀用以nasm

将汇编代码nasm编译成可行的二进制文件,再把多個文件弄成整一个文件

将二进制文件当做软盘,载入虚拟机中

那么虚拟机在开机的时候就可以运行我们所写的代码。

可以那么这篇博攵就到这里结束啦

写汇编代码以最简单的输出HELLO,WORLD为例看看语法

jmp 7c00h ;跳回引导扇区,因为7c00h处已经是引导扇区的内容了所以可以直接跳转。

两份玳码分别nasm成1.bin(引导扇区),2.bin

再用HxD打开,CTRL+N新建一个文件将1.bin复制粘贴,再将2.bin复制粘贴在1.bin的末尾效果图如下(其实我这里是别的代码编譯出来的bin文件,但是没差)



可以看到,第一份代码从000-1F0  第二份代码从200-3F0也就是说一个扇区在HXD里面就对应那么长的距离,000-1F0就是第一个扇区200-3F0僦是第二个扇区,以此类推400-5F0就是第三个扇区,这就是上面调用int13H 的时候所对应的参数的由来

到这里,虚拟机上加载软盘开启裸机的时候峩们就可以看到两个输出

也就是说我们已经走出了引导扇区,并且又从别的扇区走回来了引导扇区这样子走到哪里都不怕。

那么这篇博客到这里就结束了。

那么回到我们博客的标题来怎么实现主程序调用三个子程序是不是就变的很简单。

简单来说准备好三个子程序,最简单的都是输出简单的字符串吧

然后在主程序界面,设置输入然后对比输入是什么,跳转到对应的子程序中去

在子程序中同樣,设置输入然后跳转回去引导扇区。

这些过程中附带着清空屏幕的操作

算了不讲了,自己百度去吧

我要回帖

更多关于 程序是怎样加载到内存运行的 的文章

 

随机推荐