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等不会被激活。