实模式使用32位寄存器

原创 2005年05月26日 22:51:00

16位模式与32位模式:
在如下情况下使用16位模式:
实模式;
虚拟86模式;
系统管理模式;
保护模式但代码数据堆栈段都设为16位;
同时含有16位和32位段的保护模式任务;
含有16位指令的32位代码段。

在保护模式下如何将16位模式与32位模式整合,如何同时将16位和32位代码放到32位代

码段中?

ia32用如下方式来区分16位和32位段和操作:
1.代码段描述符的标志位D(缺省操作数和地址大小)。
代码段描述符的D标志置位(置1)则是32位,清除(置0)则是16位。实模式和虚拟86模式

下不使用段描述符,因此缺省就是16位。
2.堆栈段描述符的标志位B(缺省堆栈大小)。
堆栈段描述符B指明了栈顶指针的大小(32位esp或16位sp寄存器),
3.16位和32位调用门,中断门,陷阱门。
当通过调用门,中断门,陷阱门在代码段之间传递程序控制权时,所使用的操作数的大

小(位数)由调用门,中断门,陷阱门的位数决定,而不是由D标志位和传送指令前缀决

定。门的位数决定如何在栈中保存返回信息。
4.16位和32位普通用途寄存器。

对大多数程序来说,32位任务必须使D标志位和B标志位置位,而对于16位程序来说则必

须清除这两个标志。(实模式和v86模式下无上述标志,默认16位)。
控制权由16位段向32位段转移的时候需要通过门。

使用操作前缀(prefixes)可以改写缺省的操作数和地址的大小。(在D标志位和B标志位

清除的情况下使用32位寄存器)。标志位可在任意模式下使用。
操作前缀仅在有限时间内(即前缀所作用的语句)改变操作数和地址的大小。

以下操作前缀可以允许在同一个段中使用16和32位操作。
操作数前缀:66h
地址前缀:67h
使用上述操作前缀会将D标志位和B标志位置位置反。

例如:
将32位操作数从32位寄存器移到一个32位有效地址(EA)的内存里。
使用操作数前缀,可将16位操作数从16位寄存器移到一个32位有效地址(EA)的内存里。
使用地址前缀,可将32位操作数从32位寄存器移到一个16位有效地址(EA)的内存里。
如果同时使用操作数和地址前缀,可将16位操作数从16位寄存器移到一个16位有效地址

(EA)的内存里

32位汇编寄存器

32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、D...

32位CPU所含有的寄存器

4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) ...

32位保护模式汇编语言[1]:实模式与保护模式的故事

漫游在机器指令的海洋,徘徊于实模式与保护模式之间,出入之间,自由无限。 ——谨以此系列文档献给广大疯狂痴迷于计算机程序的极客们~!...

64位与32位系统中函数调用中寄存器使用规则

32位系统: Calling Conventions The x86 architecture has several different calling conventions. Fortuna...

32位处理器内寄存器简介

摘要:在32位CPU中,还有各种各样的寄存器。一些寄存器是通用的,一些寄存器是专用的。一些指令如add、loop,如果后面没有完整的寄存器操作数,说明它们使用了隐含的操作数,这样的话,我们需要对每个寄...

32位Intel CPU所含有的寄存器

32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)...
  • cuptee
  • cuptee
  • 2011年06月30日 13:45
  • 109

32位cpu寄存器速查

32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS...

32位汇编寄存器

  • 2015年12月20日 22:51
  • 41KB
  • 下载

32位线性反馈移位寄存器

  • 2009年05月24日 22:28
  • 118KB
  • 下载

64位和32位的寄存器和汇编的比较

64位寄存器分配的不同 区别有: 64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实模式使用32位寄存器
举报原因:
原因补充:

(最多只允许输入30个字)