80386汇编_进入32位保护模式
文章目录
- 效果
- 代码
效果
代码
;栈段与栈指针 0x07c00 --> 0x07a00 由高地址 到 低地址mov ax,0x07a0mov ss,axmov sp,0x7c00;--------------------------------------------------------------------------------;计算gdt的逻辑地址mov dx,[cs:gdt_base+0x7c00+2]mov ax,[cs:gdt_base+0x7c00]mov bx,0x10div bx ;dx存商,ax存余mov ds,ax ;段地址mov bx,dx ;偏移地址gdt_sta:;创建0号描述符,空描述符(处理器要求)mov dword [bx],0x0mov dword [bx+0x04],0x0add bx,0x08;创建1号描述符,代码段描述符mov dword [bx],0x7c0001ff ;线性基地址:0x00007c00mov dword [bx+0x04],0x00409800 ;段界限:0x001ffadd bx,0x08;创建2号描述符,数据段描述符mov dword [bx],0x8000ffff ;线性基地址:0x000B8000mov dword [bx+0x04],0x0040920b ;段界限:0x0ffffadd bx,0x08;创建3号描述符,栈段段描述符mov dword [bx],0x00007a00 ;线性基地址:0x00000000mov dword [bx+0x04],0x00409600 ;段界限:0x07a00gdt_end:;初始化gdtr,填入gdt表字节大小mov word [cs:gdt_size++0x7c00],gdt_end-gdt_sta-1lgdt [cs:gdt_size++0x7c00];--------------------------------------------------------------------------------;准备进入32位保护模式in al,0x92 ;南桥芯片的端口or al,0000_0010B ;二进制写法,下划线增加可读性out 0x92,al ;打开地址线A20(历史遗留问题);详细信息:翻看P193cli ;此时中断向量表未建立(32为保护模式下);禁止中断,防止出错mov eax,cr0or eax,0x1mov cr0,eax ;设置PE位,打开32位保护模式;进入32保护模式jmp 0000000000001_000B:flush ;13位段选择子,3位属性;清空流水线[bits 32] ;进入32保护模式;--------------------------------------------------------------------------------flush:;数据段加载mov cx,0000000000010_000B ;选择子0x2mov ds,cx;以下在屏幕上显示"Protect mode OK." mov byte [0x00],'P' mov byte [0x02],'r'mov byte [0x04],'o'mov byte [0x06],'t'mov byte [0x08],'e'mov byte [0x0a],'c'mov byte [0x0c],'t'mov byte [0x0e],' 'mov byte [0x10],'m'mov byte [0x12],'o'mov byte [0x14],'d'mov byte [0x16],'e'mov byte [0x18],' 'mov byte [0x1a],'O'mov byte [0x1c],'K';堆栈段加载mov cx,0000000000011_000B ;选择子0x3mov ss,cxmov esp,0x7c00;验证堆指针esp,每push/pop一次是否是加/减4mov ebp,esp ;保存esppush byte '.'sub ebp,4cmp ebp,esp ;相等则停机,不相等则显示.jnz exitpop eaxmov [0x1e],alexit:hlt ;停机指令;--------------------------------------------------------------------------------gdt_size dw 0gdt_base dd 0x00007e00times 510-($-$$) db 0db 0x55,0xAA
80386汇编_进入32位保护模式相关推荐
- 操作系统开发系列—2.进入32位保护模式
源码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3 ...
- x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上
目录: 什么是任务 任务由什么组成 任务门描述符是什么东东?有了TSS描述符为什么要有任务门描述符? 参考文献 什么是任务 任务(task)是处理器可以分配.执行.挂起的工作单位,笔者认为和我们操作系 ...
- 如何使用ARM协处理器CP15在32位ARRCH模式下操作64位寄存器)
1 参考 参考ARM的官方手册ARMv8指令集架构手册和A53技术参考手册 1.DDI0487H_a_a-profile_architecture_reference_manual 2.DDI0500 ...
- HYCON单片机_以32位MCU-HY16F198实现AC电流量测应用-测试测量-与非网
一.内容简介 本文将介绍以HY16F198搭配Hall Sensor(WCS1800)进行交流电流数值量测,最大可量测电流范围从0.1A~17.68A.本文实验数据从0A~17.6A,比较使用电表Ag ...
- python32位与62位可以随便装吗_电脑32位和64位可以随便换吗???
展开全部 电脑32位和64位的区抄别: 1.处理能力 64位系统在技术上2113更5261先进, 突破了许多技术瓶颈4102, 在处理能力上, 64位比32位强. 2.寻址能力 位数1653通过影响硬 ...
- xp系统支持64g内存_让32位XP支持64G内存
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码: int __usercall MiCheckPaeLicense(PLOADER_PARAMETER_BLOCK LoaderBlock){ En ...
- win764位和32位有什么区别_操作系统32位和64位有哪些区别呢?
最近有小伙伴提到一个问题:操作系统的32位和64位有什么区别呢?我们再安装软件的时候,软件安装包会显示有32位和64位安装路径,此时我们可以在电脑属性里边看到自己电脑的系统信息:针对于这个问题,今天小 ...
- python32位与62位可以随便装吗_我的电脑32位的可以装62位的操作系统吗
展开全部 首先电脑系统一般是32或者64位,其次电脑都可以装64位系统,唯一要注意62616964757a686964616fe59b9ee7ad9431333365666137的是装62位操作系统对 ...
- 【汇编语言】上机实验 win7/8/10 64位系统 进入32位DOS模式 实现dubug/edit/masm/link功能
1 软件下载和安装 下载并安装DOSBox软件,注意,不要装在C盘上,装在其他盘上 [备注]软件直接百度搜索即可 下载Debug.exe文件 [备注]百度搜索"Debug 64位 下载&qu ...
- 4KB/4MB 32位分页模式下的线性地址翻译以及CR3
摘自<Intel® 64 and IA-32 Architectures Software Developer's Manual Combined Volumes1, 2A, 2B, 2C, 2 ...
最新文章
- 又拍云SSL证书全新上线,提供一站式HTTPS安全解决方案
- 让面试官颤抖的 HTTP 2.0 协议面试题
- 二、window下django安装及第一个应用
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
- mysql order by 中文 排序
- Windows Mobile开发资源相关下载收录
- 知识图谱之语言计算与信息抽取
- 【opencv图像基础】图像常见的通道模式:RGB、YUV、HSV
- 华硕z170a如何开启m2_给Z170A 加个M.2 SSD,速度有点意思
- 我们可以拥有多少级指针?
- ios 时间选择器月份设置中文_iOS 自定义日期选择器 PickerView优化版
- r语言折线图_R语言基础入门视频教程——语法篇(完结)
- 涨姿势系列之——内核环境下花式获得CSRSS进程id
- iOS 给测试人员测试手机APP的四种方法:真机运行(略),打ipa包,(testFlighe)邮件,蒲公英(二)testflight
- 苹果手机密码锁如何解锁
- JavawebJAVAJSP网吧计费管理系统(JSP网吧管理系统)网吧收费管理系统网吧自动计费管理系统
- 苹果开发者证书申请流程
- 大数据入门:Flink和Spark简单对比
- 限速linux c语言,基于Linux系统的流量控制程序的C语言代码
- Oracle之创建定时任务