80386 ASM程序设计基础 (一)

asm内联汇编及HC08启动代码说明 AVR GCC has sei() for __enable_interrupts(), and cli() for __disable_interrupts(). Both of these macros are located in . CLI(clear interrupt)是将处理器标志寄存器的中断标志位清0,不允许中断。CLI经常与STI(SEI---set interrupt)成对使 阅读详情



80386 ASM程序设计基础,呵呵,这是最近一段时间我的业余爱好。

80386处理器是Intel公司80×86发展史上的里程碑,它不但兼容先前的8086/8088,80186,80286处理器,而且也为后来的486,Pentium(586),Pentium Pro(686)的发展打下了坚实的基础,对于我们程序员来讲更重要的是:我们关心80386在指令上到底有哪些扩展呢?80386有哪些寻址方式呢?毫无疑问,它不但兼容了8086的所有指令,而且还对它们进行增强.
呵呵,我知道有很多人问我CPU已经发展到PentiumIIII,没有必要学习80386的汇编。其实不然, 80386处理器中的保护模式,虚拟8086模式以及地址的段页管理机制,虚拟内存这些都是以后处理器的核心。所以说80386是后续发展处理器的基础, 比如说80486实质上80386+80387协处理,这块协处理器主要用于处理浮点运算,Pentium处理器在80386指令的基础上增加了57条指 令,8个数据类型,8个64位的寄存器来处理多媒体。从这一点来看,完全有必要了解80386ASM,这就好像学习80386,必须先要熟练掌握 8086。
1.80386的的寄存器:
80386的寄存器可以分为8组:通用寄存器,段寄存器,指令指针寄存器,标志寄存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。本篇主要介绍80386的寄存器。
A1.General Register(通用寄存器)
EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,它们的低16位就是8086的AX,BX,CX,DX,SI,DI,SP,BP,它们的含义如下:
EAX:累加器
EBX:基址寄存器
ECX:计数器
EDX:数据寄存器
ESI:源地址指针寄存器
EDI:目的地址指针寄存器
EBP:基址指针寄存器
ESP:堆栈指针寄存器
这些寄存器可以将低16位单独存取,也就是8086的AX,BX,CX,DX,SI,DI,SP,BP,在存取这些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP),它
们的高16位不受影响,同时和8086一样对于AX,BX,CX,DX这四个寄存器来讲,可以单独存取它们的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)

A2:Segment Register(段寄存器)
除了8086的4个段外(CS,DS,ES,SS),80386还增加了两个段FS,GS,这些段寄存器都是16位的,它们的含义如下:
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS 附加段

A3:Instruction Pointer(指令指针寄存器)
EIP,它的低16位就是8086的IP,它存储的是下一条要执行指令的地址。

A4:Flag Register(标志寄存器)
EFLAGS,和8086的16位标志寄存器相比,增加了4个控制位,不过这4个控制位它们在实模下不起作用,这四个控制位分别是:
a.IOPL(I/O Privilege Level),I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个保护性异常。
b.NT(Nested Task):控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。
c.RF(Restart Flag):重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非调试故障时,处理器置RF=1。
d.VM(Virtual Machine):虚拟8086模式(用软件来模拟8086的模式,所以也称虚拟机)。VM=0,处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。
其它16个标志位的含义和8086一样,在这里也重温一遍:
e.CF(Carry Flag):进位标志位,由CLC,STC两标志位来控制
f.PF(Parity Flag):奇偶标志位
g.AF(Assistant Flag):辅助进位标志位
h.ZF(Zero Flag):零标志位
i.SF(Singal Flag):符号标志位
j.IF(Interrupt Flag):中断允许标志位,由CLI,STI两条指令来控制
k.DF(Direction Flag):向量标志位,由CLD,STD两条指令来控制
l.OF(Overflow Flag):溢出标志位。
控制寄存器,系统地址的寄存器,调试寄存器,测试寄存器将在介绍完80386分段,分页管理机制后介绍

 
【微机原理与接口技术学习实践】汇编语言程序设计实现——.ASM文件、.OBJ文件、.EXE文件综合 汇编语言程序设计实现,对汇编基本知识概念进行了简要回顾,学习汇编语言程序的结构,进行了简单的完整汇编源程序的书写,并完成.asm文件、.obj文件、.exe文件的综合实践(持续更新中……) 阅读详情

相关推荐

ASM 设备操作手册

设备操作流程 维修保养 图文并茂

ASM初始化参数

ASM实例有很多专用参数,建议ASM实例使用spfile,而非初始化参数文件,比如在添加或删除磁盘组时,将自动维护asm_diskgroups参数等,无需手动去更改初始化参数文件。 下面介绍下与ASM相关的些初始化参数: instance_type:实例类型,对于asm实例来说值是asm,而对于oracle实例来说这个值默认是rdbms db_unique_name:参数默认值是+ASM

一玩儿家的田地 3961

AD830资料.pdf

ASM设备操作手册英文版

8312 8382 芯片类型

pan0755的博客 1175

80386ASM程序设计基础

    80386ASM程序设计基础     kingcaiyao        80386 ASM程序设计基础,呵呵,这是最近段时间我的业余爱好。本期将连续推出若干篇有关80386ASM程序设计基础,主要介绍80386ASM指令的详细用法及如何在80386实模式下,保护模式下及虚拟8086模式编程以及我会详细介绍80386下的段页管理机制,我会将80386下的指令与8086下的相同指令进行比

