一些寄存器相关的知识

考试要求:

只需关注x86汇编语言

题目给出的某段简单程序的C语言,汇编语言,机械语言表示,能结合c语言看懂汇编语言的关键语句

汇编语言机器语言一一对应,结合汇编语言分析机器语言指令的格式,寻址方式

不会考:将c语言人工翻译成汇编语言或机器语言

ARM和MIPS不考

x86架构cpu利有哪些寄存器

每个寄存器都是32bit,E代表Extended X代表未知

EAX

可以拆分 EAX 并只使用最低的16bit;AX也可以拆分为AHAL

EBX

同理

ECX

同理

EDX

同理

上面这四个寄存器是通用寄存器,什么都可以存


I代表Index,S代表source,D代表destination

ESI

EDI

这两个是变址寄存器,用于处理线性表,字符串


BP代表Base Pointer; SP代表Stack Pointer

EBP

ESP

堆栈寄存器,用于实现函数的调用

但是变址寄存器和堆栈寄存器就不可拆分了,必须使用32bit

以mov指令为例

mov 目的操作数d,源操作数s

如果mov后方的值是E开头的,代表寄存器

如果是直接的数字,那就是一个立即数

如果是 byte ptr [af965h] 那就代表内存地址为[af965h]的字节

一些例子

mov eax ,dword ptr[ebx] #将 ebx所指地址的32位复制到eax

mov dword ptr[ebx] ,eax #将eax的内容,复制到ebx所指的主存地址的32bit

mov eax, byte ptr [ebx] #将ebx所指的8位复制到eax

mov eax ,[ebx] #若未指明主存读写长度,默认32bit

mov [af955h],eax#将eax的值复制到af955h所指的地址(如果没指名长度就是32bit

mov eax,dword ptr [ebx+8] #将ebx+8 所指的地址的32位复制到eax

mov eax,dword ptr [af996-12h] #将af996-12所指的地址的32位复制到eax

posted @ 2025-09-16 15:34  是我,米老鼠  阅读(9)  评论(0)    收藏  举报