博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关操作系统保护模式中的 shl eax 4 这条语句的意思
阅读量:4155 次
发布时间:2019-05-25

本文共 450 字,大约阅读时间需要 1 分钟。

 

GdtLen EQU $ - LABEL_GDT

源代码是这样的:
GdtPtr DW GdtLen-1
DD 0
XOR EAX,EAX
MOV AX,DS
SHL EAX,4
ADD EAX,LABEL_GDT
MOV DWORD[GdtPtr+2],EAX
LGDT [GdtPtr]

“XOR EAX,EAX”语句已经将EAX清零了。然后“MOV AX,DS”将16位的段值从DS复制到AX。“SHL EAX,4”是计算数据段的起始物理地址,所以用了EAX来表示20位的物理地址(没有使用AX表示物理地址是因为AX只有16位)。(注:实模式下的寻址的方式固然还是段:偏移,而且段:偏移还都是16位,但在实模式下却可以使用32位寄存器,如EAX……等,而这里的EAX既不是段值,也不是偏移,而是人工计算出的物理地址,相当于用EAX保存的数据,最后再通过“MOV DWORD[GdtPtr+2],EAX”将EAX中的物理地址送到DS:(OFFSET GdtPtr)+2表示的逻辑地址处。)

 

 

转自:

转载地址:http://ibgti.baihongyu.com/

你可能感兴趣的文章
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
js报错显示subString/subStr is not a function
查看>>