首页 > 代码库 > 启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现)

启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现)

编程:启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现)

汇编语言编写:   

         

boot.asm启动程序代码:     

         ;我们的启动程序实现很简单的功能在屏幕中央

         ;打印一行字符串

org 07c00h   ;org指令明确告诉编译器我程序开始地址是07c00h,而不是

             ;原来的00000

;int汇编指令 int 10h

             

     mov ax,cs

     mov es,ax

             mov bp,msgstr  ;es:bp  ;指向的内容就是我们要显示的

                            字符串的地址

             mov cx,12     ;字符串长度

     mov dh,12      ;显示的行号

     mov dl,36      ;显示的列号

     mov bh,0       ;显示的页数

     mov al,1       ;显示的是串结构

     mov bl,0ch     ;显示字符属性 黑底红字

     mov ah,13h     ;明确调用13h子程序

             msgstr: db "hello my osi"

     int 10h

     times 210-($-$$) db 0   ;重复N次每次填充值为0

     dw 55aah

     jmp $    ;不断跳转到当前位置是个死循环。注:$是当前地址。

汇编运行环境图例:

     启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

虚拟机系统:red hat linux运行环境下编写c语言代码实现:

     

     将自己已经编译好的汇编boot.asm启动程序载入虚拟机中,在虚拟机中写入c语言代码实现boot.bin的512B启动程序拷贝。

#include<stdio.h>

#include<fcnt1.h>

#include<sys/types.h>

#include<sys/stat.h>

int main(int argc,char *argv[])

{

            int fd_source;

            int fd_dest;

            int read_count = 0;

           char buffer[512]={0};

            fd_source=open("boot.bin",0_RDONLY);

            if(fd_source<0)

           {

                            perror("open boot.bin error:");

                           return 0;

            }

           fd_dest=ope("virtual_floppy.vfd",0_RWONLY);

            while ((read_count=read(fd_source,buffer,512))>0)

           {

                       write(fd_dest,buffer,read_count);

                       memset(buffer,0,512);

            }

                printf("write image ok!");

                return 0;

}

    

操作步骤图例:


第一步:将我们在汇编写好的空白boot启动镜像加载

      接下来,我们在输入此命令准备写入c语言代码

      启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

 

第二步:我们有了c语言基础,那么我们开始将512B的boot.bin的启动程序开始进行拷贝


启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

 

第三步:好了,我们已经将boot.bin写好了

启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

 

启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

 

用winImage启动下我们编写好的程序。


启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) - 文豪 - WELCOME MY BLOG.

 

        

                                                                 作者注明:刚学习汇编,请大牛勿喷!!!


本文出自 “努力奋斗,互相提高” 博客,请务必保留此出处http://c10086.blog.51cto.com/6433044/1414030