【OS学习笔记】二十二 保护模式六:保户模式下操作系统内核如何加载用户程序并运行 对应的汇编代码之用户程序
发布日期:2021-07-01 00:05:45
浏览次数:3
分类:技术文章
本文共 2887 字,大约阅读时间需要 9 分钟。
本汇编代码对应文章:中的实际用户程序代码。
- 对应的主引导扇区代码:
- 对应的内核代码:
;代码清单13-3 ;文件名:c13.asm ;文件说明:用户程序 ;===============================================================================SECTION header vstart=0 program_length dd program_end ;程序总长度#0x00 head_len dd header_end ;程序头部的长度#0x04 stack_seg dd 0 ;用于接收堆栈段选择子#0x08 stack_len dd 1 ;程序建议的堆栈大小#0x0c ;以4KB为单位 prgentry dd start ;程序入口#0x10 code_seg dd section.code.start ;代码段位置#0x14 code_len dd code_end ;代码段长度#0x18 data_seg dd section.data.start ;数据段位置#0x1c data_len dd data_end ;数据段长度#0x20 ;------------------------------------------------------------------------------- ;符号地址检索表 salt_items dd (header_end-salt)/256 ;#0x24 salt: ;#0x28 PrintString db '@PrintString' times 256-($-PrintString) db 0 TerminateProgram db '@TerminateProgram' times 256-($-TerminateProgram) db 0 ReadDiskData db '@ReadDiskData' times 256-($-ReadDiskData) db 0 header_end:;===============================================================================SECTION data vstart=0 buffer times 1024 db 0 ;缓冲区 message_1 db 0x0d,0x0a,0x0d,0x0a db '**********User program is runing**********' db 0x0d,0x0a,0 message_2 db ' Disk data:',0x0d,0x0a,0data_end:;=============================================================================== [bits 32];===============================================================================SECTION code vstart=0start: mov eax,ds mov fs,eax mov eax,[stack_seg] mov ss,eax mov esp,0 mov eax,[data_seg] mov ds,eax mov ebx,message_1 call far [fs:PrintString] mov eax,100 ;逻辑扇区号100 mov ebx,buffer ;缓冲区偏移地址 call far [fs:ReadDiskData] ;段间调用 mov ebx,message_2 call far [fs:PrintString] mov ebx,buffer call far [fs:PrintString] ;too. jmp far [fs:TerminateProgram] ;将控制权返回到系统 code_end:;===============================================================================SECTION trail;-------------------------------------------------------------------------------program_end:
转载地址:https://lyy-0217.blog.csdn.net/article/details/84996807 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月10日 13时59分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
领域驱动设计(DDD)前夜:面向对象思想
2019-04-30
Camera驱动调试小记
2019-04-30
四线触摸屏原理
2019-04-30
C/C++如何返回一个数组/指针
2019-04-30
腾讯AI语音识别API踩坑记录
2019-04-30
安装openrave 0.9的各种依赖包
2019-05-01
@FeignClient注解的重复名称解决
2019-05-01
java.net.BindException: 无法指定被请求的地址
2019-05-01
scala list
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01
shell dirname basename
2019-05-01
未来已至,5G加持下的云游戏将走向何方?
2019-05-01
计算机网络 —— 网络层 1.
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01
【接口自动化】
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01
Python解惑之:True与False
2019-05-01
你要的微信小程序终于来了
2019-05-01
有了这些 Chrome 插件,效率提升10倍(建议收藏)
2019-05-01