【x86汇编】寄存器

8086 Register:

寄存器没有地址的概念,地址都是指内存中

数据寄存器:

AX(AH AL)         累加器

BX(BH BL)         基址寄存器

CX(CH CL)         计数寄存器

DX(DH DL)        数据寄存器

段寄存器:(存各种段首地址)

CS     代码段寄存器         当前要处理的指令在内存中的段首地址(物理地址=(CS<<4)+IP)

DS    数据段寄存器         当前数据在内存中的段首地址(物理地址=(DS<<4)+[SI、DI、BX])

ES     附加段寄存器

SS     堆栈段寄存器         当前堆栈段的段首地址(物理地址=(SS<<4)+BP)

指针与变址寄存器:

SP      堆栈指针         堆栈段中当前栈顶的偏移地址

BP      基址指针         当前数据在堆栈段中的基地址(偏移量)

SI      变址寄存器-数据段偏移量

DI      变址寄存器-附加段偏移量

指令指针与标志寄存器:

IP      当前要处理的指令在内存中的偏移地址

FLAGS

时间: 2024-12-11 12:30:22

【x86汇编】寄存器的相关文章

X86汇编2.寄存器

最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时. 1.CPU组成一个典型CPU由:运算器.控制器.寄存器(CPU工作原理)等部件构成,这些器件依靠内部总线连接.运算器进行信息处理寄存器进行信息存储,每个CPU有不同数量的寄存器控制器控制各种器件进行工作内部总线连接各种器件,在他们之间进行数据的传送 对于一个汇编程序员来说,寄存器是CPU

对X86汇编的理解与入门

本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序.当然,更复杂的指令请参阅Intel相关文档. 1 寄存器. 主要寄存器如下图所示: X86处理器中有8个32位的通用寄存器.由于历史的原因,EAX通常用于计算,ECX通常用于循环变量计数.ESP和EBP有专门用途,ESP指示栈指针(用于指示

内核基础---AT&T汇编与x86汇编的区别

1.深入Linux内核的前提 因为以前学习过intel的x86汇编语言,所以本文就不在讲述汇编的基本语法了: 内核绝大部分的代码都是用C和汇编语言实现的,要理解内核,C语言大部分的人都已经掌握了,接下来就得首先掌握汇编知识,以便深入理解Linux内核知识!!! 2.学习Linux内核的线路 首先内核有基础部分和深入的部分,我认为应该从一个全局的角度去解读Linux内核,以便我们达到一个更加深刻的认识,从内核的整体架构--->内核源码的解读,并且在这个的过程中不断的去修改代码,编程调试是至关重要的

X86汇编快速入门

本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序.当然,更复杂的指令请参阅Intel相关文档. 1 寄存器. 主要寄存器如下图所示: X86处理器中有8个32位的通用寄存器.由于历史的原因,EAX通常用于计算,ECX通常用于循环变量计数.ESP和EBP有专门用途,ESP指示栈指针(用于指示

x86汇编之十(使用字符串)

x86汇编之十(使用字符串) 转自网络,出处不详 一.传送字符串 Intel提供了完整的字符串传送指令,就像是MOV指令一样. 1.MOVS指令 1)movs指令格式 把字符串从一个位内存位置传送到另一个内存内置,其指令隐含了源操作数与目的操作数.ATT有3条传字符串的指令的,分别是MOVSB,MOVSW,MOVSL. 指令 含义 源址 目址 MOVSB 传一个字节的字符 (%ESI) (%EDI) MOVSW 传一个字的字符 (%ESI) (%EDI) MOVSL 传4个字节的字符 (%ESI

为什么X86汇编中的mov指令不支持内存到内存的寻址?

在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了???这个问题在stack overflow有个解释不错: The answer involves a fuller understanding of RAM. Simply stated, RAM can only be in two states, read mode or write mode.

x86汇编--RTC中断(时间显示器)

可以用前一篇操作系统内核加载器(x86汇编)的加载器来加载这个RTC中断程序,就可以显示时间了. ;user.asm ;程序的头文件,整个程序的信息表 ;--------header----------------------------------- section header align=16 vstart=0 program_length dd program_end program_entry dw start dd section.code.start section_count d

X86汇编8.外部中断

最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时. 1.端口的读写在PC系统中,除和CPU通过总线相连的芯片(内存芯片)之外,还有3类芯片:(1)各接口卡(网卡.显卡)上的接口芯片,他们控制接口卡进行工作(2)主板上的接口芯片,CPU通过它们对部分外省进行访问(3)其他芯片,用来存储相关的系统信息,或进行相关的输入.输出处理这些芯片都有一

X86汇编7.内部中断

最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时. 依据中断来源,中断可以分为内部中断,和外部中断. 1.内部中断的产生当CPU发生下列事情后,会产生中断:(1)除法错误,中断号:0(2)单步执行,中断号:1(3)执行info指令,中断号:4(4)执行int指令,中断号:int 指令后面跟随的立即数 CPU收到中断信息后,需要立即对中断进

X86汇编5.高级指令详解

最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时. 转移指令1.转移指令分类:(1)无条件转移指令,如: jmp(2)条件转移指令(3)循环指令,如: loop(4)过程(5)中断 操作符1.offset释义:由编译器处理的符号,功能是取得标号的偏移地址start: mov ax,offset start ;相当于mov ax, 0s: