微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第2章 一些数据单位(X86汇编教程)

第2章 一些数据单位(X86汇编教程)

时间:12-01 来源:互联网 点击:
这章主要讲电脑里数的单位,可能会写得比较难以理解,但是这章很重要.

前面说道,2进制(因为bit,中文比特),也就是1和0组成的数字,每8个比特为1个字节(英文叫做byte).

在电脑中比特必须按照字节的方式对齐,也就是说,不可能出现内存中一段数据只有1比特这样的情况,一次性操作的数据最少为1个字节,也就是8个比特.从这方面来看,字节才算是电脑中的最小数据单位.

在电脑里,几乎一切东西右数字构成.由字节为基本单位.我们以字节方式查看一下图片音乐之类的文件看看吧:

这里,介绍一个工具,WinHEX,相信很多人都已经认识了.照顾一下不认识的同学,在这里随便讲讲......

下载地址:http://www.51hei.com/f/winhex.zip

#WINHEX.rar

启动WinHEX:



最上边的菜单栏,文件->打开


选中你要打开的文件.你将看到如下内容:


我用WinHEX打开了一个PNG图片文件.

最上边灰色那里,是显示你打开的文件的文件名.已经打开了一个PNG文件.

白色区的offset竖排(也就是那些8个16进制数字排列在一起的那一框)为当前行第一个字节的偏移地址呢?偏移地址,是一个字节的距离第一个字节的长度 (以字节为单位).顺带一提,在电脑里有些东西的统计是以0开始的,我们生活中数数是1...2...3但是在电脑中有时是从0开始的,0...1...2...3学过高级语言的可能已经习惯了,高手的代码里经常出现把某某数字加1或者减1就是为了这样.

这样,我们的第一个字节的偏移为0.偏移竖排表示了第一个字节的偏移,偏移横排则可以确定每个字节的偏移.

算法:

当前行的偏移竖排处的数值+你要计算的那个字节在偏移横排对应的值=你要计算的那个字节的偏移

比如:第3行第7个字节.

第3行偏移竖排处的值为00000020偏移横排值为6(为什么第7个数字的横排值会是6?没搞错哟,记得前面说的从0开始吗?从0开始计算,第7个字节为6哟!以后会经常出现这样的情况,汇编学久了就习惯了)

加起来就是26H(注意:16进制的哟!)

最右边就是ASCII解码了,什么是ASCII呢?那是一种只有英文字母,数字,标点符号的文本编码(文本编码:用数字表示字符.)正常的ASCII只有一个字节,最右边就是对ASCII进行解析的区域,它能解析出这个字节和哪个字符的ASCII码相同,并显示出那个字符,如果那个字节没有对应的字符则显示小数点.

好了,关于WinHEX的讲解就到这里了.继续讲数据单位.

之前说到,从某种意义上来说字节才是最小的单位.接着说说比字节大的单位.

字 (WORD),1个字型数据有2个字节,在文本编码中,word才是表示一个字符的最佳单位.因为字节(byte)只能表示0-255之间的数字(用计算器把2进制的8个1转换成10进制看看)而就拿中文来说吧.几千个中文,最大才255的字节型怎么够呢?所以,用字形(WORD)有16位2进制=65536(最大值65535,但是,从0开始啊!别把0丢了)种可能几千个中文完全够用了.所以中文编码正常的是用2个字节(也就是"字"表示一个文字),可以做一个实验:用记事本输入一个中文,然后保存下来,用WinHEX打开看看.

然后就是双字(DWORD)了,顾名思义,就是2个字形数据合一起,有32比特,可能有人已经想到了,32位系统能一次性计算一个双字数据,但是不要想成双字是 32位系统独有的呀,曾经的16位MS-DOS系统也是能有双字型数据的哟!所谓字和双字只是逻辑上的.完全能把字形数据当作2个排列在一起的字节看待, 双字也是,可以当作是4个字节看待.

.这些都是小单位.说说大点的单位吧.

KB,在某些地方是1000字节的意思,但大多数时候是指1024个字节

MB,代表1000KB或1024KB(大多数代表1024KB)

GB,1000MB或1024MB

TB,1000GB或1024GB(TB可是写这教程的最近几年才开始使用的...似乎很多人都还不知道有这个单位呢,,)

在大家买手机记忆卡的时候是不是有出现过明明买的2G的卡,打开一看只有1.8G呢?实际上这是算法不同造成的.看到这里,大家都知道从KB开始,数据有 1000和1024这2种进制.厂家用的就是1000进制而我们用的就是1024进制,所以,我们看到的记忆卡容量通常比卡上表示的小.按照以上方法,计算一下,你会发现,你买的卡的空间不但没有小于卡上面写的,反而还大了一点呢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top