80386汇编

80386汇编本文详细介绍了 80386 汇编语言 包括处理器的工作模式 实模式 保护模式和虚拟 8086 模式 以及 80386 的寄存器结构 如通用寄存器 段寄存器 指令寄存器和标志寄存器等

大家好,欢迎来到IT知识分享网。

80386汇编知识

本文主要是博主学习漏洞银行(BugBank)k1ght主讲的暴力流学汇编的内容

  • 与汇编语言略有不同,是一门全新的编程语言,尽管继承了汇编语言的语法.
处理器的工作模式:

80386以后的处理器均有三种工作模式:实模式,保护模式和虚拟8086模式,我们一般所用的是保护模式.实模式和保护模式完全是为了向下兼容而设计,保护模式下,32位的cpu寻址才能达到4GB的地址空间,也才有内存分页管理,优先级保护,多任务等机制

80836寄存器
通用寄存器(EAX EBX ECX EDX,ESP,EBP,ESI,EDI)

通用寄存器与8086的寄存器相比,由16位变为了32位
ESP:栈顶
EBP:栈底

段寄存器(CS SS DS ES FS GS)|段选择子

段寄存器依然是16位,寻求段地址的方式也因此发生了一点变化

这些段寄存器存放的不再是某个段的基地址,而是某个段的选择符(selector).因为16位的寄存器无法存放32位的段基地址,段基地址只好存放在段的描述符中(descriptor)中;

段寄存器模式图
1.头两位是特权级字段 一共能表示0-3四个等级,程序的特权级要不低于改段寄存器的特权级才能够访问读取改段寄存器;0是最高级,3为一般程序的级别

2.TI:指定包含段描述符的描述符表是在GDT(TI=0)还是在LDT(TI=1)

3.index:14位的索引字段可以识别的段从0至16383,一共16384个段

指令寄存器和标志寄存器(EIP EFLAGS)

这几个寄存器在8086中就已经存在

VM:表示虚拟8086模式;若VM被置位且80386已经处于保护模式下,则CPU切换到虚拟8086模式,此时,对段的任何操作又回到了实模式,如同在8086下运行一样`(逆向过程中不太常用)

系统地址寄存器(GDTR IDTR LDTR TR )描述符寄存器

在这里插入图片描述
1.全局描述符表寄存器GDTR:48位寄存器,用来保存全局描述符表(GDT)的32位基址和GDT的大小(16位)
2.中断描述符表寄存器IDTR:48位寄存器,用来保存中断描述符表(IDT)的32位基地址和IDT的大小(16位)
在这里插入图片描述
3.局部描述符表寄存器LDTR:16位寄存器,保存描述符表LDT段的选择符
4.任务状态寄存器TR:16位寄存器,用于保存任务状态段TSS段的16位选择符




控制寄存器(CR0 CR1 CR2 CR3 CR4)
调试寄存器(DR0 DR1 DR2 DR3 DR4 DR5 DR6 DR7 DR8)
CE测试寄存器(TR6 TR7)

寻址方式

  • 实模式寻址方式(与8086下的寻址方式很像)

CS:IP ——CS*10H+IP

DS:[bx]——DS*10H+IP

  • 保护模式寻址方式
    在这里插入图片描述

2.有关GDT(http://www.cnblogs.com/longintchar/p/5224406.html):

全局描述符表的引入:与实模式相同的是,保护模式下对内存的访问依然是段地址*10h+偏移地址,但保护模式下每个段访问前,必须先登记,要为这个段建立一个描述符.每个描述符占八个字节,这些描述符集存放在某个内存区域,”一个挨着一个,就构成了一张表.

4.最后由段地址+32位的的偏移地址寻得保护模式下的虚拟地址.

80836储存器寻址
在这里插入图片描述
如 mov eax,[esp] 由ss的索引值等找到描述符再找到基址再+esp 将这个地址的值赋给eax

数据传送指令

一.通用数据传送指令

1 .mov 指令

  • 下图为数据允许传送的方向
    在这里插入图片描述
  • 传送操作不影响标志位
    2.扩展传送指令
    MOVSX与MOVZX:讲8位操作数扩展为16位操作数,或将16位操作数扩展为32位操作数.其中MOVSX是按有符号数扩展,MOVZX则是按无符号数扩展.无符号数或正数高位扩展为0,负数高位扩展为全1
    3.交换指令
    (1)格式:XCHG OPR1,OPR2
    功能:交换两个操作数的值
    如: 
       XCHG AX,B
    (2)
       在这里插入图片描述








二.堆栈传送指令

在这里插入图片描述
在这里插入图片描述
三.地址传送指令
在这里插入图片描述
四.标志寄存器传送指令
在这里插入图片描述




算术运算指令

  • 加法指令,减法指令,加1减1指令
  • 比较指令,交换相加指令,求补指令
  • 乘法指令,除法指令
加法指令

在这里插入图片描述

减法指令

在这里插入图片描述

加1减1指令

在这里插入图片描述

比较指令

在这里插入图片描述
在这里插入图片描述

交换相加指令在这里插入图片描述
求补指令

在这里插入图片描述

乘法指令

在这里插入图片描述
在这里插入图片描述

除法指令

在这里插入图片描述
在这里插入图片描述

逻辑运算指令

  1. 与指令
    在这里插入图片描述
  2. 或指令在这里插入图片描述
  3. 异或指令在这里插入图片描述
    . 在这里插入图片描述
  4. 非指令在这里插入图片描述
  5. 在这里插入图片描述
  6. 移位指令
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述



控制转移指令
  1. 无条件转移指令

在这里插入图片描述
2. 条件转移指令
在这里插入图片描述
在这里插入图片描述


串操作指令和处理器操作指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理器操作

在这里插入图片描述
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130078.html

(0)
上一篇 2025-08-19 18:00
下一篇 2025-04-10 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信