Win32汇编学习笔记(一)

本文介绍了计算机中数据的存储方式,包括字节(Byte)的概念、32位CPU的数据处理方式、little endian和big endian存储顺序的区别,以及有符号和无符号整数、字符和汉字的表示方法,并解释了BCD码的用途。

一、基础

信息以字节为单位存储,即Byte

1Byte8bit,从高到低是7 6 5 4 3 2 1 0

7最高,叫MSBMost Significant Bit

0最低,叫LSBLeast XX

32CPU一次操作可以处理32bit个二进制位。因此需要比字节更大的单位。

比如:字(16bit)、双字(32bit)

如果超过了1Byte,就有个存储顺序的问题。

Inter存一个字,比如0x60 25,存的时候是0x25 0x60的顺序,这是little endian的方式。

Inter不要求字的地址是偶数,如果是偶数,则是一个对准字,如果不是,则称为未对准字。

对应的有big endian方式。在编程前这是首先应该搞清楚的问题。

数据表示

有符号整数用补码。如果用一个字表示一个数,当然有范围问题。

无符号数065535

有符号:-32768 32767

存正整数正常存,存负整数时保存的是数的绝对值取反加1。比如,保存-466

0000 0001 1101 0010 446

1111 1110 0010 1101 取反

1 1

----------

1111 1110 0010 1110 实际保存的数,按照little endian保存,则0010 1110在前,1111 1110在后。

字符表示需要有一个映射表,ASCII最常用。用7bit来表示字符。

汉字表示,中国是GB2312-80标准。用两个Byte表示一个汉字。标准映射了了6763个汉字,分成94个区,每区94个位,编号从0xA0开始,不占有ASCII 0x000x7F。每个汉字有唯一的区码和位码。

UNicode是另一种字符映射,它将全世界的字符都包括进来,也使用2Byte

BCD码,目的是将数据的输入和输出变得简单。存466时,如果用一个字,则

466 0001 1101 0010 0x01 D2

如果用BCD,则之间看成 0x04 0x66分别进行保存就行了,这是压缩BCD码。

如果不压缩,则看成0x04 0x06 0x06分别保存。

Inter系列CPU支持BCD形式数字处理的指令。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值