8085微处理器中的ADC R指令


在8085汇编语言编码中,有时需要将两个数字相加,而这两个数字的大小都包含多个字节。例如,让我们将以下两个16位数字相加。

    1
   10 50H
   A0 F1H
   ------
   B1 01H

在这个例子中,50H和F1H相加的结果为01H,进位为1。现在,我们应该将10H和A0H以及这个进位1相加。为了执行这样的计算,8085为我们提供了合适的指令来将两个数字与进位值相加。

这里,ADC是一个助记符,代表“带进位的加法”(ADd with Carry),而“R”代表以下任何一个寄存器,或由HL对指向的内存位置M。此指令主要用于将R寄存器的内容与累加器以及进位值相加。这里的进位可以是0或1。此加法运算的结果将存储在累加器本身中,覆盖其先前的内容。这是一个1字节指令,因此在内存中也占用1个字节。所以这个R可以有8个可能的值,因此有8个可能的指令操作码。

R = A, B, C, D, E, H, L, or M

助记符,操作数 操作码(十六进制) 字节数
ADC A 8F 1
ADC B 88 1
ADC C 89 1
ADC D 8A 1
ADC E 8B 1
ADC H 8C 1
ADC L 8D 1
ADC M 8E 1

让我们考虑ADC E作为此类别中的一个示例指令。如前所述,它是一个1字节指令。让我们假设E寄存器和累加器最初的值分别为10H和A0H,初始进位为1。现在,如果我们执行指令ADC E,则结果B1H将保留在累加器中。此指令执行的结果如下所示,并带有跟踪表。

之前 之后

(E)

10H 10H

(A)

A0H B1H

(F)

Cy=1,其他标志位可能具有任何值 Cy=0,AC=0,Z=0,P=1,S=1

地址 十六进制代码 助记符 注释
2005 8B ADC 累加器 = 累加器 + E寄存器 + Cy标志位

以下是指令ADC E的时序图,如下所示

ADC

总结 - 因此,此指令ADC需要1个字节、1个机器周期(操作码获取)和4个T状态来执行,如时序图所示。

更新于: 2019年7月30日

6K+浏览量

启动您的职业生涯

通过完成课程获得认证

立即开始
广告