正在加载图片...
Chinaopup.com 第19章两种典型的微处理器 197 下载 l1010011且CF=1。 RAL和RAR指令有些不同。当向左移位时,RAL指令把CF移入累加器的最低位,而把最 高位移入CF中。例如,如果累加器的内容为10100111,CF=0,RAL指令执行的结果是累加 器的内容变为01001110,且CF=1。同样,在相同的初始条件下,RAR指令使累加器的内容 变为01010011,CF=1 对于乘2(左移1位)和除2(右移一位)操作,移位指令非常方便。 把微处理器寻址的存储器叫作随机访问存储器(RAM)是有原因的:微处理器可以简单 地根据提供的地址访问某一存储位置。RAM就像一本书一样,我们可以打开它的任何一页 它并不像做在微缩胶片上的一个星期的报纸,要找到周六版,需扫过大半周。同样,它也不 同于磁带,要播放磁带上的最后一首歌需快进整个一面。微缩胶片和磁带的存储不是随机 问的,而是顺序访问的 RAM确实效果不错,对于微处理器来说更是如此。但在使用存储器时有所差别是有好处 的,下面就是一种既非随机又非顺序访问的存储方式:假定你在一个办公室里,人们到你桌 前给你分配工作,每个工作都需要某种文件夹。通常你会发现你在继续某项工作之前,必须 使用另外一个文件夹先做一些相关的工作。因此你把第一个文件夹放在桌子上,又拿出第 个文件夹放在它上面进行工作。现在又有一个人来让你做一个优先权高于前面工作的工作, 你拿来一个新文件夹放在那两个上面继续工作。而此项工作又需要另外一个文件夹,这样在 你的桌子上很快就摆了一堆文件夹了。 注意,这个堆非常明确地、有序地保存了你正在做的工作的轨迹。最上面的文件夹总是 最高优先权的工作,去掉这个以后,下一个肯定是你就要做的,如此类推。当你最终去掉了 桌子上的最后一个文件夹后(你开始的第1项工作),你就可以回家了 以这种方式工作的存储器技术叫做作堆栈( stack)。从底向上压入堆栈,从顶向下弹出堆 栈,因此这也叫后进先出存储器,或LIFO。最后放入堆栈中的数据最先被取出,最先放入堆 栈中的数据最后被取出 计算机中也可以使用堆栈,不是用来保存工作而是用来存储数据,且已被证明使用起来 非常方便。向堆栈中放入数据叫作push(压入),从堆栈中取走数据叫作pop(弹出)。 假定你正在用汇编语言设计程序,程序中使用了寄存器A、B和C。但在编程过程中,你 发现此程序需要去做另一件事 个小的计算,其中也要使用寄存器A,、B、C。而你最终 要回到先前的程序,并使用A、B、C中原有的值 当然,你能做的工作只是简单地把寄存器A、B、C中的值保存到存储器中的不同位置 以后再把这些位置的值装载到寄存器中,但这样做需要保存值被保存的位置。一个显然的方 法是把寄存器压入堆栈: 会儿再解释这些指令的作用。现在,我们只需要知道它们以某种方式把寄存器的内容 保存在一个后进先出的存储器中。一旦这些语句执行了,你的程序就可以毫无顾虑地利用这 些寄存器来做其他工作。为了得到原来的值,只需简单地按与压入堆栈相反的顺序把它们从 堆栈中弹出即可,如下所示:第19章 两种典型的微处理器 197 下载 11 0 1 0 0 11且CF = 1。 R A L和R A R指令有些不同。当向左移位时, R A L指令把C F移入累加器的最低位,而把最 高位移入C F中。例如,如果累加器的内容为 1 0 1 0 0 111,CF = 0,R A L指令执行的结果是累加 器的内容变为0 1 0 0 111 0,且CF = 1。同样,在相同的初始条件下, R A R指令使累加器的内容 变为0 1 0 1 0 0 11,CF = 1。 对于乘2(左移1位)和除2(右移一位)操作,移位指令非常方便。 把微处理器寻址的存储器叫作随机访问存储器( R A M)是有原因的:微处理器可以简单 地根据提供的地址访问某一存储位置。 R A M就像一本书一样,我们可以打开它的任何一页。 它并不像做在微缩胶片上的一个星期的报纸,要找到周六版,需扫过大半周。同样,它也不 同于磁带,要播放磁带上的最后一首歌需快进整个一面。微缩胶片和磁带的存储不是随机访 问的,而是顺序访问的。 R A M确实效果不错,对于微处理器来说更是如此。但在使用存储器时有所差别是有好处 的,下面就是一种既非随机又非顺序访问的存储方式:假定你在一个办公室里,人们到你桌 前给你分配工作,每个工作都需要某种文件夹。通常你会发现你在继续某项工作之前,必须 使用另外一个文件夹先做一些相关的工作。因此你把第一个文件夹放在桌子上,又拿出第二 个文件夹放在它上面进行工作。现在又有一个人来让你做一个优先权高于前面工作的工作, 你拿来一个新文件夹放在那两个上面继续工作。而此项工作又需要另外一个文件夹,这样在 你的桌子上很快就摆了一堆文件夹了。 注意,这个堆非常明确地、有序地保存了你正在做的工作的轨迹。最上面的文件夹总是 最高优先权的工作,去掉这个以后,下一个肯定是你就要做的,如此类推。当你最终去掉了 桌子上的最后一个文件夹后(你开始的第 1项工作),你就可以回家了。 以这种方式工作的存储器技术叫做作堆栈( s t a c k)。从底向上压入堆栈,从顶向下弹出堆 栈,因此这也叫后进先出存储器,或 L I F O。最后放入堆栈中的数据最先被取出,最先放入堆 栈中的数据最后被取出。 计算机中也可以使用堆栈,不是用来保存工作而是用来存储数据,且已被证明使用起来 非常方便。向堆栈中放入数据叫作 p u s h(压入),从堆栈中取走数据叫作p o p(弹出)。 假定你正在用汇编语言设计程序,程序中使用了寄存器 A、B和C。但在编程过程中,你 发现此程序需要去做另一件事—一个小的计算,其中也要使用寄存器 A,、B、C。而你最终 要回到先前的程序,并使用 A、B、C中原有的值。 当然,你能做的工作只是简单地把寄存器 A、B、C中的值保存到存储器中的不同位置, 以后再把这些位置的值装载到寄存器中,但这样做需要保存值被保存的位置。一个显然的方 法是把寄存器压入堆栈: PUSH A PUSH B PUSH C 一会儿再解释这些指令的作用。现在,我们只需要知道它们以某种方式把寄存器的内容 保存在一个后进先出的存储器中。一旦这些语句执行了,你的程序就可以毫无顾虑地利用这 些寄存器来做其他工作。为了得到原来的值,只需简单地按与压入堆栈相反的顺序把它们从 堆栈中弹出即可,如下所示:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有