【OS学习笔记】十八 保护模式五:保户模式下如何进行内存保护 与 别名段的意义与作用 对应汇编代码

本片文章是上一篇文章:点击查看对应的汇编代码。可以学习上一篇文章后再来对照查看汇编代码。或者查阅书籍《X86汇编语言-从实模式到保护模式》点击下载第12章内容来学习。

         ;代码清单12-1;文件名:c12_mbr.asm;文件说明:硬盘主引导扇区代码 ;设置堆栈段和栈指针 mov eax,cs      mov ss,eaxmov sp,0x7c00;计算GDT所在的逻辑段地址mov eax,[cs:pgdt+0x7c00+0x02]      ;GDT的32位线性基地址 xor edx,edxmov ebx,16div ebx                            ;分解成16位逻辑地址 mov ds,eax                         ;令DS指向该段以进行操作mov ebx,edx                        ;段内起始偏移地址 ;创建0#描述符,它是空描述符,这是处理器的要求mov dword [ebx+0x00],0x00000000mov dword [ebx+0x04],0x00000000  ;创建1#描述符,这是一个数据段,对应0~4GB的线性地址空间mov dword [ebx+0x08],0x0000ffff    ;基地址为0,段界限为0xfffffmov dword [ebx+0x0c],0x00cf9200    ;粒度为4KB,存储器段描述符 ;创建保护模式下初始代码段描述符mov dword [ebx+0x10],0x7c0001ff    ;基地址为0x00007c00512字节 mov dword [ebx+0x14],0x00409800    ;粒度为1个字节,代码段描述符 ;创建以上代码段的别名描述符mov dword [ebx+0x18],0x7c0001ff    ;基地址为0x00007c00512字节mov dword [ebx+0x1c],0x00409200    ;粒度为1个字节,数据段描述符;创建保护模式下的栈段	mov dword [ebx+0x20],0x7c00fffe    ;基地址为0x00007c00,段界限为0xFFFFFmov dword [ebx+0x24],0x00cf9600    ;粒度为4KB,栈段描述符;初始化描述符表寄存器GDTRmov word [cs: pgdt+0x7c00],39      ;描述符表的界限   lgdt [cs: pgdt+0x7c00]in al,0x92                         ;南桥芯片内的端口 or al,0000_0010Bout 0x92,al                        ;打开A20cli                                ;中断机制尚未工作mov eax,cr0or eax,1mov cr0,eax                        ;设置PE位;以下进入保护模式... ...jmp dword 0x0010:flush             ;16位的描述符选择子:32位偏移[bits 32]                          flush:                                     mov eax,0x0018                      mov ds,eaxmov eax,0x0008                     ;加载数据段(0..4GB)选择子mov es,eaxmov fs,eaxmov gs,eaxmov eax,0x0020                     ;0000 0000 0010 0000mov ss,eaxxor esp,esp                        ;ESP <- 0mov dword [es:0x0b8000],0x072e0750 ;字符'P''.'及其显示属性mov dword [es:0x0b8004],0x072e074d ;字符'M''.'及其显示属性mov dword [es:0x0b8008],0x07200720 ;两个空白字符及其显示属性mov dword [es:0x0b800c],0x076b076f ;字符'o''k'及其显示属性;开始冒泡排序 mov ecx,pgdt-string-1              ;遍历次数=串长度-1 @@1:push ecx                           ;32位模式下的loop使用ecx xor bx,bx                          ;32位模式下,偏移量可以是16位,也可以 @@2:                                      ;是后面的32位 mov ax,[string+bx] cmp ah,al                          ;ah中存放的是源字的高字节 jge @@3 xchg al,ah mov [string+bx],ax @@3:inc bx loop @@2 pop ecx loop @@1mov ecx,pgdt-stringxor ebx,ebx                        ;偏移地址是32位的情况 @@4:                                      ;32位的偏移具有更大的灵活性mov ah,0x07mov al,[string+ebx]mov [es:0xb80a0+ebx*2],ax          ;演示0~4GB寻址。inc ebxloop @@4hlt ;-------------------------------------------------------------------------------string           db 's0ke4or92xap3fv8giuzjcy5l1m7hd6bnqtw.'
