考试要求:
只需关注x86汇编语言
题目给出的某段简单程序的C语言,汇编语言,机械语言表示,能结合c语言看懂汇编语言的关键语句
汇编语言机器语言一一对应,结合汇编语言分析机器语言指令的格式,寻址方式
不会考:将c语言人工翻译成汇编语言或机器语言
ARM和MIPS不考
x86架构cpu利有哪些寄存器
每个寄存器都是32bit,E代表Extended X代表未知
EAX
可以拆分 E 和AX 并只使用最低的16bit;AX也可以拆分为AH和AL
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