【OS学习笔记】二十九 保护模式八:任务切换对应的汇编代码之用户程序代码
生活随笔
收集整理的這篇文章主要介紹了
【OS学习笔记】二十九 保护模式八:任务切换对应的汇编代码之用户程序代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本匯編代碼對應以下兩篇文章對應的用戶程序匯編代碼:
- 【OS學習筆記】二十六 保護模式八:任務門—任務切換
- 【OS學習筆記】二十七 保護模式八:任務切換的方法之----jmp與call的區別以及任務的中斷嵌套
相應的內核程序代碼為:內核代碼
用戶程序代碼:
;代碼清單15-2;文件名:c15.asm;文件說明:用戶程序 ;=============================================================================== SECTION header vstart=0program_length dd program_end ;程序總長度#0x00head_len dd header_end ;程序頭部的長度#0x04stack_seg dd 0 ;用于接收堆棧段選擇子#0x08stack_len dd 1 ;程序建議的堆棧大小#0x0c;以4KB為單位prgentry dd start ;程序入口#0x10 code_seg dd section.code.start ;代碼段位置#0x14code_len dd code_end ;代碼段長度#0x18data_seg dd section.data.start ;數據段位置#0x1cdata_len dd data_end ;數據段長度#0x20 ;-------------------------------------------------------------------------------;符號地址檢索表salt_items dd (header_end-salt)/256 ;#0x24salt: ;#0x28PrintString db '@PrintString'times 256-($-PrintString) db 0TerminateProgram db '@TerminateProgram'times 256-($-TerminateProgram) db 0ReadDiskData db '@ReadDiskData'times 256-($-ReadDiskData) db 0header_end:;=============================================================================== SECTION data vstart=0 message_1 db 0x0d,0x0adb '[USER TASK]: Hi! nice to meet you,'db 'I am run at CPL=',0message_2 db 0db '.Now,I must exit...',0x0d,0x0a,0data_end:;===============================================================================[bits 32] ;=============================================================================== SECTION code vstart=0 start:;任務啟動時,DS指向頭部段,也不需要設置堆棧 mov eax,dsmov fs,eaxmov eax,[data_seg]mov ds,eaxmov ebx,message_1call far [fs:PrintString]mov ax,csand al,0000_0011Bor al,0x0030mov [message_2],almov ebx,message_2call far [fs:PrintString]call far [fs:TerminateProgram] ;退出,并將控制權返回到核心 code_end:;------------------------------------------------------------------------------- SECTION trail ;------------------------------------------------------------------------------- program_end:總結
以上是生活随笔為你收集整理的【OS学习笔记】二十九 保护模式八:任务切换对应的汇编代码之用户程序代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: roboto字体android,Andr
- 下一篇: 成员指针运算符 .* 和 -*