【我所認知的BIOS】—>實模式&保護模式切换实例

本文通过一个简单的代码示例,详细解析了实模式到保护模式的切换过程,包括加载GDT、启用A20、far jmp的作用等关键步骤。在保护模式中,代码将高端内存的值复制到低端内存,然后返回实模式显示数据。这个例子作为学习保护模式的入门非常实用。
摘要由CSDN通过智能技术生成

【我所認知的BIOS—>實模式&保護模式切换实例

LightSeed     

2009-6-23     

上一章從基礎概念上我談了談我的理解。素不知“紙上得來終覺淺,絕知此事要躬行”呀!不多說二話,我們來詳細剖析實模式和保護模式的相互切換。(我儘量解釋清楚每一句話,以下舉的例子是楊季文老師書里一個最簡單的例子)

Let us go!

1、這個例子中code做的事

下麵我們看到的這個code做了這樣的操作:

    在實模式進入保護模式

    在保護模式里把高端內存的value copy到低端內存中來(buffer中)

    返回到實模式

    在實模式下,顯示buffer中的內存數值。

對此需要說明的一點是這個例子是一個很簡單很簡單地實模式和保護模式的切換,中間很多東西都沒有考慮,不過拿來作為我們學習保護模式的入門我想到是再好不過了。

2、原程式加詳細註釋

 

 

;-------------这段代码copy form<80X86汇编语言程序设计教程>--------

;-------------只是一个最简单的实模式与保护模式的相互切换----------

;-------------切忌,本程序编译连接后生成的exe文件在纯DOS--------

;-------------才能够执行LGDT这个命令,才能顺利进入保护模式--------

 

;-------------宏定义区域开始--------------------------------------

;16位偏移的段间直接转移指令的宏定义

JUMP  macro selector,offsetv

    db 0eah                 ;操作码 jmp

    dw offsetv              ;16位偏移

    dw selector            ;段值(real mode)或者选择子(protect mode)

    endm

 

 

;字符显示宏指令的定义

ECHOCH  macro ascii

    mov ah, 2               ;选功能号

    mov dl, ascii           ;填将要显示的ASCII码给DL

    int 21h                  ;调用DOS中断来显示ASCII

    endm

;-------------宏定义区域结束-------------------------------------

 

;-------------结构体定义区域开始---------------------------------

 

;存储段描述符结构类型的定义    

DESCRIPTOR struc

    Limitl      dw 0   ;段界限(0~15)

    Basel       dw 0   ;段基地址(0~15)

    Basem          db 0   ;段基地址(16~23)

    Attributes dw 0   ;段属性

    Baseh      db 0   ;段基地址(24~31)

DESCRIPTOR ENDS

 

 

;伪描述符结果类型的定义

PDESC         struc

    Limit       dw 0   ;16界限

    Base       dd 0   ;基地址

PDESC         ENDS

;-------------结构体定义区域结束---------------------------------

 

 

;常量定义

    ATDW =         92H         ;存在的可读写数据段属性值

    ATCE   =         98H         ;存在的只执行代码段属性值

 

 

.386P

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值