gpt4 book ai didi

c - 递增寄存器对

转载 作者:行者123 更新时间:2023-11-30 17:43:56 25 4
gpt4 key购买 nike

我正在用 C 语言做一项模拟 Intel 8080 微处理器的作业。其中一条指令是递增和递减寄存器对(INX 和 DCX),为此我们被告知使用以下代码:

temp = (long)Registers[REGISTER_X] << 8 + (long)Registers[REGISTER_X];

其中X是寄存器的字母(A、B、C、D等)

据我了解,这将首先将两个寄存器加在一起,然后将某些内容(我不确定是什么?)向左移动 8 位。

这与我们使用的递减类似:

temp = (long)Registers[REGISTER_X] << 8 - (long)Registers[REGISTER_X];

谁能解释一下这如何增加寄存器对以及在此操作中移动的内容,因为我有点困惑。

感谢您的回复,我认为没有,我不知道他们从哪里得到该代码。这样的事情会更合适吗?

temp = ((WORD)Registers[REGISTER_B] << 8) + (WORD)Registers[REGISTER_C];
temp++;
Registers[REGISTER_B] = (BYTE) (temp >> 8) & 0xFF;
Registers[REGISTER_C] = (BYTE) (temp & 0xFF);

最佳答案

如果您的寄存器 vector 使用 BYTE 元素,您可以使用以下行:

Registers[REGISTER_B] += ((++Registers[REGISTER_C]) == 0)? 1 : 0;

关于c - 递增寄存器对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com