Inkit wiki

wiki.inkit.org

用户工具

站点工具


prog:asm

汇编

寄存器

通用寄存器

AX累加器
BX基地址寄存器
CX计数寄存器
DX数据寄存器
AX
AH AL
00000000 00000000

其他寄存器

指令段寄存器 CS
指令指针寄存器 EIP 存放下次将要执行的指令在代码段的偏移地址

8086机中,任意时刻,CPU将CS:IP指向的内存单元当作指令执行

段寄存器SS
指针寄存器SP

push和pop指令访问的栈空间的地址不是在指令中给出的,而是由SS:SP指出的

数据段寄存器 DS
附加段寄存器 ESP 类似DS
基址指针寄存器 EBP
存放堆栈内存储单元的偏移量
源变址寄存器 ESI
目的变址寄存器 EDI
存放存储单元在段内的偏移量
标志寄存器FR

指令

mov ax,bx ax←bx
add ax, bx ax←ax+bx
sub ax, bx ax←ax-bx
Lea ax, [217a]ax=217aH

cmp 与 jmp

如果ZF=1说明ax=bx,因为ax-bx=0,那么ax必定等于bxJe如果等于则转移
如果ZF=0说明ax≠bx,因为ax-bx≠0,那么ax与bx必定不相等。Jne如果不等于则转移
如果CF=1说明ax<bx,因为ax-bx产生了借位,那么ax必定小于bx。Jb如果低于则转移
如果CF=0说明ax≥bx,因为ax-bx没有产生借位,那么ax必定大于或等于bx。Jnb如果不低于则转移
如果CF=0并且ZF=0,说明ax>bx,因为ax-bx没有产生借位,并且ax-bx≠0,那么ax必定大于bx。Ja如果高于则转移
如果CF=1或ZF=1说明ax≤bx,因为ax-bx产生了借位,又或者ax-bx=0,那么ax必定小于或等于Bx。Jna如果不高于则转移

技术

prog/asm.txt · 最后更改: 2017/05/02 04:55 由 inkit