Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions homeworks/5team/20171122_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# 四种汇编语言
- 十进制
汇编器默认数制,可写成 [十进制数]d或[十进制数]D
- 十六进制
汇编程序中最常用的数制,表示为 0[十六进制数]h或0[十六进制数]H,如果十六进制数的第一位是数字,则开头的0可以省略
- 二进制
常用的数制,示为 [二进制数]b或[二进制数]B
(4位二进制数相当于一位十六进制数)
- 八进制
不是很常用,典型的例子是Unix的文件属性,形式是 [八进制数]q、[八进制数]Q、[八进制数]o、[八进制数]O

※ 调试器默认使用十六进制表示整数

# 简单指令
## 约定
- reg32,32-bit寄存器,如EAX、EBX等。
- reg16,16-bit寄存器,如AX,BX等。
- reg8?,8-bit寄存器,如AL,BH等。
- imm32,32-bit立即数,可以理解为常数。
- imm16,16-bit立即数。
- imm8? 8-bit立即数。
al是ax的低位,ah是ax的高位……
![](http://m0nst3r.me/usr/uploads/2017/11/2905182369.png)
![](http://m0nst3r.me/usr/uploads/2017/11/1975533938.png)


## 常见指令
MOV指令

xchg指令

递增(减)指令

add指令

lea指令

rep、stos指令

逻辑运算

cmp指令

跳转指令

# 练习
把寄存器全部设置成0的状态,然后执行下面的代码:
```
mov eax,0a1234h ;将十六进制数0a1234h送入eax
mov bx,ax ;将ax内容送入bx
mov ah,bl ;将bl内容送入ah
mov al,bh ;将bh内容送入al
```
思考此时EAX的内容是多少?

感觉法:=0a3412h