几组汇编指令的比较

简介: 几组汇编指令的比较

1、给内存变量赋32位立即数值试验

1)使用push-pop指令

0040100A  |. 68 31323334    PUSH 34333231

0040100F  |. 8F05 50304000  POP DWORD PTR DS:[403050]

00401015  |

指令长度:015h-0Ah=0Bh=11d

2)使用 mov 指令

0040101A  |. C705 50304000 >MOV DWORD PTR DS:[403050],34333231

00401024  |

指令长度:024h-01Ah=0Ah=10d

2、把32位内存变量A的值赋给32位内存变量B

1)使用push-pop指令

0040102E  |. FF35 50304000  PUSH DWORD PTR DS:[403050]

00401034  |. 8F05 4C304000  POP DWORD PTR DS:[40304C]

0040103A  |

指令长度:03Ah-02Eh=0Ch=12d

2)使用 mov 指令通过寄存器0040103F  |. A1 50304000    MOV EAX,DWORD PTR DS:[403050]

00401044  |. A3 4C304000    MOV DWORD PTR DS:[40304C],EAX

00401049  |

指令长度:049h-03Fh=0Ah=10d

3、调用参数为32位数值0的自定义函数

1)直接用32位数值0作参数

0040104E  |. 6A 00          PUSH 0

00401050  |. 6A 00          PUSH 0

00401052  |. 6A 00          PUSH 0

00401054  |. 6A 00          PUSH 0

00401056  |. 6A 00          PUSH 0

00401058  |. E8 18000000    CALL test.00401075

0040105D  |

指令长度:05Dh-04Eh=0Fh=15d

2)把寄存器EAX置0,再把5个EAX作参数

00401062  |. 33C0           XOR EAX,EAX

00401064  |. 50             PUSH EAX

00401065  |. 50             PUSH EAX

00401066  |. 50             PUSH EAX

00401067  |. 50             PUSH EAX

00401068  |. 50             PUSH EAX

00401069  |. E8 07000000    CALL test.00401075

0040106E  |

指令长度:06Eh-062h=0Ch=12d


相关文章
|
10月前
|
存储 Unix 编译器
汇编语言----X86汇编指令
汇编语言----X86汇编指令
414 2
|
10月前
|
存储 机器学习/深度学习 移动开发
汇编语言指令系列
汇编语言指令系列
1712 0
|
5月前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
133 0
|
5月前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
524 0
|
8月前
|
存储 机器学习/深度学习 芯片
8086 汇编笔记(十二):int 指令 & 端口 & 直接定址表
8086 汇编笔记(十二):int 指令 & 端口 & 直接定址表
|
8月前
|
存储 算法 安全
深入理解汇编语言:基础语法和常用指令介绍
深入理解汇编语言:基础语法和常用指令介绍
|
9月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
141 1
8086 汇编笔记(九):call 指令 和 ret 指令
8086 汇编笔记(九):call 指令 和 ret 指令
|
8月前
|
编译器
8086 汇编笔记(八):转移指令的原理
8086 汇编笔记(八):转移指令的原理
|
10月前
|
安全 编译器
8086 汇编笔记(四):[BX] 和 loop 指令
8086 汇编笔记(四):[BX] 和 loop 指令