我閱讀本指南,瞭解有關英特爾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