奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 303 页

PDF 物理页索引 319 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
303
PDF 物理页
319(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
6fa07ba17eef05a3ea8f7f51e88a788694c3d2a542ee95d073ea5444df30616d

与8080不同,6800没有设置奇偶标志位,而是设置了一个溢出标志位(Overflowflag)。上面的转移指令中有一些依赖于标志位的组合(combinations of flags)。

当然,8080和6800的指令集是不同的,虽然这两款芯片于同一年发布,但它们是由属于不同公司的两组不同的工程师设计的。这就造成了它们之间的不兼容,因此它们不能执行对方的机器码,为一种芯片编写的汇编语言程序也不能在另一种芯片上执行。如何编写能在不同类型处理器上执行的计算机程序是第24章的主题。

8080和6800的另一个有趣的区别是:在两个处理器中,LDA指令都从存储器的特定地址将数据加载到累加器。例如,在8080中,下面的字节序列:

将把存储器地址347Bh处的字节加载到累加器。现在对比一下6800的LDA指令,它使用 6800 扩展寻址模式(6800 extended addressing mode):

上面的这组字节序列将把存储器7B34h地址处的字节加载到累加器。

两者的区别是很微妙的。当然,你可能已经注意到了操作码的不同:8080的操作码是3Ah,而6800的操作码是B6h。但是两种微处理器对紧跟在操作码后的地址的处理方式是不同的,8080假设低字节在前,高字节在后;而6800假设高字节在前,低字节在后。

Intel和Motorola的微处理器在保存多字节数据问题上的根本区别从未得到解决。直到今天,英特尔的微处理器在保存多字节数据时,仍然把最低有效字节放在最前面(也就是说,在最低地址处),而Motorola的微处理器在保存多字节数据时,仍然把最高有效字节放在最前面。

这两种不同的方式分别称为little-endian(Intel方式)和 big-endian(Motorola方式)。

19两种典型的微处理器

303