---
title: "x86汇编基础"
canonical_url: "https://yangqiuyi.com/blog/ji-zu/x-86-hui-bian-ji-chu"
---

> Index of every page on this site: [llms.txt](https://yangqiuyi.com/llms.txt)

# x86 汇编基础

![](https://yangqiuyi.com/content-assets/1a065d9c08984694614a.png)

eg: mov
![mov](https://yangqiuyi.com/content-assets/b49cf39ae172d513a606.png)

## 寄存器

![E__](https://yangqiuyi.com/content-assets/7c16a87df9fe25af4276.png)

- AX, BX, CX, ...: 通用寄存器的 E 去掉的话, 意思是使用该寄存器的低十六位.
- AH, BH, CH, ...: 表示使用 AX, BX, CX, ...的高 8 位
- AL, BL, CL, ...: 表示使用 AX, BX, CX, ...的低 8 位

![HL](https://yangqiuyi.com/content-assets/deb38b317df234ea2478.png)

## 各种寻址方式

![](https://yangqiuyi.com/content-assets/47db9eefa5707e7163ab.png)

## 常用汇编指令

**x86 汇编语言中两个操作数不可以都来自主存, 不然访存次数太多了, 执行会很慢**

### 常见算术运算指令

![算术运算指令](https://yangqiuyi.com/content-assets/cdf8725db1b718b91ae9.png)![add/sub](https://yangqiuyi.com/content-assets/bbdce4733f70e766579f.png)

### 常见逻辑运算指令

![逻辑运算指令](https://yangqiuyi.com/content-assets/04d1d1988761d87ad876.png)

### AT&T 格式

- AT&T: Unix/Linux 常用格式(贝尔实验室发明)
- Intel: Windows 常用

![AT&T v.s. Intel](https://yangqiuyi.com/content-assets/b52e5c41dabd7a700d87.png)

如此看来还是 Intel 格式比较简洁, 符合笔者的口味().

### if-else

![if else](https://yangqiuyi.com/content-assets/35d9948f5ece890f7351.png)

### 循环

![for](https://yangqiuyi.com/content-assets/f00b5b46c8dd652d0893.png)

**loop:**

![LOOP](https://yangqiuyi.com/content-assets/57a40fba1c4b516ad43f.png)

## 函数调用

x86 系统中, 默认以 4 字节作为栈的操作单位.

`EBP`堆栈基指针, 指向当前栈帧的"底部(高地址)",

`ESP`堆栈顶指针, 指向当前栈帧的"顶部(低地址)"

- `call`: 把 IP 压栈, 然后无条件转移至被调用函数的第一条指令.
- `ret`: IP 旧值出栈, 无条件转移至旧值.
- `Push <val>`: ESP-4, 再把`<val>`压入
- `Pop <Addr>`: 栈顶元素写入`<Addr>`, 再让 ESP+4

### 切换栈帧

进入函数时:

```asm
push ebp
mov ebp, esp
```

等价于:

```asm
enter
```

退出函数时:

```asm
mov esp, ebp
pop ebp
```

等价于:

```text
leave
```

~~妙啊~~

![总结](https://yangqiuyi.com/content-assets/1f8a209784b9fd6d4fe1.png)![总结](https://yangqiuyi.com/content-assets/0a8de962bdc50bc3094f.png)

## CISC 和 RISC

![CISC & RISC](https://yangqiuyi.com/content-assets/f5ccffe994038d3b89bd.png)

## Sitemap

See the full [sitemap](https://yangqiuyi.com/sitemap.md) for all pages.
