【OS学习笔记】二十九 保护模式八:任务切换对应的汇编代码之用户程序代码
发布日期:2021-07-01 00:05:51
浏览次数:3
分类:技术文章
本文共 2690 字,大约阅读时间需要 8 分钟。
本汇编代码对应以下两篇文章对应的用户程序汇编代码:
相应的内核程序代码为:
用户程序代码:
;代码清单15-2 ;文件名:c15.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 message_1 db 0x0d,0x0a db '[USER TASK]: Hi! nice to meet you,' db 'I am run at CPL=',0 message_2 db 0 db '.Now,I must exit...',0x0d,0x0a,0data_end:;=============================================================================== [bits 32];===============================================================================SECTION code vstart=0start: ;任务启动时,DS指向头部段,也不需要设置堆栈 mov eax,ds mov fs,eax mov eax,[data_seg] mov ds,eax mov ebx,message_1 call far [fs:PrintString] mov ax,cs and al,0000_0011B or al,0x0030 mov [message_2],al mov ebx,message_2 call far [fs:PrintString] call far [fs:TerminateProgram] ;退出,并将控制权返回到核心 code_end:;-------------------------------------------------------------------------------SECTION trail;-------------------------------------------------------------------------------program_end:
转载地址:https://lyy-0217.blog.csdn.net/article/details/85055443 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年05月04日 06时57分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle 利用 UTL_SMTP 包发送邮件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
libuv实现ping包发送和接收
2019-04-30
基础架构系列篇-NGINX部署VUE
2019-04-30
基础架构系列篇-系统centos7安装kafka
2019-04-30
软件质量的8个特性
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
行阶梯型矩阵
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
JAVA学习笔记6 - 数组
2019-04-30
【学习笔记】Android Activity
2019-04-30