我阅读本指南,了解有关英特尔8080仿真Emulator 101当我读的代码来检查我写的,我是从一个叫做英特尔8080本书偶然发现了这个英特尔8080:内存偏移计算
case 0x36: //MVI M,byte
{
//AC set if lower nibble of h was zero prior to dec
uint16_t offset = (state->h<<8) | state->l;
state->memory[offset] = opcode[1];
state->pc++;
}
break;
/8085汇编语言程序,我读到MVI这个
存储在其第二个字节的数据到由H和L.中号寻址的 存储器位置这指令复制是一个符号参照 H和L寄存器对。
所以我猜测偏移量是H和L处理的内存位置,但为什么我们这样做?这是(state->h<<8) | state->l
感谢
你的意思是“我们为什么要那样做?”文档中说'M'是'H'和'L'对的约定,'H'和'L'寄存器组合在一起(通过'<<'和'|')来提供16位偏移量。你想再次知道什么? – vladr
我的意思是''''和'|'的组合怎么给我们16位的偏移? –
表示一个16位值需要两个字节。向左移8位将'h'的值放入第二个(* h * igh)字节(并将0放入低位字节),并将'|'与* l * ow字节('l '),产生所需的偏移量。研究小端和按位操作。 – DCoder