文章目录
dup伪指令
db / dw / dd nums dup (0)
原地开辟nums个大小为db 或 dw 或 dd 的 0
times伪指令
times nums db / dw / dd 0
原地开辟nums个大小为db 或 dw 或 dd 的 0
resb / resw / resd指令
resb nums
跳过nums字节大小的数据,不改变原本数据,若写到程序中,程序被读到内存的时候,内存这nums字节大小的数据,就在程序段中
resw nums
跳过nums字大小的数据,不改变原本数据
resd nums
跳过nums双字大小的数据,不改变原本数据
mov指令
mov OPRD1, OPRD2
将OPRD2送到OPRD1中
and指令
and OPRD1, OPRD2
两操作数进行按位与运算,结果存于OPRD1
两操作数长度必须一致
or指令
or OPRD1, OPRD2
两操作数进行按位或运算,结果存于OPRD1
两操作数长度必须一致
xor指令
xor OPRD1, OPRD2
两操作数进行按位异或运算,结果存于OPRD1
两操作数长度必须一致
push指令
1、push OPRD
OPRD为16为操作数或者16位寄存器,将OPRD压入栈中
等价于
sp = sp - 2
mov [ss : sp], OPRD
pop指令
1、pop OPRD
OPRD为16为操作数或者16位寄存器,将栈顶元素出栈并赋予OPRD
等价于
mov OPRD , [ss : sp]
sp = sp + 2
jmp指令
1、jmp near 标号
实现段内跳转
2、jmp OPRD
OPRD为单字操作数,实现段内跳转
OPRD为双字操作数,实现段间跳转
3、jmp far 标号
实现段间跳转
cmp指令
1、cmp OPRD1, OPRD2
两操作数进行相减比较,与sub指令不同的是,cmp指令不改变两操作数的值
JG / JL指令
1、JG 标号
比较结果为大于时,跳转
2、JL 标号
比较结果为小于时,跳转
JGE / JLE指令
1、JGE 标号
比较结果为大于等于时,跳转
2、JLE 标号
比较结果为小于等于时,跳转
call指令
1、call OPRD
过程调用(函数调用)指令,分为段内调用和段间调用,搭配ret进行使用
call指令跳转到OPRD处之前,将当前地址压入栈中
ret指令
1、ret
结束过程调用,从栈中弹出调用该过程的地址并跳转回去,与call指令搭配实现过程调用(函数调用)
未完…
04/14/2022