标题:
[原创]
汇编基础一日一学习4
[打印本页]
作者:
柔肠寸断
时间:
2009-5-18 21:26
标题:
汇编基础一日一学习4
汇编基础一日一学习4
首先今天我给大家来讲解下我们内存中数据的存储以及存取。这节课的基础也是非常重要的。。因为我们大家都知道80386的数据地址线是32根,所以它一次可以传送数据是4个字节。所以我们内存单元是按照4个字节来对齐的。 用高级语言的话,就是DWORD类型也就是4个字节。
首先来看下00403025h在内存中的存放情况。因为我们内存中是一段连续的字节单元。一个内存单元存放一个字节。 并且是按照低地址结尾的。也就是低地址是放在内存中的低地址处。高地址放在内存中的高地址处。
为何我们一些程序通过编译器以及链接器生成后,我们通过一些16进制编辑工具(如c32asm ,UE等)打开后,总是看到一些RVA地址是倒序的形式。这就是因为我们编译的程序必须按照我们内存中的存放形式,这样我们的程序被映射到内存后,我们cpu才能正确的读入,否则读取的就是错误的数据。
之前我们已经简单的讲过mov语句,例如将立即数00403025h传送到eax寄存器。
mov eax, 00403025h 等. 之前我们还学过将一个内存单元的数据传送到一个寄存器中。
这样的格式呢就是mov 寄存器名, [内存单元的偏移地址]
"[]"表示的就是一个内存单元。 "[xxxx]" 中的xxxx就表示的内存单元的偏移地址。 因为80386是平坦模式寻址,所以此时不需要段寄存器。
上面是将内存单元的数据传送到寄存器。那么如何将寄存器中的值传送到内存单元呢。?
呵呵,我们反之其道而行。
例如eax = 00403050h ,我们想把eax寄存器的值传送到内存单元[00405085]处
也就是这样。 mov [00405085], eax
这样的格式呢就是 mov [内存单元的偏移地址], 寄存器或者是立即数(也可以说ASCII码) 嘿,想起免杀课程动态恢复ASCII的那节课程了吗?其实利用的就是这个原理。
到这里我在给大家总结一下:
mov 寄存器名, [内存单元的偏移地址] ;这样的形式就是读取内存单元的数据
mov [内存单元的偏移地址], 寄存器或者是立即数(也可以说ASCII码) ;这样的形式就是向内存单元中写入数据
小作业:
1.假如此时eax寄存器的值=00004000h, 那么00402530h地址的双字内存单元中存放的数据是 70h 60h 50h 00h
那么执行mov eax, [00402530h] 后,eax的寄存器值等于多少?
2.假如此时eax寄存器的值=00305060h, 那么此时00403520h地址的双字内存单元中存放的数据是 00h 50h 60h 00h,那么执行
mov eax, 00403520h 后, eax的寄存器值等于多少?
3.假如此时eax寄存器的值=00403020h, 那么ebx寄存器的值是00305025h, 00305025h地址的双字内存单元存放的数据是 00h 30h 50h 00h
那么执行 mov eax, [ebx] 后,eax寄存器的值等于多少?
作者:
leon
时间:
2009-5-19 09:03
很好很强大..........
作者:
lichun_530
时间:
2009-5-19 16:17
看了看!
顶了顶!
作者:
EndTo偌枫
时间:
2009-5-27 10:33
学习阿Y荡阿.em66.
作者:
EndTo偌枫
时间:
2009-5-27 10:33
学习阿Y荡阿.em66.
作者:
cheng2102
时间:
2009-5-28 10:46
辛苦了!感谢中......
作者:
plantseth
时间:
2009-5-29 19:23
1.70h 60h 50h 00h
2.00403520h
3.00h 30h 50h 00h
作者:
自在飞花
时间:
2009-6-2 22:57
1.假如此时eax寄存器的值=00004000h, 那么00402530h地址的双字内存单元中存放的数据是 70h 60h 50h 00h
那么执行mov eax, [00402530h] 后,eax的寄存器值等于多少?
00506070H
2.假如此时eax寄存器的值=00305060h, 那么此时00403520h地址的双字内存单元中存放的数据是 00h 50h 60h 00h,那么执行
mov eax, 00403520h 后, eax的寄存器值等于多少?
00605000H
3.假如此时eax寄存器的值=00403020h, 那么ebx寄存器的值是00305025h, 00305025h地址的双字内存单元存放的数据是 00h 30h 50h 00h
那么执行 mov eax, [ebx] 后,eax寄存器的值等于多少?
00503000H
作者:
scien
时间:
2009-6-5 23:24
继续学习中
作者:
cmfming
时间:
2009-11-27 12:59
辛苦了!感谢中......
作者:
hkhs615
时间:
2009-12-17 16:19
学习.................
作者:
fanxiangxx
时间:
2010-10-1 08:32
貌似没答案呀····
作者:
kisaly
时间:
2011-8-2 15:53
这个意思是如果传送的是数据,内存-寄存器 数据倒过来显示,寄存器-内存 数据也是倒过去的。?
欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/)
Powered by Discuz! 7.2