最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

内存地址

IT圈 admin 14浏览 0评论

内存地址

一:寄存器的结构_eax与ax,ah,al的关系

 eax分一半是ax,ax内部左边是ah,右边是al。即这样的关系。修改al的值ax也会变,eax也会变。

 注意:8位寄存器只能存放两个16位数,因为一个8位寄存器存放8位二进制数,1位16进制数等于4位二进制数。

二:窗口介绍

 编号:

修改指定内存中的数据: 

 注意:前面定义的类型(如byte,word,dword)要与后面的存入数据的宽度一致。如果存入的是word类型,而一个存储单位只能存一个字节,那么会依次顺延,更改存储单位数据数据。

 存入word类型到D8中,D9数据

LEA指令:取地址

 将12FFC4的地址传入EAX中(后来用于间接取址,当括号内的值是变量时想得到地址需要进行此操作)

指令+存入的地址+数据宽度+PTR DS:[要取数据的地址](???)

补充:如何不修改代码改值

 

 此时是将ECX的地址所指向的变量取出(???)

取地址方法总结:

1:直接放地址编号

2:将地址放到寄存器中,通过寄存器找内存

LEA指令执行完后ECX的值等于EAX的值

MOV指令是将值取出,LEV指令是取出地址。

其他寻址方式:

 

 (方括号内的会有寄存器的计算,但只能是(reg+reg*(1,2,4,8)+立即数形式。

三:堆栈

临时存放数据,方便读入和取出

可以记录存储多少数据

能够快速找到存储的数据

采取基础地址=段地址*16+偏移地址方式找到地址。例如:base+...或者top+...(其中base和top是任意两个寄存器)

 当不需要这组数据时,将top下移

如何存储(实际操作):

开始可以将栈底和栈顶存到同一位置

存入数据:地址=栈顶位置-数据宽度 (为什么是-数据宽度?因为window中是向低位拓展,即栈底高于栈顶)

 修改栈顶的值

 此方法是先存数据再移栈顶的位置,也可以先移栈顶位置,再存数据。

先移栈顶值,再存数据,此时存入存入数据到寄存器中不需要再-数据宽度。

 

 如何弹出数据?

先取出数据到其他寄存器后再将移地址(也可以先移地址再取数据)

 

 其他存储数据,弹出数据指令:

push指令:将数据存入cpu中常用的存储堆栈的寄存器esp(栈顶)中(ebp栈底)

pop指令:将数据弹出。例如:pop eax 是将数据弹出并存储到eax中。

 

内存地址

一:寄存器的结构_eax与ax,ah,al的关系

 eax分一半是ax,ax内部左边是ah,右边是al。即这样的关系。修改al的值ax也会变,eax也会变。

 注意:8位寄存器只能存放两个16位数,因为一个8位寄存器存放8位二进制数,1位16进制数等于4位二进制数。

二:窗口介绍

 编号:

修改指定内存中的数据: 

 注意:前面定义的类型(如byte,word,dword)要与后面的存入数据的宽度一致。如果存入的是word类型,而一个存储单位只能存一个字节,那么会依次顺延,更改存储单位数据数据。

 存入word类型到D8中,D9数据

LEA指令:取地址

 将12FFC4的地址传入EAX中(后来用于间接取址,当括号内的值是变量时想得到地址需要进行此操作)

指令+存入的地址+数据宽度+PTR DS:[要取数据的地址](???)

补充:如何不修改代码改值

 

 此时是将ECX的地址所指向的变量取出(???)

取地址方法总结:

1:直接放地址编号

2:将地址放到寄存器中,通过寄存器找内存

LEA指令执行完后ECX的值等于EAX的值

MOV指令是将值取出,LEV指令是取出地址。

其他寻址方式:

 

 (方括号内的会有寄存器的计算,但只能是(reg+reg*(1,2,4,8)+立即数形式。

三:堆栈

临时存放数据,方便读入和取出

可以记录存储多少数据

能够快速找到存储的数据

采取基础地址=段地址*16+偏移地址方式找到地址。例如:base+...或者top+...(其中base和top是任意两个寄存器)

 当不需要这组数据时,将top下移

如何存储(实际操作):

开始可以将栈底和栈顶存到同一位置

存入数据:地址=栈顶位置-数据宽度 (为什么是-数据宽度?因为window中是向低位拓展,即栈底高于栈顶)

 修改栈顶的值

 此方法是先存数据再移栈顶的位置,也可以先移栈顶位置,再存数据。

先移栈顶值,再存数据,此时存入存入数据到寄存器中不需要再-数据宽度。

 

 如何弹出数据?

先取出数据到其他寄存器后再将移地址(也可以先移地址再取数据)

 

 其他存储数据,弹出数据指令:

push指令:将数据存入cpu中常用的存储堆栈的寄存器esp(栈顶)中(ebp栈底)

pop指令:将数据弹出。例如:pop eax 是将数据弹出并存储到eax中。

 

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论