Skip to content

Commit

Permalink
在 README 中增加对寄存器的说明
Browse files Browse the repository at this point in the history
  • Loading branch information
冰糖雪狸 authored and 冰糖雪狸 committed Feb 10, 2024
1 parent e33fb6a commit eda7940
Showing 1 changed file with 68 additions and 5 deletions.
73 changes: 68 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ In this folder, I recorded notes and codes for learning assembly language in the
注:部分代码及练习基于王爽《汇编语言》第三版,具体题目及要求请见书中

</br>

**笔记请详见:**

[这是 Word 格式的笔记呀](https://github.com/NekoSilverFox/Assembly/blob/master/%E3%80%90%E7%AC%94%E8%AE%B0%E3%80%91%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80.docx)

</br>

文件夹编号说明:

其中,为了避免文件夹命名及编号混乱:【预留空位】指的是为以后复习或者相关新项目所预留出来的编号。
Expand Down Expand Up @@ -80,7 +80,70 @@ In this folder, I recorded notes and codes for learning assembly language in the
| 300 - 310 | C/C++ 下汇编测试 |
| 500 | 高级汇编例程 |


# 寄存器

## 普通寄存器

| 英文名 | 寄存器 | 类型 | 具体名称 | 常用关联 |
| ------------------- | ------ | ---------- | ------------------ | ------------------------------------------------------------ |
| Accumulator | ax | 数据寄存器 | 累加寄存器/累加器 | div除法指令和mul乘法指令会调用;端口的输入输出只能用ax、al存放 |
| Base | bx | 数据寄存器 | 基地址寄存器 | 经常与ds, es连用;[bx] 默认调用ds:[bx] |
| Count | cx | 数据寄存器 | 计数器寄存器 | 储存循环次数,loop、jcxz指令会调用cx |
| Data | dx | 数据寄存器 | 数据寄存器 | 常用来储存数据 |
| Stack Pointer | sp | 指针寄存器 | 堆栈指针寄存器 | 存放栈顶的偏移地址 |
| Base Pointer | bp | 指针寄存器 | 基指针寄存器 | 默认与ss相关联,比如 [bp] 默认调用 ss:[bp] |
| Source Index | si | 变址寄存器 | ****地址寄存器 | 常用于 ds:[si],存放偏移地址,数据****哪里来 |
| Destination Index | di | 变址寄存器 | **目的**地址寄存器 | 常用于 es:[di],存放偏移地址,数据****哪里去 |
| Data Segment | ds | | 数据段寄存器 | 常用于 ds:[si],存放段地址,数据从哪里来 |
| Extra Segment | es | | 附加段寄存器 | 常用于 es:[di],存放段地址,数据到哪里来 |
| Stack Segment | ss | | 堆栈段寄存器 | 存放栈的段地址 |
| Code Segment | cs | | 代码段寄存器 | 存放执行指令的段地址 |
| Instruction Pointer | ip | 控制寄存器 | 指令指针寄存器 | 存放执行指令的偏移地址 |
| Flag | FLAG | 控制寄存器 | 标志寄存器 | 请见下一表格《标志寄存器 PSW》 |



## 标志寄存器 (PSW)

> PWD - program status word 程序状态字
- Flag寄存器是**按位起作用**的,也就是说,它的**每一位都有专门的含义,记录特定的信息**
- mov、push、pop 对标志位寄存器没有影响
- 溢出:运算结果超出了机器所能表达的范围,把符号位给顶了
- 注意CF和OF的区别
- 16进制数大于80H时既可以看作是有符号数,也可以看作为无符号,这取决于将标志位视为什么(对于8位寄存器)

```assembly
标志寄存器在Debug中的表示:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0000 ES=0000 SS=0000 CS=0000 IP=0000 NV UP EI PL NZ NA PO NC
↑ ↑ ↑ ↑ ↑ ↑
OF DF SP ZF PF CF
```

|| 中文名称 | 标志寄存器 | 真值 1 | 假值 0 | 首字母含义 | 操作的编码 | 说明 |
| ---- | -------- | ---------- | ------ | ------ | ---------- | ---------- | ---- |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |



# 指令

---

Expand Down

0 comments on commit eda7940

Please sign in to comment.