最新网址:www.83zws.com
首页 > 玄幻魔法 > 红白机大时代 > 第十九章 破解6502密码(中)

第十九章 破解6502密码(中)(1/2)

目录
好书推荐: 大罗天纪 我到未来救世界 从仙剑开始的修仙 嬗仙传之凤箫声起明月中 我有亿万无敌属性 弥天大话之爱爱情 抢个丞相来压寨 支教青云路 漫威之万界聊天群 我不是剑魔

一天后,横井俊平终于看到了让他牵挂了一晚上的答案。看到这个答案的时候,他差点要给自己一拳,因为这个答案点居然是最基础的理论。

“堆栈!?”

不错,王秋阳给出的答案就是堆栈。

所谓堆栈,就是在单片机应用中,有一个特殊的存储区。它的主要功能是暂时存放数据和地址,通常用来保护断点和现场。这个存储区,就是堆栈。

但堆和栈,又有些许的不同。

堆,是队列优先,先进先出(FIFO—first in first out)。

栈,是先进后出(FILO—First-In/Last-Out)。

6502堆栈$100--$1FF最多只能存放127个双字节,所以JSR最大连续的转入深度为127层。如果还有其它数据入栈,子程序转入深度还要减少。所以在设计复杂的程序时,堆栈是会出现溢出的。堆栈溢出,意味着主机会死机。

死机代表什么?

横井俊平终于意识到了关键,因为死机不代表结束。对普通人来说死机意味着重启,而在黑客的手上死机意味着BUG就要出来了。

果然,王秋阳的回复中,依据堆和栈的特点,做出了不一样的文章。

堆,因为是先进先出,理论上是由电脑自行运算。

栈,由于是先进后出,因此可以人为控制其运算。

说形象一点,堆就像地铁,乘客只要买票,上车后可以万事不管,轻轻松松的坐车到站。但是地铁只管到站,不会送你到家门口。

而栈,则更像私家车。私家车需要自己驾驶,不像乘地铁那样轻松。但是它的自由度更大,想去哪儿就去哪儿,想什么时候出发随心所欲。

一个栈,在没有数据进栈时堆栈指针S=$FF。

每当有一个数据进栈S-1→S。

每当有一个数据出时栈S+1→S。

当执行JSR指令时,CPU把下一条指令地址-1,也就是两个字节自动入栈,即是程序的返回地址-1自动入栈,然后转入到子程序中执行。

当遇到RTS时弹出栈顶2个字节,作为程序的返回地址,并转到下一条指令中执行。而这次执行,是可以人为控制的。

也就是说让堆自主运算,然后人为的控制栈的数据流动,这就能够让6502芯片自发的完成定时器的效果,造成和留白一样的假死机,也就是花屏。

而且这个花屏的颜色,将不再是黑色,因为它已经BUG过了。加之栈现在避开的电脑的自主操作,可以这次花屏可以人为的“默认”它显示灰阶。

“还有这种操作?”

看到这里,横井俊平直感慨,为什么自己的思维总跟不上节奏?再看之前的同显五十二色汇编语言,他甚至怀疑这篇稿件是未来的某个人写出来的才对。

83中文网最新地址www.83zws.com

本章未完,点击下一页继续阅读。

目录
新书推荐: 高武:从肝二郎神天赋开始变强 预支未来,修出个人间武圣! 盗墓:悟性逆天,成就见神不坏 肉身成圣:从站桩加点开始 火影教书变强,改变悲剧 我今来见白玉京 人在遮天,系统在完美 火影:辞真传 一世之尊,从遮天伏羲开始 快穿:你惹他干嘛,他恋爱脑来着!
返回顶部