8085微处理器中的十进制加法


在数字计算机中,所有内容都仅使用0和1表示。例如,指令将只有使用0和1的代码。数据也使用0和1表示。数据可以是不同类型,例如无符号数、有符号数、浮点数、二进制编码的十进制 (BCD) 数等。因此,一系列0和1将根据解释获得一个值。对于十进制加法,我们有一个非常重要且常见的指令DAD。让我们现在更多地讨论该指令。

尽管8085是8位微处理器,但8085指令集中有一些指令也可以进行16位加法。由于8085内部架构只有8位,因此该指令很容易花费两倍于添加两个8位数所需的时间。

这里,DAD 是助记符,代表双加rp 代表以下任何一个寄存器对:

rp = BC,DE,或 HL

由于rp可以具有三个值中的任何一个,因此此类指令有三个操作码。它在内存中只占用1个字节。

助记符,操作数
操作码(十六进制)
字节数
DAD B
09
1
DAD D
19
1
DAD H
29
1

在此指令中,HL寄存器对充当累加器。因为rp的16位内容将与HL寄存器对的内容相加,产生的和将再次存储回HL。

虽然它是一个算术指令,但根据设计,除了Cy之外的其他标志不会受到此指令DAD rp执行的影响。

让我们考虑DAD B作为此类指令的示例。它是一字节指令,因此它在内存中占用一个字节的空间。我们认为HL和BC寄存器对的初始内容是4050H和4060H。因此,在16位加法之后,HL寄存器对的当前内容将为80B0H。此指令执行的结果如下表所示:


之前
之后
(HL)
4050H
80B0H
(BC)
4060H
4060H
(F)
任何值
Cy=0,其他标志位不变


地址
十六进制代码
助记符
注释
2006
09
DAD B
HL = HL + BC

针对此指令DAD B执行的时序图如下:

总结:因此,此指令DAD B需要1个字节,3个机器周期(操作码提取、总线空闲、总线空闲)和10个T状态才能执行,如时序图所示。此指令需要10个T状态,包括操作码提取。操作码提取周期需要4个T状态,其余6个T状态分为两个机器周期,用于指令执行。在这6个T(两个机器周期)状态下,不执行总线操作。因此,它们被称为总线空闲机器周期。在此期间,ALE、RD等不会被激活。

更新于:2019年7月30日

浏览量1K+

启动您的职业生涯

通过完成课程获得认证

开始
广告