;-------------------------------------------------------------------------------pgdt             dw 0dd 0x00007e00      ;GDT的物理地址
;-------------------------------------------------------------------------------                             times 510-($-$$) db 0db 0x55,0xaa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SharePoint要在master page中动态显示List数据的几种方式

我们都知道&#xff0c;在SharePoint中&#xff0c;Content page继承自Page layout&#xff0c;而Page layout又继承自Master page。Master page的作用大家都知道&#xff0c;它定义了站点的的整体外观和公共元素&#xff0c;因此有了很强的页面重用性和很好的页面编辑体验&…

前端学习(179):表单元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>表单</ti…

【软件开发底层知识修炼】十二 C/C++语言中内嵌汇编语言(asm)

上一篇文章学习了链接脚本的语法与相关概念&#xff1a;链接脚本的概念 在继续学习链接器的内容的同时&#xff0c;先学习一个新内容&#xff1a;内嵌汇编。 GCC编译器一般支持C/C内嵌汇编语言&#xff0c;这样可以实现语言本身无法实现的内容。我们本文主要介绍C语言中的内嵌…

并发编程总结

并发编程总结 1. ThreadLocal 每个线程复制一份2.volatile 解决内存可见性问题1. ThreadLocal 每个线程复制一份 package work.thread;/*** * @date 18/6/2019 11:59* @description:*/public class ThreadLocalDemo2 {// 每个线程的第几次操作private static ThreadLocal

【OS学习笔记】十九 保护模式六:保户模式下操作系统内核如何加载用户程序并运行

上一篇文章学习了保户模式下如何进行内存保护 与 别名段的意义与作用&#xff1a;点击链接查看上一篇文章&#xff1a;点击链接 本文接着学习&#xff0c;在保护模式下&#xff0c;内核是如何加载用户程序并运行的。其实这与在实模式下很像&#xff0c;只不过现在保护迷失多了…

数据思维整理

数据思维整理分享

常用的LaTeX公式用法

常用的LaTeX公式用法常用的latex公式用法常用的latex公式用法 加法 效果 减法 - 效果 − 乘法&#xff08;叉乘&#xff09; \times 例子: aba \times bab 效果 ab 乘法&#xff08;点乘&#xff09; \cdot 例子: a⋅ba \cdot ba⋅b 效果 a⋅b 除法 \div 例子&#xff1a;$ a…

linux平台下通过mcr方式从c++程序中调用matlab函数

小细节很多,所以容易出错. 平台:linux gcc matlab2010a 1 在matlab中写好函数例如branch,调用命令 mcc -W cpplib:libbranch -T link:lib branch.m -C 注意末尾的-C,很关键用于生成ctf文件,里面有执行需要的一些配置文件 2 将libbranch.so libbranch.ctf放在同一个目录中,写c程…

【OS学习笔记】二十 保护模式六:保户模式下操作系统内核如何加载用户程序并运行 对应的汇编代码之主引导扇区程序

本汇编代码对应保户模式下操作系统内核如何加载用户程序并运行 的实际主引导扇区代码&#xff1a; 对应的内核代码在&#xff1a;内核代码对应的用户程序代码在&#xff1a;用户程序代码 ;代码清单13-1;文件名&#xff1a;c13_mbr.asm;文件说明&#xff1a;硬盘主引导扇区代码…

java实现sql语句中 准确替换某个字符串

sql语句中准确 替换某个字符串 1.java 代码实现1.java 代码实现 public static void main(String[] args) {String sqls = "select pk_marbasclass from marbasclass where 11=11 and (enablestate = 2) and ((pk_org = 0001A210000000000EO5)) and code in(123) and…

geoserver native JAI error 问题解决方法

学习geotools&#xff0c;就会用到JAI. 最好不要把jar包放到jre环境下&#xff0c;而是在使用的时候&#xff0c;引入。因为在geoserver的web-lib目录下&#xff0c;存在JAI的jar.如果版本冲突&#xff0c;还会导致geoserver无法启动。版本正确也会报错&#xff1a;could not l…

【OS学习笔记】二十一 保护模式六:保户模式下操作系统内核如何加载用户程序并运行 对应的汇编代码之内核代码

本汇编代码对应文章保户模式下操作系统内核如何加载用户程序并运行 中的实际内核代码 对应的主引导扇区代码&#xff1a;主引导扇区代码对应的用户程序代码&#xff1a;用户程序代码 ;代码清单13-2;文件名&#xff1a;c13_core.asm;文件说明&#xff1a;保护模式微型核心程序 …

windows7下iis网站的.net框架版本设置

昨天下载了 VS2010 创建了一个默认的WebApplication&#xff0c;想看看在iis中运行的情况&#xff0c;虽说用了几个月的 win7 &#xff0c;但还从没有用过IIS。首先给人的感觉是IIS变化很大&#xff0c;多出了很多东西&#xff0c;让人感到很茫然。 先建个网站试试&#xff0c;…

【OS学习笔记】二十二 保护模式六:保户模式下操作系统内核如何加载用户程序并运行 对应的汇编代码之用户程序

本汇编代码对应文章&#xff1a;保户模式下操作系统内核如何加载用户程序并运行中的实际用户程序代码。 对应的主引导扇区代码&#xff1a;主引导扇区代码对应的内核代码&#xff1a;内核代码 ;代码清单13-3;文件名&#xff1a;c13.asm;文件说明&#xff1a;用户程序 ; SECTIO…

评教有感

上个星期学校组织了对教师的评比&#xff0c;用的是坤哥和六期师哥师姐做的评教系统。自己不但参与了评教的工作&#xff0c;还去五楼值班维持秩序。在值班的过程中碰到了米老师&#xff0c;再次认识到自己的不足。学习应该是无处不在的&#xff0c;就算是值班过程中也是可以学…

【OS学习笔记】二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念

上一篇文章学习了保护模式下操作系统内核如何加载程序并运行&#xff1a;点击链接查看上一篇文章 本篇文章接着上一篇文章学习保护模式下任务的隔离。 包括以下学习内容&#xff1a; 任务的全局空间和局部空间任务的TSS任务的LDT任务的特权级概念等 1、回顾 在保护模式下&…

[Drupal] How to add the js file and js code block in Drupal

Drupal 6:代码//This will add a JS file to your head (specifically the $scripts variable in page.tpl.php)drupal_add_js(drupal_get_path(module,my_module) ./my_module.js); //This add inline JS to the head of the documentdrupal_add_js(alert("Hello!"…

【OS学习笔记】二十四 保护模式七:调用门与依从的代码段----特权级保护

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章学习了保护模式下的任务与任务隔离&#xff0c;以及简单介绍了保护模式下的特权级的概念。点击链接查看上一篇文章&#xff1a;任务与任务隔…

在虚拟机中安装和配配置 MOSS2007 全过程

1. 首先在计算机上安装 VMware 虚拟机软件2. 在虚拟机中安装WIN2003 SP2企业版3. 进入添加删除程序 Windows 添加组件向导 添加以下组件 a. 网络服务中的域名系统(DNS) b. 电子邮件服务中的POP3服务 c. 应用程序服务器中的 IIS d. ASP.NET e. 还有IIS中的SMTP service4. 如…

【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码

本汇编代码是以下两篇文章讲解的内容的内核代码; 【OS学习笔记】二十三 保护模式七&#xff1a;保护模式下任务的隔离与任务的特权级概念【OS学习笔记】二十四 保护模式七&#xff1a;调用门与依从的代码段----特权级保护 需要先学习上述两篇文章的内容&#xff0c;方能看懂下…