当我们在程序中需要对某个数进行乘2(左移)或除2(右移)运算时,使用移位操作会使运算变得非常简单。
我们通常把微处理器可以寻址访问的存储器称为随机访问存储器(random accessmemory,RAM),主要的原因是:只要提供了存储器地址(有多种方式),微处理器可以用非常简便的方式访问存储器的任意存储单元。RAM就像一本书,我们可以翻到它的任意一页。这种方式很方便,它不像存储在一个微缩胶片上的整个星期的报纸,为了阅读星期六的内容,我们需要扫描几乎整个星期的内容。同样,它也比读取磁带快得多,因为当我们要听最后一首歌时,需要快进磁带的一整面。微缩胶片和磁带都不是随机访问的,它们是顺序访问(sequential access)的。
显然,随机访问存储器是非常好的一种寻址方式,对于经常访问存储器的微处理器来说更是如此。然而,在某些情况下使用不同的寻址方式访问存储器也是有好处的。例如,下面例子中的这种存储方式既不是随机的也不是顺序的:假设你在办公室工作,有人会到你办公桌前为你分配任务,每一项工作都用到某种文件夹。这些工作通常有这样的特点,在你完成某项工作之前首先要做另一项相关工作,并用到另一个文件夹。因此你只能放下第一个文件夹,并在它上面打开一个第二个文件夹继续工作。现在又有一个人给你分配了一个比前一项优先级更高的工作,于是你打开第三个文件夹放在前面两个上,继续工作。而这项工作也需要先做一项相关工作,于是你只好再打开第四个文件夹,现在你的办公桌上已经堆叠了四个文件夹了。
你可能已经注意到了,事实上,这些堆叠的文件夹很有序地保存了你干活的顺序轨迹。最上面的文件夹总是代表优先级最高的工作,完成该工作之后就可以做接下来的工作了,依此类推。最后当你处理完办公桌上最后一个文件夹(即接受的第一个任务)后,就可以回家了。
这种形式的存储器称作堆栈(stack)。使用堆栈时,我们以从底部到顶部的顺序把数据存入堆栈,并以相反的顺序把数据从堆栈中取出,因此该技术也称作后进先出存储器(last-in-first-out,LIFO)。堆栈的特点是,最先保存到堆栈中的数据最后被取出,而最后保存的数据则被最先取出。
同样,在计算机中也可以使用堆栈,当然计算机中的堆栈保存的是数据而不是工作。大量的实践证明,在计算机中使用堆栈技术是十分方便的。通常把将数据存入堆栈的过程称作压入(push),把从堆栈取出数据的过程称作弹出(pop)。
19 两种典型的微处理器
291