第8章(1 / 14)

加入书签 本章报错

编码的奥秘2强烈推荐: 魔尊的女奴 与虫为伴 与虫为伴 应召灰姑娘 明末风流逐鹿记 甜姊儿的浪漫奇遇 网游之极品教师 流光经年爱未至 王妃太难娶

从此,开始了社团和政府使用计算机的漫长历史。然而,之所以对这段历史感兴趣可能

加上新的“进位加”和“借位减”操作,共有7个操作码:

时钟็

与非门的输出如下表所示:

01้1101600

在于他明了电报和以他名字命名的编码。

第5章绕过拐弯的通信1้9

要回到先前๩的程序,并使用a、b、c中原有的值。

当然,你能做的工作只是简单地把寄存器a、b、c中的值保存到存储器中的不同位置,

以后再把这些位置的值装载到เ寄存器中,但这样做需要保存值被保存的位置。一个显然的方

法是把寄存器压入堆栈:

pusha

pushbຘ

pushc

一会儿再解释这些指令的作用。现在,我们只需要知道它们以某种方式把寄存器的内容

保存在一个后进先出的存储器中。一旦ຆ这些语句执行了,你的程序就可以毫无顾虑地利用这

些寄存器来做其他工作。为了得到原来的值,只需简单地按与压入堆栈相反的顺序把它们从

堆栈中弹出即可,如下所示:

198编码的奥秘

下载

popcນ

popb

popa

记住是后进先出。如果用错了pop语句的顺ิ序,就会引起错误。

堆栈机制的一个好处在于一个程序的不同部分都可以使用堆栈而不会出现问题。例如,

在把aທ、bຘ、c压入堆栈中后,程序的其他部分还可能ม需要把寄存器cນ、d、e的内容压入堆栈:

pushc

pushd

pushe

接着,这一部分程序所要做的就是在第一部ຖ分弹出c、b和aທ之前,用下述方法恢复寄存

器的值:

pope

popd

popc

堆栈是怎样实现的呢?先,堆栈只是不被别的东西使用的正常的ram的一部ຖ分。808๖0

微处理器包含一个ฐ特殊的16位寄存器来对这一部分存储器进行寻址,这个ฐ16位寄存器叫作堆

栈指针。

这里举的压入和弹出寄存器的例子对于8080่来说不太准确。8080่的push指令实际上是存

储16位的值到堆栈,pop指令用来恢复它们。因此8080่不用像pushcນ和popc这样的指令,

它有下述8条指令:

操作码指令操作码指令

c9

d5pushded1้popde

e5pushhle1pophl

f5๓pushp9๗f1้popp9

pushbcນ指令把寄存器b和c的内容保存到堆栈中,popbc指令恢复它们。最后一行的

缩写ps9๗指的是程序状态字,前面讲过,它是包含有标志位的8๖位寄存器。最后一行的两ä条指

令实际上是把累加器和ps9都压入和弹出堆栈。如果你想保存所有寄存器和标志位的内容,

可以使用:

pushp9

pushbc

pushde

pushhl

当以后想恢复这些寄存器的内容时,按相反的顺序使用pop指令:

pophl

popde

popbc

popp9

堆栈是怎样工作的呢?假设堆栈指针为80่00h,pushbc指令将引起下面这些情况生:

↑返回顶部↑

书页/目录

编码的奥秘2推荐阅读: 妇科玉尺方剂 送神舞后续 无敌剑域境界修为等级 偷香十三少 穿到简陋中世纪 四零四儿 少女之春lovesuboy 神泣大陆礼包 叛逆骑士的圣女篡夺 冬季恋歌韩剧在线观看 苦海无边是道家思想吗