From 9041b405cfc343bea0c86837ebf92f5fe70f8059 Mon Sep 17 00:00:00 2001 From: BEERTOY <33729300+BEERTOY@users.noreply.github.com> Date: Wed, 22 Nov 2017 00:54:24 +0800 Subject: [PATCH] Create 20171122_1.md --- homeworks/5team/20171122_1.md | 56 +++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 homeworks/5team/20171122_1.md diff --git a/homeworks/5team/20171122_1.md b/homeworks/5team/20171122_1.md new file mode 100644 index 0000000..781fe02 --- /dev/null +++ b/homeworks/5team/20171122_1.md @@ -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