Hi, CT here! 2863

80386ASM程序设计基础()

    80386 ASM程序设计基础,呵呵,这是最近段时间我的业余爱好。本期将连续推出若干篇有关80386ASM程序设计基础,主要介绍80386ASM指令的详细用法及如何在80386实模式下,保护模式下及虚拟8086模式编程以及我会详细介绍80386下的段页管理机制,我会将80386下的指令与8086下的相同指令进行比较。在你去看罗云彬的ASM编程之前,不妨先看看我的基础篇,希望有志于从事汇

kingcaiyao的专栏 3141

【转贴】80386ASM程序设计基础()

80386实模式下编程 80386在实模式下是个更快的8086,它不但可以进行32位操作,而且还可以进32位寻址,并且还可以使用80386的扩展指令。不过,由于是在实模下,寻址的最大空间为1M。在个段内,段的最大长度不超过64K,否则就会发生异常。 在8086下定义个段的完整格式是: 段名 [定位类型]  [组合类型]  [‘类别’] 80386下定义个段的完整格式是: 段名 [定位类型]

763

80386ASM程序设计基础()

 80386处理器的寻址方式    在实式模式下,80386处理器的最大寻址空间仍然为1M,和8086/8088相似。即段地址*10H+段内偏移地址,从而形成20位地址。此种模式下,段基址是16的倍数,长度最大不超过64K。    在保护模式下,80386处理器可以使用所有的物理内存。段基址可以是32位,也可以不是16的倍数,同时它的最大长度为4G,这与8086完全不同,在形成逻辑地址时用段基址直

kingcaiyao的专栏 2250

【转贴】80386ASM程序设计基础()

   在接下来的四篇里将介绍80386汇编指令及用法,并和8086的指令进行比较。   80386指令集包含了8086/8088,80186,80286的指令集,可以分为几个大类:数据传送指令,算术运算/逻辑运算指令,移位指令,控制转移指令,串操作指令,高级语言支持的指令,条件字节设置指令,位操作指令,处理器控制指令和保护方式指令。高级语言支持指令始于80186,保护方式指令始于80286,条

864

80386ASM程序设计基础()

 80386实模式下编程 80386在实模式下是个更快的8086,它不但可以进行32位操作,而且还可以进32位寻址,并且还可以使用80386的扩展指令。不过,由于是在实模下,寻址的最大空间为1M。在个段内,段的最大长度不超过64K,否则就会发生异常。 在8086下定义个段的完整格式是: 段名 [定位类型]  [组合类型]  [‘类别’] 80386下定义个段的完整格式是: 段名 [定位类型

kingcaiyao的专栏 1798

80386汇编语言参考手册

汇编语言。80386,保护模式。汇编语言。80386,保护模式。

单片机ASM程序设计

单片机汇编语言程序设计学习 单片机汇编语言程序设计学习 单片机汇编语言程序设计学习

80386ASM程序设计基础()

 虽然80386处理器要较以前的处理器的功能大大增强,但这些功能只能在保护模式下才能全部得到发挥。在实模式下最大寻址空间只有1M,但在保护模式最大寻址空间可达4G,可以访问到所有的物理内存。同时由于引入虚拟内存的概念,在程序设计中可使用的地址空间为64TB。80386处理器采用了可扩充的分段管理和可选的分页管理机制,这两个存储管理机制由MMU(Memory Management Unit)部件来实

kingcaiyao的专栏 2524

80386ASM程序设计基础()

   算术运算指令,逻辑运算指令,移位指令   AA.算术运算指令   A.加减法运算ADD,ADC,INC,SUB,SBB,DEC,CMP,NEG   a.ADD,和8086功能,用法相同,不过支持32位操作,下面的语句都是合法的。   ADD  ESI,EDI   ADD  EAX,DWORD  PTR  [1000H]   b.ADC,带进位的加法指令,即OPRDS+OPRDD+CF,其中O

kingcaiyao的专栏 1810

Unable To Start ASM (ORA-838、4031) On 11.2.0.3 If OS CPUs # > 64-1416083.1

In this Document Symptoms Cause Solution Community Discussions ...

303

ASM日常总结

ASM使用中需要注意的知识点 1.单个磁盘的大小不要大于2T,因为超过2T的磁盘无法创建磁盘组。 2.尽量使用多块大小相同的磁盘创建同磁盘组,这样做的好处有两点:     a.磁盘头部损坏时方便更换,减少数据损坏风险。     b.如果大小不统,容易导致磁盘组剩余容量足够但不能使用的问题。 3.创建磁盘组之前要设置好冗余度,之后无法调整,需要改变磁盘组的冗余(external,

FC_BarceIona的博客 4887

80386汇编

80386汇编知识 与汇编语言略有不同,是门全新的编程语言,尽管继承了汇编语言的语法. 80836寄存器 通用寄存器(EAX EBX ECX EDX,ESP,EBP,ESI,EDI) 段寄存器(CS SS DS ES FS GS) 指令寄存器和变址寄存器(EIP EFLAGS) 系统地址寄存器(GDTR IDTR LDTR … 控制寄存器(CR0 CR1 CR2 CR3 CR4) 调试寄存器...

lonmar的博客 2220
上一篇: 汇编 中断调用表 (中断向量表)
下一篇: 80386处理器的寻址方式 (二)
ttzyanswer
博客等级 码龄19年 71粉丝 18原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值