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需要1个字节、1个机器周期(操作码获取)和4个T状态来执行,如时序图所示。
广告