鱼C论坛

 找回密码
 立即注册
查看: 66|回复: 2

[技术交流] 关于我学汇编爱钻牛角尖

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关于数字与电路:
假设我手上拿了一根导线(即电线),单纯的一根导线,那么这根导线有电吗?
答:肯定是没有电的,因为它没有连接电源。

那如果我们把这根导线切成三段相继接上电源+开头+灯泡,并闭合开关,那么这根导线有电吗?
答:有电且灯泡会亮,如果开关断开,则无电灯泡会灭。

那有没有一种情况,就是这根导线里即有电又无电(即同时存在有电和无电两种状态,灯泡表现为即亮又灭)?
答:不存在,这根导线每次只有一种状态,要么有电,要么无电,不可能存在即有电又无电的状态。

既然如此,假如有16根这种导线,每一根都有明确的一种状态(有电或无电),16根导线就有16种明确状态,我们把有电状态记为"1",无电状态记为"0",按序组合在一起就是16个0和1,我们把这种有电或无电的状态称为"位"("位",可以理解为1位信息,即有电信息或无电信息,一根导线每次只能表示1位信息),16根导线有16种状态就是16位信息(也可以称为16个二进制位,因为每一位不是1就是0,而二进制数是逢二进一,每一位同样不是1就是0),这就是为什么机器指令(也叫机器码)能被机器直接识别和执行的原因,因为机器有电它就工作,无电就是废铁不工作。我们发现数字和电路信息就如此完美的结合在了一起,用数字来表示电路信息(有电与无电)

关于存储单元:
我们知道计算机是以字节为单元存储数据的,为什么不用容量更小的位(1个字节占8个位)?
答:由于1位的空间太小,只能表示两个值(0或1),直接以位为单元存储数据会降低内存访问的效率(例如需要存储一个字节长度的数据,以位为单元存储需要访问8次内存,而如果以字节为单元存储则只需要访问1次即可),所以我们约定以字节作为基本单元存储数据,虽然在物理层面上存储器的最小存储单元是位,但我们在实际使用中,约定以字节作为存储单元(即便某个数据的长度不足1个字节,也依然会分配1个字节的空间来存储它),而且计算机硬件也是按字节而不是位来设计的,使用字节作为单位可以简化电路设计和信号处理,比如通用寄存器的容量也是以字节为单位,通常为8位、16位、32位或64位。

关于高位和低位:
比如一个十六进制数:AAFFH,左边的数据“AA”可以通过右边的数据“FF”累加进位获得(即右边的FF可以通过不断累加1,进位得到AA00H),所以左边的数据自然就比右边的数据的值大,位权也大,我们就把位权大的那个位称为高位,位权低的那个位称为低位,自然高位上的数据称为高位数据,低位上的数据称为低位数据,那么左边的字节“AA”就是高位字节,右边的字节“FF”就是低位字节。

关于数据传输:
如果一串二进制信息大于每次传送信息的信息量(大于总线的宽度),那么就需要分批传送,传送的顺序是先传送低位字节数据后传送高位字节数据,先传送的低位字节数据存储在低地址字节中,后传送的高位字节数据存储在高地址字节中,这是intel的约定,这也是为什么地址值所对应的字节默认为低位字节,还得向高位延申字节而不是向更低位延申的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
三天打鱼两天晒网的我最近又开始捡起汇编来学习了,一些抽象的问题老是理解起来很烧脑,所以就特意用文字的形式把自己的思考记录下来,方便下次复习时直接看,而不是重现烧脑的思考
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
你的问题讨论了计算机体系结构中的几个基本概念:电路中的电流状态、二进制位与字节的关系、高位和低位的定义,以及数据在计算机内部的传输顺序。以下是对这些概念的简要总结:

1. **导线状态与二进制**:
   - 导线存在"有电"或"无电"两种状态,类似于二进制中的"1"和"0"。
   - 一根导线只能表示一位二进制信息——要么是1,要么是0。

2. **字节作为存储单元**:
   - 尽管在物理层面上内存的最小存储单元是"位",但计算机实际上使用"字节"(8位)作为基本存储单元。
   - 以字节为单位进行数据传输和存储提高了内存访问效率,并简化了电路设计。

3. **高位和低位**:
   - 在表示数据时,高位指的是数值权重更大的位置,而低位是数值权重较小的位置。
   - 例如,在十六进制数"AAFFH"中,“AA”是高位字节,而“FF”是低位字节。

4. **数据传输顺序(小端序)**:
   - 小端序(Little Endian)系统中,数据传输顺序是先传输低位字节,然后是高位字节。
   - 低位字节存储在低地址,高位字节存储在高地址。这是Intel架构中常用的数据传输顺序。

这几个基础概念帮助我们理解计算机系统如何处理和存储数据,从位级电信号到逻辑电路,再到最终的计算机操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表