8085微处理器中的DCR R指令
在8085指令集中,DCR是一个助记符,代表“递减”(DeCRement),而“R”代表以下任何一个寄存器,或者由HL寄存器对指向的存储器位置M。
R = A, B, C, D, E, H, L, or M
这条指令用于减少寄存器R的内容。我们也可以说它会从寄存器R的内容中减去1。并且递减后的值将存储到寄存器R本身。由于它是一条算术指令,因此除了Cy标志外,所有标志都会根据结果受到影响。在那些需要向下计数器的汇编语言代码中,我们可以使用这条指令。因此,根据设计,Cy标志不受这条指令执行的影响。
由于R可以具有八个寄存器值中的任何一个,因此此类指令共有八种操作码。它在内存中只占用1个字节。
助记符,操作数 | 操作码(十六进制) | 字节数 |
---|---|---|
DCR A | 3D | 1 |
DCR B | 05 | 1 |
DCR C | 0D | 1 |
DCR D | 15 | 1 |
DCR E | 1D | 1 |
DCR H | 25 | 1 |
DCR L | 2D | 1 |
DCR M | 35 | 1 |
让我们以**DCR M**作为此类指令的示例。它是一条1字节指令。假设HL寄存器对的初始内容为16位地址4050H。并且在存储器位置4050H处,内容为ABH。因此,执行此指令的结果已在以下跟踪表中进行了描述
之前 | 之后 | |
---|---|---|
(HL) |
4050H | 4050H |
(4050H) |
ABH | AAH |
(F) |
任意值 | Cy=不变,AC=1,S=1,P=1,Z=0 |
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2005 | 35 | DCR M | (HL) = (HL) - 1 |
实际上,在内部,8085通过将01H的二进制补码添加到ABH来执行此递减操作。因此,如果4050H初始存储器位置的内容为00H,则在执行指令DCR M后,内容将变为FFH。
**总结** - 因此,此指令**DCR M**需要1个字节、3个机器周期(操作码获取、内存读取、内存写入)和10个T状态才能执行,如时序图所示。
广告