Oke jadi saya melihat contoh program di LC-3 dan salah satu baris kodenya adalah sebagai berikut:

0010 0 10 011111100 ; R2 <- M[x3100]

Jadi saya mengerti bahwa kode tersebut mengambil konten di alamat x3100 dan menyimpannya ke R2, namun saya bingung bagaimana mereka memperoleh bagian offset dari kode biner. Ketika saya mencari 01111110 dalam biner, itu 252 dengan angka heksagonal adalah FC. Jadi bagaimana ini berhubungan dengan x3100?

0
alex quintanilla 13 Mei 2021, 21:20

1 menjawab

Jawaban Terbaik

Langsung, disebut sebagai PCOffset9 dalam beberapa teks, adalah offset relatif-pc. Jadi, program yang lebih lengkap mungkin seperti ini:

      .ORIG x3000
3000  ...
3001  ...
3002  ...
3003  LD R2, #252
      ...
      ...
3100

      .END

Ketika instruksi ini dieksekusi, PC menyimpan nilai x3003, yang digunakan untuk mengambil instruksi LD R2, #252 dari memori. Selama eksekusi instruksi itu, pertama-tama PC digunakan untuk mengambil instruksi, kemudian instruksi itu bertambah, dan selanjutnya, "alamat efektif" dihitung sebagai ea = PC + PCOffset9. Di sini PC adalah x3004 (sebelumnya x3003 lalu +1), dan langsung adalah xFC, jadi jumlahnya adalah x3100. Offset #252 yang sama akan merujuk ke lokasi memori yang berbeda, jika digunakan dalam instruksi lain (yaitu di lokasi selain x3003). Perhatikan bahwa PCOffset9 adalah bidang 9-bit yang ditandatangani: sebelum penambahan di atas ke PC, tanda itu diperluas hingga 16-bit. Ditandatangani dapat mencapai maju & mundur, jadi kisarannya adalah -256 hingga +255.

1
Erik Eidt 13 Mei 2021, 19:11