汇编语言 多种寻址方式实现内存读写
首先在“内存布局”页面寻找可读写内存
找到相应位置
下面每次运行完毕后均重新运行恢复上述情形
直接寻址
设置ECX=100,ESI=004B8000H
代码
结果
寄存器间接寻址
设置ECX=100,ESI=004B8000H,EAX=11223344H
代码
结果
寄存器相对寻址
设置ECX=100,ESI=004B0000H,EAX=11223344H
代码
结果
基址变址寻址方式
设置ECX=100,ESI=004B8000H,EDI=00000000H
代码
结果
相对基址变址寻址
设置ECX=100,ESI=004B8000H,EDI=00000000H
代码
结果
带比例因子相对基址变址寻址
设置ECX=100,ESI=0H
代码
结果
编写一段程序,该程序实现将自身复制到一块可读写的内存中
原理就是把程序所在地址的值搬到其他内存,其中其他地址与程序地址一一对应且依次增加,实现了程序的复制。最关键的在于“对应且增加”多少次,即ECX的值,这要根据程序大小来计算
设置EDI=0H
代码如下
其中ECX=1AH
是数了数程序有26字节后加上的,结果如下,完美实现