美文网首页
2019-11-14学习80386

2019-11-14学习80386

作者: 黑小柴 | 来源:发表于2020-02-04 14:54 被阅读0次

寄存器

80386共提供7种类型的32位寄存器,如下:

1、通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)
2、段寄存器(CS、SS、DS、ES、FS、GS)
3、指令指针寄存器和标志寄存器(EIP、EFLAGS)
4、系统表寄存器(GDTR、IDTR、LDTR、TR)
5、控制寄存器(CR0、CR1、CR2、CR3、CR4)
6、调试寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7)
7、测试寄存器(TR6、TR7)


通用寄存器

EAX:累加器
EBX:基址寄存器
ECX: 计数(每次loop减一)
EDX:乘除时候存高位
ESI:源变址寄存器
EDI:目的变址寄存器
[ebx+esi+100h]基址变址寻址

段寄存器

段寄存器中不存放某个段的基地址,而是某个段的选择符。因为16位寄存器无法存放32位段基地址,只好存放在段的描述符中。

ES、FS、GS附加数据段寄存器

段寄存器的格式
EIP:指令指针寄存器

EIP存放下一条指令的偏移量(相对于目前代码段CS而言的)

EFLAGS: 标志寄存器
系统地址寄存器(保护模式的寻址):

GDTR
IDTR
LDTR
TR


EIP寻址

GDT(全局描述符号表)只有一个
LDT(局部描述符号表)会有很多
GDT包含了所有指向LDT的描述符

TI=0时的寻址
先访问GDTR,得到GDT的基址和限长,找到并访问GDT。根据Index中的描述符序号,来找到GDT中对应的描述符,加上EIP中的地址,即为内存的线性地址。

TI=1时的寻址
同样先访问GDTR,得到GDT的基址和限长,由于在GDT中指向所有LDTs的描述符地址紧跟在GDT正常全局寻址的描述符之后,通过基址和限长计算即得到了指向第一个LDT描述符的地址。然后访问LDTR得到描述符序号,找到对应的LDT描述符,进而找到LDT。根据Index中的描述符序号,来找到LDT中对应的描述符,加上EIP中的地址,即为内存的线性地址。

寻址

数据传送指令

通用数据传送指令

格式:MOV DEST,SRC

扩展传送指令

格式:MOV SX DEST,SRC
MOV ZX DEST,SRC

功能:将源操作数由8位扩展到16位目的操作数,或由16位扩展到32位目的操作数。MOVSX 先符号扩展,再传送,即正数高位全扩展0,负数高位全扩展1。
MOVZX 先零扩展,再传送,即高位全扩展0。

交换指令

XCHG OPR1 OPR2
互换通用寄存器或存储器OPR1 OPR2
BSWAP REG
将32位通用寄存器中第1个字节与第4个字节互换,第2与第3互换
MOV RAX 44332211H
BSWAP EAX (11223344H)

堆栈操作指令

PUSH
PUSHA
将所有16位通用寄存器压栈,顺序为AX,CX,DX,BX,SP,BP,SI,DI
PUSHAD
32位通用寄存器压栈,顺序为EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI

POP
POP AX
POP ECX

POPA
POPAD
一样的

地址传送指令

LEA REG,MEM
将源操作数的有效地址传到通用寄存器

LEA EAX,[EBX]
将EBX内容的有效地址传到EAX中
相当于 MOV EAX,EBX

image.png
逻辑运算指令

逻辑指令
移位指令

AND DST, SRC
OR DST, SRC
XOR DST, SRC
NOT DST
TEST DEST, SRC:
先进行与操作,结果不回送目的操作数,只改变标志寄存器。
通常用于测试操作数中某位是否为1(通过判ZF是否为0),而且不会影响操作数。

移位指令可以由立即数直接给出,亦可以由CL间接给出,分为一般移位指令和循环移位指令

一般移位指令

算术/逻辑左移指令
SAL DST, OPRD
SHL DST, OPRD

最高位移入CF,每移动一位,右边补一个0,SAL,SHL指令影响标志位OF,SF,ZF,PF,CF

SAR DST, OPRD
SHR DST, OPRD


image.png
控制转移类指令
image.png image.png

串指令操作

MOVS

MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
将ESI中地址所指数据移到EDI中地址所指位置
REP MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
1、将ESI中地址所指数据移到EDI中地址所指位置
2、ESI,EDI中数据分别加4
3、ECX中数据减1
4、跳到1,如果ECX=0,结束

SCAS
image.png
STOS
image.png

处理器控制

image.png

相关文章

  • 2019-11-14学习80386

    寄存器 80386共提供7种类型的32位寄存器,如下: 1、通用寄存器(EAX、EBX、ECX、EDX、ESP、E...

  • OS实验:x86-32 硬件运行模式

    80386四种运行模式 实模式 保护模式 SMM模式 虚拟8086模式 实模式:80386加电启动后出于实模式运行...

  • 2019-11-14

    2019-11-14 【日精进打卡第 600 天 【知~学习】 《六项精进》大纲 4 遍共 2256 遍 《大学》...

  • 文先森的日常--剩32天

    日精进打卡第456天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-11-14 【知~学习】 《...

  • x86-32硬件-运行模式

    80386四种运行模式(前面两个是实验内容):实模式:80386加电启动后处于实模式运行状态,在这种状态下软件可访...

  • Don't take the shit! 想骗中国人,没门!-b

    2019-11-14第七天 越来越脱离worry,成为warrior,not really;瑜伽和佛教学习教会我们...

  • Intel 80386 Reference Programmer

    页转换 页转换主要实现了面向页的虚拟内存系统和页层次保护。若操作系统需要使用相关功能,则必须将CR0的PG位置位。...

  • 2019-11-14

    2019-11-14 打卡人:王素琴 公司:阜阳市豹子头服饰科技有限公司【日精进打卡第559天 【知~学习】 公司...

  • win10“黑屏”不能自举处理方法

    我是1997年1月9日在80386PC机上使用DOS6.22学习编程才开始认识操作系统的。自1997年9月在Win...

  • Intel 80386 Segment Translation从

    intel 80386官方manual PS:下面的大部分内容都可以在manual上面找到 为了将逻辑地址转换成相...

网友评论

      本文标题:2019-11-14学习80386

      本文链接:https://www.haomeiwen.com/subject/qpglictx.html