关于内存地址和寄存器中的高位与低位简介

我们可以假设内存表就是一张纸。当我输入一个数据的时候,软件就会为我们在内存中开辟一个地址,以往内存表中存放数据,如这里就是往这个地址开始写入数据:0040339C。
我们对内存表的高位和低位的理解就可以想做这里就是一张白纸。我们把每个空格都当作一个位置,从0~1000开始计数,写在最前的就是低位,比如说写四个数,从0~3。GAME数据的低位到高位就是从G到E。

之后呢,我们从内存表中取数据,放入寄存器中,我们可以把寄存器比做一个水桶,我们放入数据的时候肯定是把"水"先倒到水筒的底部。
如我们从内存中取GAME放入到水桶中的话 水桶中存放的数据就成了EMAG ,也就是 45 4D 41 47 (注意每个字节是两个16进制的字符)
而水桶的高位和地位呢,想必大家会很明白,水桶的最上方就是高位,水桶底就是低位,所以EMAG 数据的高低位就是 E~G(E为最高位 G为最低位)

这样大家就清楚高高低低原则了 (低位用D表示,高位用G表示)
                                D            G                          G             D
如果把内存地址的数据 01 02 03 04  放到寄存器就是 04 03 02 01
                             G            D                          D             G
如果把寄存器的数据 04 03 02 01  放到内存地址为 01 02 03 04

数据的传递中,是遵循高高低低原则的,相信大家按照这个思路去理解,会更简单些~~

时间: 2024-11-05 17:21:55

关于内存地址和寄存器中的高位与低位简介的相关文章

Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型,函数之内的 我们先来看一张传播久远的图片' 一.各种数据类型介绍 整型 整形包括短整型.整形和长整形. 短整形 short a=1; 整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前.高位在

Window中的内存地址(小知识)

现在的编辑器大部分工作都是内存管理托管型,所以很少直接对Window的内存地址直接管理了. Window中的内存地址主要是以16进制数字体现的,当操作系统为32位时,那么每个内存地址为2的32次方,也就是32位,而一个字节是8位,也就是4个字节. 那怎么转化为16进制那,如果是16进制描述,那么16进制的一位就是2的4次方,也就是16进制的2位是一个字节. 结论就是一个字节=2进制的8位或者1个字节=16进制的2位. 那么从下个图片中可以看到,16进制描述内存地址每两位是一个字节,那么00018

C#中显示引用类型变量的内存地址(以字符串为例)

对于C/OC/C++程序员来说,输出一下所创建对象的内存地址,观察.分析或者单纯处于好奇心,都是很平常的事情. 然而对于将安全放在第一位的C#语言来说,这个"平常事"貌似并不那么直接. 本文在stackoverflow的问答基础上对C#语言显示引用类型内存的地址的方法进行了封装, 并以System.String和StringBuilder两个类为例展示了他们的内存地址变化情况. 博文首发地址:http://blog.csdn.net/duzixi 首先,在工程设置中,勾选"允

python中的函数对象的内存地址是多少

今天和同学讨论一个问题,发现了函数的内存地址和我想象的不一样. 我以为同一个函数,假如给的参数不一样,那么这两个函数的id就不一样. 然后经过实验,发现python为了便于管理函数,所有的函数都放在同一片内存空间里面. func函数是我定义的一个函数,从结果可以看到func函数和print函数的内存地址是一样的. 这应该是python底层定义的,为了便于管理Python的各种函数和自己项目中定义的函数,可以想到,也许其他的地方也是这个管理机制呢. 原文地址:https://www.cnblogs

c语言中通过指针将数值赋值到制定内存地址

1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛.所以我们可以用下面的方法: int *p = (int *)0x12ff7c; *p = 0x100; 需要注意的是将地址0x12ff7c赋值给指针变量p的时候必须强制转换. 1.1 为什么在此处,我们敢往0x12ff7c这个地址赋值呢? 至于这里为什么选择内存地址0x12ff7c

11.用C对32位内存地址的访问方式

使用一个32位处理器,要对一个32位的内存地址进行访问,可以这样定义 #define RAM_ADDR     (*(volatile unsigned long *)0x0000555F)     然后就可以用C语言对这个内存地址进行读写操作了     读:tmp = RAM_ADDR:     写:RAM_ADDR = 0x55: 定义volatile是因为它的值可能会改变,大家都知道为什么改变了: 如果在一个循环操作中需要不停地判断一个内存数据,例如要等待RAM_ADDR的I标志位置位,因

更灵活的定位内存地址的方法(学习汇编)

1.and指令:逻辑与指令,按位进行与运算.与1不变,与0变0,可将对象相应位设为0. 2.or指令:逻辑或指令,按为进行或运算.或1变1,或0变0,可将对象位设为1. 3.[BX+idata]的几种表现形式: mov ax,[200+bx] mov ax,200[bx] mov ax,[bx].200 4.SI和DI是8086CPU中和Bx功能相似的寄存器,只是不能分成两个8位的寄存器来用. 5.[BX+SI]进行内存地址定位的几种形式: mov ax,[bx][si] mov ax,[bx+

汇编语言学习第七章-更灵活的定位内存地址的方法

本博文系列参考自<<汇编语言>>第三版,作者:王爽 前面已经通过类似[0]和[bx]的方法进行了内存定位了.本章将涉及更多内存地址定位和编程的方法. 7.1 and 和 or 指令 (1) and指令,逻辑按位与指令 例如: mov al,01100011B and al,00111011B 执行后 al=00100011B and指令可以用来将某个数的位置为零. 比如我们要将al的第二位置为零,则: and al,11111101B 依次类推. (2) or指令,逻辑按位或指令

Java千百问_01基本概念(017)_内存物理地址在CPU中如何形成

点击进入_更多_Java千百问 1.什么是内存的物理地址 我们通过8086CPU来说明内存地址是如何形成的. 首先我们要了解物理地址,当CPU需要访问一个内存单元时,需要给出内存单元的地址,而每一个内存单元在物理内存空间中都有一个唯一的地址,即可以通过这个地址定位到内存单元,而这个地址即为物理地址. CPU通过地址总线将一个内存单元的物理地址送入存储器,而后CPU便可以通过这个物理地址来访问这个物理地址所指向的内存单元了. 2.内存物理地址在CPU中如何形成 首先,我们知道8086CPU的地址总