Lompat ke konten

Dasar-Dasar Pemroses

Ilmu Komputer A-Level · Topik 4

Pelajaran video untuk topik ini Buka halaman video
21:32

Arsitektur Von Neumann

Selama sebagian besar sejarah, sebuah mesin melakukan satu pekerjaan. Loom menenun kain. Kalkulator menjumlahkan. Untuk membuatnya melakukan sesuatu yang baru, Anda membangunnya ulang. Lalu datanglah sesuatu yang tampak sederhana namun menipu…

Narasi bahasa Inggris · Subtitle bahasa Inggris + 中文 disematkan langsung

4.1

Arkitektur Von Neumann

Silabus
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman tentang model Von Neumann dasar untuk sistem komputer dan konsep program tersimpan
Tunjukkan pemahaman tentang tujuan dan peran register, termasuk perbedaan antara register penggunaan umum dan penggunaan khusus Register penggunaan khusus termasuk: • Program Counter (PC) • Memory Data Register (MDR) • Memory Address Register (MAR) • Akumulator (ACC) • Index Register (IX) • Current Instruction Register (CIR) • Status Register
Tunjukkan pemahaman tentang tujuan dan peran Unit Aritmatika dan Logika (ALU), Kontrol Unit (CU) dan clock sistem, Immediate Access Store (IAS)
Tunjukkan pemahaman tentang bagaimana data ditransfer antar komponen sistem komputer menggunakan bus alamat, bus data dan bus kontrol
Tunjukkan pemahaman tentang faktor-faktor yang berkontribusi terhadap kinerja sistem komputer Termasuk: • tipe prosesor dan jumlah core • lebar bus • kecepatan clock • memori cache
Pahami bagaimana port yang berbeda menyediakan koneksi ke perangkat periferal Termasuk koneksi ke: • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA)
Jelaskan tahap-tahap siklus Fetch-Execute (F-E) Jelaskan dan gunakan notasi 'register transfer' untuk mendeskripsikan siklus F-E
Tunjukkan pemahaman tentang tujuan interupsi Termasuk: • kemungkinan penyebab interupsi • aplikasi interupsi • penggunaan Interrupt Service Routine (ISR) • kapan interupsi terdeteksi selama siklus fetch-execute • bagaimana interupsi ditangani

Sumber: Silabus Cambridge International

Siklus ambil-dekod-eksekusi

Arsitektur Von Neumann menjadi dasar hampir setiap komputer serbaguna:

  • satu memori tunggal—Penyimpanan Akses Langsung (IAS)—menyimpan baik instruksi program maupun data (konsep program tersimpan).
  • sebuah prosesor (CPU) mengambil instruksi dari memori dan menjalankannya satu per satu.
  • instruksi dijalankan berurutan kecuali percabangan mengubah alurnya.

Ide program tersimpan inilah yang membuat komputer fleksibel: ubah programnya, maka fungsinya pun berubah, tanpa perlu pengkabelan ulang.

Jelajahi

Klik bagian-bagian komputer Von Neumann

Jelajahi setiap blok. CPU (unit kontrol, ALU, register) berkomunikasi dengan satu memori utama melalui bus — dan satu memori bersama untuk instruksi DAN data inilah gagasan Von Neumann.

Kosa kata Latih
English Bahasa Indonesia
ALU/ˌeɪ el ˈjuː/ ALU
RAM/ræm/ RAM
page/peɪdʒ/ halaman
4.1

Bagian-bagian utama CPU

Semua bagian ini berada di dalam satu chip kecil. Diagram nanti di bagian ini menunjukkan bagaimana mereka terhubung; foto di bawah ini menampilkan wujud aslinya.

Bagian bawah chip prosesor Intel pada latar belakang putih, sebuah persegi datar yang tertutup oleh kisi-kisi ratusan bantalan kontak emas kecil yang menekan ke soket motherboard
Prosesor modern: seluruh prosesor adalah satu chip kecil (di sini terlihat dari bawah, menunjukkan kontaknya)
Soket CPU persegi pada motherboard, dengan kisi-kisi pin kecil dan tuas penahan logam, dikelilingi jalur sirkuit
Soket CPU yang sesuai pada motherboard: kontak chip menekan pin-pin ini

Unit Aritmatika dan Logika (ALU)

ALU melakukan operasi aritmatika (tambah, kurang, …) dan logika (AND, OR, perbandingan). Ia mengambil operand dari register dan menyimpan hasil kembali ke register.

Unit Kontrol (CU)

Unit kontrol mendekod setiap instruksi dan mengirimkan sinyal kontrol untuk mengeksekusinya—membuka jalur data, memberi tahu ALU apa yang harus dilakukan, serta mengontrol baca dan tulis memori.

Jam sistem

Jam mengirimkan aliran pulsa yang terus-menerus agar CPU tetap sinkron. Setiap instruksi membutuhkan jumlah siklus tetap, dan kecepatan jam (mis. 3.8 GHz) merupakan salah satu faktor kinerja.

"Jelaskan bagaimana CU dan jam sistem bekerja sama": jam memancarkan pulsa dengan frekuensi tetap; unit kontrol menggunakan setiap pulsa untuk memajukan siklus ambil-eksekusi sebanyak satu langkah, mengirim sinyal kontrolnya selaras dengan pulsa, sehingga setiap bagian prosesor berubah keadaan secara bersamaan. Jam yang lebih cepat berarti lebih banyak langkah per detik, hingga batas di mana rangkaian tidak dapat stabil antar pulsa.

Register

Register adalah storan kecil yang sangat pantas di dalam CPU. Register kegunaan khas masing-masing mempunyai tugas tetap dalam kitaran:

  • Penghitung Program (PC) — alamat seterusnya instruksi.
  • Register Alamat Memori (MAR) — alamat yang sedang dibaca atau ditulis.
  • Register Data Memori (MDR) — data yang pergi ke atau dari memori.
  • Register Instruksi Semasa (CIR) — instruksi yang sedang dikesan.
  • Akumulator (ACC) — nilai yang sedang diproses oleh ALU.
  • Register Status — menyimpan penanda (bawa, sifar, negatif,overflow) yang digunakan oleh cabang. Setiap penanda ialah satu bit, ditetapkan atau dihapus oleh ALU selepas operasi: penanda sifar selepas perbandingan yang sepadan, penanda bawa apabila penambahan melampaui kapasiti register, penanda negatif apabila hasil adalah negatif. Lompatan bersyarat membaca penanda untuk memutuskan sama ada bercabang, dan penanda_overflow_ boleh mencetuskan gangguan.
  • Register Indeks — offset yang ditambahkan ke alamat dalam pengalamatan indeks; peningkatannya memindai array satu elemen per langkah.

Soal "lengkapi tabel yang menggambarkan peran setiap register" meminta satu kalimat tepat untuk setiap register dengan istilah berikut: PC menyimpan alamat instruksi berikutnya yang akan diambil; MAR menyimpan alamat lokasi yang sedang dibaca atau ditulis; MDR menyimpan data atau instruksi yang baru saja dibaca dari, atau akan segera ditulis ke, lokasi tersebut; CIR menyimpan instruksi yang saat ini sedang didekodi dan dieksekusi; ACC menyimpan hasil operasi aritmatika atau logika terakhir.

Register tujuan umum digunakan oleh pemrogram untuk nilai sementara selama perhitungan. Perpindahan data antara register dan memori ditulis dalam notasi transfer register — mis. MAR ← [PC] ("salin isi PC ke MAR").

Diagram blok CPU Von Neumann yang menampilkan PC, MAR, MDR, CIR, ACC, register status, unit kontrol, ALU, dan jam sistem, terhubung ke memori utama dan input/output melalui bus alamat, data, dan kontrol
CPU Von Neumann: register, unit kontrol, dan ALU yang saling terhubung melalui bus
Kosa kata Latih
English Bahasa Indonesia
Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ Arsitektur Von Neumann
Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ Penyimpan Akses Langsung
stored program/stɔːd ˈprəʊɡræm/ program tersimpan
processor/ˈprəʊsesə/ prosesor
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ unit aritmatika dan logika
operand/ˈɒpərænd/ operand
register/ˈredʒɪstə/ register
control unit/kənˈtrəʊl ˈjuːnɪt/ unit kontrol
clock speed/klɒk spiːd/ kecepatan clock
bit/bɪt/ bit
4.1

Bus

Tiga bus internal (kumpulan kabel paralel) menghubungkan komponen-komponen tersebut:

  • bus alamat — membawa alamat memori. Satu arah (CPU → memori).
  • bus data — membawa data. Dua arah.
  • bus kontrol — membawa sinyal kontrol (baca, tulis, interupsi). Dua arah.

Bus alamat $n$-bit dapat mengakses $2^{n}$ lokasi memori. Lebar bus data menentukan berapa banyak bit yang dipindahkan per akses (sering kali merupakan ukuran kata).

CPU, memori, dan input/output masing-masing terhubung ke bus alamat (satu arah), bus data, dan bus kontrol di dalam bus sistem
Tiga bus sistem yang menghubungkan CPU, memori, dan input/output
Motherboard dilihat dari atas: soket CPU, slot memori, dan slot ekspansi yang dihubungkan oleh jalur cetak yang rapat
Motherboard: CPU, memori, dan I/O semuanya berada pada satu set bus — jalur cetak yang melintas di antaranya
Kosa kata Latih
English Bahasa Indonesia
buses/ˈbʌsɪz/ bus
address bus/əˈdres bʌs/ bus alamat
data bus/ˈdeɪtə bʌs/ bus data
word size/wɜːd saɪz/ ukuran kata
number of cores/ˈnʌmbə ɒv kɔːz/ jumlah inti
cores/kɔːz/ inti prosesor
amount of RAM/əˈmaʊnt ɒv ræm/ jumlah RAM
4.1

Faktor yang mempengaruhi kinerja

  • kecepatan clock — lebih banyak siklus per detik.
  • jumlah inti — CPU multi-inti menjalankan beberapa thread secara bersamaan.
  • ukuran kata — CPU 64-bit menangani potongan data 64-bit per siklus dan dapat mengalamati jauh lebih banyak memori daripada CPU 32-bit.
  • jumlah RAM — RAM yang lebih besar menampung lebih banyak himpunan kerja; jika terlalu sedikit, OS akan melakukan pagging ke disk.
  • ukuran cache memory — cache yang lebih besar mengurangi waktu akses memori rata-rata.
  • tipe penyimpanan sekunder — SSD memuat program jauh lebih cepat daripada HDD.
  • lebar dan kecepatan bus — bus yang lebih lebar/cepat memindahkan data lebih cepat.

Cocokkan spesifikasi dengan beban kerja: CPU quad-core mengalahkan dual-core pada pekerjaan paralel, tetapi kecepatan per-core yang lebih tinggi menang pada pekerjaan single-threaded.

Setiap faktor adalah jawaban bernilai dua poin dengan alasan yang disertakan:

  • Inti lebih banyak: setiap inti dapat mengambil dan mengeksekusi instruksinya sendiri secara bersamaan, sehingga beberapa program, atau thread dari satu program, berjalan secara paralel. Namun, sebuah program harus ditulis untuk menggunakan lebih dari satu inti, sehingga menggandakan jumlah inti tidak selalu menggandakan kecepatan.
  • Kecepatan clock lebih tinggi: lebih banyak siklus ambil-eksekusi per detik, sehingga lebih banyak instruksi per detik; batasnya adalah panas yang dihasilkan.
  • Bus lebih lebar: bus data yang lebih lebar memindahkan lebih banyak bit dalam setiap transfer, sehingga transfer yang dibutuhkan lebih sedikit untuk data yang sama; bus alamat yang lebih lebar dapat mengalamati lebih banyak lokasi memori.
  • Cache memory: memori kecil dan cepat di dalam atau di samping prosesor yang menyimpan instruksi dan data yang paling baru atau paling sering digunakan. Membacanya dari cache jauh lebih cepat daripada dari RAM, sehingga prosesor menghabiskan waktu lebih sedikit untuk menunggu.

"Jelaskan mengapa komputer baru berkinerja lebih baik" dijawab dengan membandingkan kedua spesifikasi baris demi baris: kecepatan clock yang lebih tinggi mengeksekusi lebih banyak instruksi per detik, inti lebih banyak menjalankan lebih banyak tugas sekaligus, cache lebih besar berarti akses lambat ke RAM lebih sedikit, dan RAM lebih besar berarti transfer ke disk lebih sedikit.

Kosa kata Latih
English Bahasa Indonesia
cache memory/kæʃ ˈmeməri/ memori cache
cache/kæʃ/ cache
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ penyimpanan sekunder
4.1

Port

Sebuah port adalah stopkontak fisik untuk menghubungkan periferal:

  • USB (Universal Serial Bus) — tujuan umum (keyboard, drive, ponsel).
  • HDMI (High Definition Multimedia Interface) — video digital dan audio ke layar.
  • VGA (Video Graphics Array) — output video analog lama ke monitor.
  • Ethernet (RJ-45) — LAN berkabel. Jack audio — headphone/mikrofon.

Port yang berbeda menggunakan sinyal yang berbeda, sehingga kabel HDMI tidak akan masuk ke soket USB. USB-C bersifat unik karena dapat mengirimkan video, data, dan daya.

"Jelaskan bagaimana komputer terhubung ke monitor melalui HDMI": port HDMI mengirimkan video dan audio sebagai satu sinyal digital melalui satu kabel, sehingga tidak diperlukan konversi ke analog dan gambar tidak terdegradasi; kabel mendukung resolusi definisi tinggi dan port monitor sendiri mendekode sinyal tersebut. Perangkat USB bersifat plug-and-play: saat terhubung, komputer mendeteksi perangkat, mengidentifikasinya, memuat atau menginstal driver yang dibutuhkan, dan dapat menyuplai dayanya, semuanya tanpa perlu restart.

Kosa kata Latih
English Bahasa Indonesia
port/pɔːt/ port
peripheral/pəˈrɪfərəl/ periferi
register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ notasi transfer register
interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ rutin layanan interrupt
interrupt register/ˈɪntərʌpt ˈredʒɪstə/ register interrupt
4.1

Siklus Ambil-Eksekusi

CPU mengulang siklus ambil-eksekusi, satu putaran untuk setiap instruksi mesin.

Ambil

  1. alamat PC disalin ke MAR.
  2. PC ditambah untuk menunjuk instruksi berikutnya.
  3. sinyal baca dikirim melalui bus kontrol.
  4. memori menempatkan instruksi pada bus data.
  5. instruksi disalin ke MDR, lalu ke CIR.

Ujian meminta langkah-langkah ini dalam notasi transfer register, di mana [X] berarti isi register X dan [[MAR]] berarti isi lokasi memori yang alamatnya ada di MAR:

MAR ← [PC]          the address of the next instruction goes to the MAR
PC  ← [PC] + 1      the PC now points to the following instruction
MDR ← [[MAR]]       the instruction at that address is read into the MDR
CIR ← [MDR]         the instruction is copied into the CIR for decoding

Urutan itu penting: PC ditambah segera setelah alamatnya disalin, sehingga lompatan yang dieksekusi nanti masih bisa menimpa nilainya. Selama eksekusi, notasi yang sama menggambarkan setiap instruksi; untuk LDD 200, contohnya MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Register pengambilan (fetch register) mentransfer secara berurutan: 1 alamat PC dikirim ke MAR; 2 MAR mengirim alamat ke memori; 3 instruksi kembali ke MDR; 4 MDR menyalinnya ke CIR; sementara PC ditambahkan nilainya
Transfer register dalam pengambilan: PC → MAR → memori → MDR → CIR, dengan PC yang ditambahkan

Decode

CU mengdecode instruksi di CIR — operasi apa, dan operand atau alamat mana.

Eksekusi

CU melaksanakannya: aritmatika/logika dikirim ke ALU (hasil ke ACC); muat/simpan memindahkan data antara memori dan register; percabangan mengubah PC. Kemudian siklus berulang.

Diagram alur siklus fetch-execute dari START: tahap fetch (PC ke MAR, increment PC, sinyal baca, memori ke bus data ke MDR ke CIR), tahap decode, tahap execute, lalu pengecekan interrupt yang kembali ke START
Siklus fetch-execute, dengan pengecekan interrupt setiap kali
Jelajahi

Siklus fetch-execute

Klik keliling loop yang diulang CPU miliaran kali per detik. Perhatikan bagaimana fetch menggunakan register PC/MAR/MDR/CIR, lalu decode dan execute bekerja pada apa yang telah diambil.

Jelajahi

Siklus ambil-eksekusi

Langkah demi langkah bagaimana CPU menjalankan satu instruksi — ambil dari memori, decode, lalu eksekusi, terus-menerus.

Kosa kata Latih
English Bahasa Indonesia
fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ siklus ambil-eksekusi
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ register tujuan khusus
interrupt/ˈɪntərʌpt/ interrupt
4.1

Interrupt

Interrupt adalah sinyal yang menghentikan sementara siklus normal agar CPU dapat menangani peristiwa mendesak (tekanan tombol, paket datang, kesalahan perangkat keras, pembagian nol, timer OS).

Menangani satu:

  1. selesaikan instruksi saat ini.
  2. simpan keadaan (PC dan register).
  3. muat alamat rutin layanan interrupt (ISR) ke dalam PC dan jalankan.
  4. ISR menangani peristiwa tersebut.
  5. pulihkan keadaan yang disimpan dan lanjutkan.

Interrupt memungkinkan sistem merespons dengan cepat tanpa CPU terus-menerus memeriksa perangkat, dan merupakan cara OS melakukan multitasking.

"Jelaskan bagaimana interrupt dari perangkat input dideteksi dan ditangani dalam siklus F-E" adalah jawaban bernilai empat poin dengan poin-poin berikut: perangkat mengirim sinyal interrupt yang menetapkan flag interrupt di dalam register interrupt; prosesor memeriksa register tersebut pada akhir setiap siklus fetch-execute, setelah instruksi saat ini selesai dieksekusi; jika flag ditetapkan dan interrupt memiliki prioritas lebih tinggi daripada tugas saat ini, isi PC dan register lainnya disimpan ke dalam tumpukan (stack); alamat rutin layanan interrupt dimuat ke dalam PC dan rutin dijalankan; ketika selesai, nilai yang disimpan dikembalikan dari tumpukan dan program yang terinterupsi dilanjutkan dari tempat ia berhenti.

Penyebab yang layak disebutkan: interrupt perangkat keras dari perangkat (tombol ditekan, buffer printer kosong, paket jaringan datang), interrupt perangkat lunak dari kesalahan (pembagian nol, instruksi ilegal, overflow aritmatika), interrupt timer dari sistem operasi menandai akhir slice waktu, dan peringatan kegagalan daya.

Diagram alur penanganan interrupt: program yang berjalan diinterupsi, CPU menyelesaikan instruksi saat ini, menyimpan keadaannya (PC dan register) ke tumpukan, menjalankan rutin layanan interrupt, memulihkan keadaan dan melanjutkan *Bagaimana interrupt masuk ke dalam siklus fetch-execute

Kosa kata Latih
English Bahasa Indonesia
stack/stæk/ tumpukan
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ bahasa assembly
machine code/məˈʃiːn kəʊd/ kode mesin
mnemonics/nɪˈmɒnɪks/ mnemonik
4.2

Bahasa assembly dan kode mesin

Silabus
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman tentang hubungan antara bahasa assembly dan kode mesin
Jelaskan tahapan-tahapan yang berbeda dari proses perakitan untuk assembler dua-lintasan Terapkan proses assembler dua-lintasan pada program bahasa perakitan sederhana yang diberikan
Telusuri program bahasa perakitan sederhana yang diberikan
Tunjukkan pemahaman bahwa sekumpulan instruksi dikelompokkan Termasuk kelompok berikut: • Perpindahan data • Input dan output data • Operasi aritmatika • Instruksi tak bersyarat dan bersyarat • Instruksi perbandingan
Tunjukkan pemahaman dan kemampuan menggunakan berbagai mode pengalamatan Termasuk immediate, langsung, tidak langsung, indeks, relatif

Sumber: Silabus Cambridge International

CPU sebenarnya menjalankan kode mesin — pola bit, spesifik untuk satu arsitektur. Bahasa assembly adalah bentuk yang mudah dibaca, dengan satu instruksi per instruksi mesin, ditulis menggunakan mnemonik seperti LDD, ADD, JMP. Assembler menerjemahkannya menjadi kode mesin.

Assembler menerjemahkan mnemonik assembly menjadi pola bit kode mesin *Assembler mengubah mnemonik menjadi pola bit kode mesin

Assembler dua-lintasan

Assembler dua-lintasan membaca sumber dua kali:

  • lintasan 1 membangun tabel simbol: setiap kali label (seperti LOOP:) muncul, catat alamatnya; belum ada kode.
  • lintasan 2 menghasilkan kode: terjemahkan setiap instruksi, dan ketika satu merujuk pada label (seperti JMP LOOP), cari alamatnya di tabel simbol.

Dua lintasan menangani referensi maju (lompatan ke label yang didefinisikan nanti).

Contoh dikerjakan. Terapkan proses dua-lintasan ke program ini, di mana instruksi pertama disimpan di alamat 100.

        LDD  COUNT
LOOP:   DEC  ACC
        CMP  #0
        JPN  LOOP
        END
COUNT:  5

Lewat 1 membaca setiap baris, menghitung alamat yang akan ditempati, dan mencatat setiap label dalam tabel simbol: LOOP = 101 (baris DEC) dan COUNT = 105 (baris data). Tidak ada kode yang dihasilkan. Lewat 2 membaca program lagi dan menerjemahkan setiap baris menjadi kode mesin, mengganti setiap mnemonik dengan opcode-nya dan setiap alamat simbolik dengan angka dari tabel simbol: LDD COUNT menjadi opcode untuk LDD dengan operand 105, dan JPN LOOP menjadi opcode untuk JPN dengan operand 101. Lompatan kembali ke LOOP dapat diselesaikan dalam satu kali lewat, tetapi lompatan maju ke label yang belum terlihat tidak bisa, itulah sebabnya assembler membuat dua kali lewat.

Contoh set instruksi

Cambridge menggunakan set kecil umum, dicetak dalam tabel referensi soal, dengan satu register tujuan umum, akumulator (ACC), dan register indeks (IX). Operand yang ditulis #n adalah bilangan desimal, Bn bilangan biner dan &n bilangan heksadesimal; <address> adalah nomor lokasi atau label.

Kelompok Instruksi Apa yang dilakukannya
Perpindahan data LDM #n muat angka n ke dalam ACC (immediate)
LDD <address> muat isi alamat ke dalam ACC (langsung)
LDI <address> alamat memegang alamat lain; muat isi alamat itu ke dalam ACC (tidak langsung)
LDX <address> tambahkan IX ke alamat dan muat isi hasil ke dalam ACC (indeks)
LDR #n muat angka n ke dalam IX
MOV <register> salin ACC ke register bernama (IX)
STO <address> simpan isi ACC di alamat tersebut
Input dan output IN baca tekanan tombol dan masukkan kode ASCII-nya ke dalam ACC
OUT keluarkan karakter yang kode ASCII-nya ada di ACC
Aritmatika ADD <address> / ADD #n tambahkan isi alamat, atau angka, ke dalam ACC
SUB <address> / SUB #n kurangi dari ACC
INC <register> / DEC <register> tambahkan 1 ke, atau kurangi 1 dari, ACC atau IX
Bandingkan CMP <address> / CMP #n bandingkan ACC dengan isi alamat, atau dengan n, dan tetapkan flag
CMI <address> bandingkan ACC dengan isi alamat yang disimpan di alamat (tidak langsung)
Lompat JMP <address> lompat ke alamat secara tak bersyarat
JPE <address> / JPN <address> lompat jika perbandingan terakhir sama / tidak sama
Manipulasi bit AND, OR, XOR dengan #n, Bn, &n atau <address> operasi bitwise pada ACC
LSL #n / LSR #n geser ACC secara logis n tempat ke kiri atau kanan
END akhiri program

Soal "instruksi bahasa assembly dikelompokkan" meminta nama-nama kelompok, dan satu instruksi dari setiap: perpindahan data, input dan output, aritmatika, lompatan tak bersyarat dan bersyarat, perbandingan, serta manipulasi bit.

Jelajahi

Bagaimana assembler dua-passage bekerja

Ikuti langkah demi langkah. Assembler membaca kode Anda dua kali: pass 1 hanya mencari tempat setiap label berada, sehingga pass 2 dapat mengisi alamat — itulah cara lompatan ke label yang didefinisikan nanti tetap berfungsi.

Kosa kata Latih
English Bahasa Indonesia
assembler/əˈsemblə/ assembler
symbol table/ˈsɪmbl ˈteɪbl/ tabel simbol
label/ˈleɪbl/ label
forward references/ˈfɔːwəd ˈrefrənsɪz/ referensi maju
opcode/ˈɒpkəʊd/ opcode
4.2

Mode pengalamatan

Mode pengalamatan (atau modes of addressing) menjelaskan bagaimana CPU menemukan operand:

  • pengalamatan langsung — operand adalah nilai dalam instruksi. LDM #10 memuat 10.
  • pengalamatan langsung — instruksi berisi alamat; operand adalah nilai di sana. LDD 200.
  • pengalamatan tidak langsung — instruksi berisi alamat yang berisi alamat lain, yaitu datanya. LDI 200.
  • pengalamatan terindeks — alamat efektif adalah address + index register; digunakan untuk array. LDX 100 dengan IR = 5 membaca alamat 105.

(Pengalamatan relatif memberikan alamat sebagai offset dari PC — digunakan untuk lompatan.)

Empat mode pengalamatan mencapai operannya. Langsung: LDM #10 memberi 10 secara langsung. Langsung: LDD 200 membaca lokasi memori 200 (=42). Tidak langsung: LDI 200 membaca lokasi 200 (=250) lalu lokasi 250 (=99). Terindeks: LDX 100 dengan register indeks 5 membaca lokasi 105 (=7)
Bagaimana setiap mode pengalamatan mencapai operannya — langsung, tidak langsung, tidak langsung, dan terindeks

Contoh terpecahkan. Memori berisi: lokasi 200 = 250, lokasi 250 = 99, lokasi 105 = 7. Register indeks memegang 5. Apa yang ada di accumulator setelah masing-masing LDM #200, LDD 200, LDI 200 dan LDX 100? Ikuti sejauh mana setiap mode harus mencari. LDM #200 adalah langsung - operand adalah angka yang ditulis dalam instruksi, jadi accumulator memegang 200. LDD 200 adalah tidak langsung - pergi ke lokasi 200 dan ambil apa yang ada di sana: 250. LDI 200 adalah tidak langsung - lokasi 200 memegang 250, yang merupakan alamat lain, jadi lanjutkan ke lokasi 250: 99. LDX 100 adalah terindeks - tambahkan register indeks ke alamat, $100 + 5 = 105$, dan baca lokasi 105: 7. Hitung loncatannya agar tetap terpisah: langsung 0, tidak langsung 1, tidak langsung 2, terindeks 1 (setelah indeks ditambahkan).

Kosa kata Latih
English Bahasa Indonesia
accumulator/əˈkjuːmjʊleɪtə/ akumulator
Status Register/ˈsteɪtəs ˈredʒɪstə/ Status Register
flags/flæɡz/ flag
Index Register/ˈɪndeks ˈredʒɪstə/ Index Register
indexed addressing/ˈɪndekst əˈdresɪŋ/ pengalamatan terindeks
general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ register tujuan umum
register transfer/ˈredʒɪstə ˈtrænsfɜː/ transfer register
control bus/kənˈtrəʊl bʌs/ bus kendali
addressing mode/əˈdresɪŋ məʊd/ mode pengalamatan
immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ pengalamatan segera
direct addressing/daɪˈrekt əˈdresɪŋ/ pengalamatan langsung
indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ pengalamatan tidak langsung
relative addressing/ˈrelətɪv əˈdresɪŋ/ pengalamatan relatif
logical shift/ˈlɒdʒɪkl ʃɪft/ geser logika
cyclic shift/ˈsaɪklɪk ʃɪft/ geser siklis
4.2

Menelusuri program assembly

Untuk melacaknya: buat tabel dengan kolom untuk PC, ACC, register indeks, setiap variabel, dan flag apa pun. Langkahkan melalui instruksi, perbarui tabel setelah setiap langkah; ikuti percabangan ketika mengubah PC; hentikan di END. Pola umum adalah loop melintasi array menggunakan pengalamatan indeks.

Contoh terpecahkan. Telusuri program ini. Alamat 200 memegang 5 dan alamat 201 memegang 0.

100   LDD  200
101   CMP  #0
102   JPE  108
103   OUT
104   DEC  ACC
105   STO  200
106   LDD  201
107   JMP  100
108   END

Tulis satu baris untuk setiap instruksi yang dieksekusi, isi hanya kolom yang berubah:

Instruksi ACC 200 201 Output
mulai 5 0
LDD 200 5
CMP #0
JPE 108 tidak diambil
OUT karakter dengan kode 5
DEC ACC 4
STO 200 4
LDD 201 0
JMP 100
LDD 200 4

dan seterusnya, hingga LDD 200 memuat 0, perbandingan menetapkan tanda sama, JPE 108 diambil dan program berakhir. Tiga hal yang pemeriksa periksa: a CMP tidak mengubah register, hanya tanda; lompatan yang tidak diambil masih dihitung sebagai dieksekusi; dan OUT menghasilkan karakter, jadi masuk ke kolom output, bukan kolom ACC. "Nyatakan efek mengganti LDD 10 dengan LDM #10": ACC akan berisi angka 10 alih-alih isi alamat 10.

4.3

Geser biner

Silabus
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman dan lakukan pergeseran biner Logis, aritmatika dan siklis Geser kiri, geser kanan
Tunjukkan pemahaman tentang bagaimana manipulasi bit dapat digunakan untuk memantau/mengontrol perangkat Lakukan operasi manipulasi bit Tes dan atur sebuah bit (menggunakan masking bit)
Label Instruksi | Opcodes | Operand Penjelasan
AND #n / Bn / &n Operasi AND bitwise dari isi ACC dengan operand
AND
Operasi AND bitwise dari isi ACC dengan isi
XOR #n / Bn / &n Operasi XOR bitwise dari isi ACC dengan operand
XOR
Operasi XOR bitwise dari isi ACC dengan isi
OR #n / Bn / &n Operasi OR bitwise dari isi ACC dengan operand
OR
Operasi OR bitwise dari isi ACC dengan isi
LSL #n Bit dalam ACC digeser secara logis n tempat ke kiri. Nol dimasukkan di ujung kanan
LSR #n Bit dalam ACC digeser secara logis n tempat ke kanan. Nol dimasukkan di ujung kiri
Menandai sebuah instruksi
Memberikan alamat simbolik
Semua soal akan mengasumsikan hanya tersedia satu register tujuan umum (Akumulator) ACC menunjukkan Akumulator IX menunjukkan Register Indeks
bisa berupa alamat absolut atau simbolik # menunjukkan angka desimal, mis. #123 B menunjukkan angka biner, mis. B01001010 & menunjukkan angka heksadesimal, mis. &4A

Sumber: Silabus Cambridge International

Geser logis memindahkan semua bit ke kiri atau kanan sejumlah tempat, mengisi posisi baru dengan 0.

  • geser kiri oleh 1 (LSL #1) — bit bergerak ke kiri, sebuah 0 masuk dari kanan; untuk bilangan unsigned ini adalah × 2.
  • geser kanan oleh 1 (LSR #1) — bit bergerak ke kanan, sebuah 0 masuk dari kiri; untuk bilangan unsigned ini adalah integer ÷ 2.

Mengeser sebanyak $n$ tempat mengalikan atau membagi dengan $2^{n}$. Contoh: 00001011 (11) LSL #1 → 00010110 (22).

Bit yang digeser keluar dari ujung hilang, jadi perkalian hanya benar selama mereka nol. LSL #2 pada integer dua-komplemen 11001010 menghasilkan 00101000: dua angka 1 yang jatuh dari kiri hilang, bit tanda telah berubah, dan hasilnya tidak lagi empat kali aslinya.

Geser kanan aritmatika mempertahankan bit tanda sehingga bilangan bulat negatif tetap negatif. Geser siklik (rotate) memasukkan kembali bit yang jatuh dari satu ujung ke ujung lainnya, sehingga tidak ada bit yang hilang.

"Tunjukkan hasil geser kanan aritmatika 3 tempat pada 10011110": salin bit tanda ke setiap tempat yang kosong, 11110011. Geser yang sama pada 01011100 menghasilkan 00001011. Geser kiri siklis 1 tempat pada 10000110 menghasilkan 00001101: 1 di depan muncul kembali di sebelah kanan.

Tiga geser 8-bit: LSL #1 mengubah 00001011 menjadi 00010110 (kali 2, 0 masuk di kanan); LSR #1 mengubahnya menjadi 00000101 (pembagian integer oleh 2, 0 masuk di kiri); ASR #1 mengubah 10110100 menjadi 11011010, menyalin bit tanda
Kiri logis ($\times 2$), kanan logis ($\div 2$) dan kanan aritmatika (mempertahankan bit tanda)

Perbedaan antara dua geser kanan adalah satu bit. Ambil 11110000, yang bernilai 240 dibaca sebagai unsigned dan $-16$ dibaca sebagai signed. LSR #1 membawa masuk 0 dan menghasilkan 01111000 $= 120$, yang merupakan setengah yang benar dari 240. ASR #1 menyalin bit tanda alih-alih dan menghasilkan 11111000 $= -8$, yang merupakan setengah yang benar dari $-16$. Keduanya tidak salah — masing-masing membagi dua nilai di bawah satu pembacaan.

Byte 11110000 digeser kanan dua kali: LSR membawa 0 masuk di kiri memberikan 01111000 yang merupakan 120, sementara ASR menyalin bit tanda memberikan 11111000 yang merupakan minus 8; dua hasil berbeda hanya pada bit yang masuk
Geser kanan logis dan aritmatika pada byte yang sama: hanya bit yang masuk di kiri berbeda

Manipulasi bit untuk pemantauan/kontrol

Perangkat tertanam sering menggunakan satu bit dari register per sinyal (mis. bit $n$ = LED $n$). Menggunakan masker — masking bit — Anda dapat:

  • set bit $n$: R = R OR sebuah masker dengan bit $n$ diset.
  • clear bit $n$: R = R AND sebuah masker dengan bit $n$ clear dan sisanya set.
  • toggle bit $n$: R = R XOR sebuah masker dengan bit $n$ diset.
  • test bit $n$: R AND masker, lalu periksa apakah hasilnya bukan nol.
Masking bit pada byte 01001000: set bit 2 dengan OR 00000100 untuk mendapatkan 01001100; clear bit 6 dengan AND 10111111 untuk mendapatkan 00001000; toggle bit 3 dengan XOR 00001000 untuk mendapatkan 01000000
Set bit dengan OR, clear dengan AND, toggle dengan XOR — masing-masing menggunakan masker

Manipulasi bit cepat, menggunakan sedikit memori, dan memungkinkan satu byte menampung hingga 8 status on/off.

Dalam instruksi ujian, ini adalah AND, OR dan XOR dengan masker yang ditulis sebagai operand desimal, biner atau heksadesimal. Dengan ACC yang berisi 10101100:

Instruksi Masker Hasil di ACC Efek
AND B00001111 00001111 00001100 hanya menyimpan empat bit terendah (clear yang lain)
OR #1 00000001 10101101 set bit paling signifikan, menyisakan sisanya tidak berubah
XOR &FF 11111111 01010011 membalik setiap bit
AND B00001000 kemudian CMP #0 00001000 00001000 uji bit 3: perbandingan tidak sama, sehingga bit 3 diset
LSL #2 10110000 geser kiri dua tempat, kehilangan dua bit atas
LSR #3 00010101 geser kanan tiga tempat, nol masuk dari kiri

"Tulis instruksi yang set bit paling signifikan menjadi 1 dan membiarkan yang lain tidak berubah": OR #1, atau OR B00000001. Untuk clear bit gunakan AND dengan masker yang memiliki 0 di tempat tersebut dan 1s di tempat lain; untuk test bit, AND dengan masker yang hanya memiliki 1 di tempat tersebut, lalu bandingkan hasilnya dengan nol. Dalam perangkat pemantauan, satu bit register per sensor memungkinkan satu AND memeriksa apakah sensor tertentu on, dan satu OR mengaktifkan bit kontrol aktuator tanpa mengganggu yang lain.

Jelajahi

Geser dan mask bit-bit byte

Pilih operator dan perhatikan setiap hasil bit. Geser kiri (<<) moves every bit up one place (×2); a right shift (>>) memindahkannya ke bawah (÷2); AND dengan mask menghapus bit yang tidak diinginkan.

Kosa kata Latih
English Bahasa Indonesia
mask/mæsk/ masker
4.3

Definisi yang diterima oleh penguji

Soal definisi dinilai berdasarkan frasa tetap. Hafalkan ini persis, dan berikan hanya satu jawaban.

Istilah Definisi
konsep program tersimpan instruksi program dan data keduanya disimpan dalam memori utama, dan instruksi diambil dan dieksekusi satu per satu
register lokasi penyimpanan kecil, sangat cepat di dalam prosesor dengan tujuan khusus
Program Counter register yang memegang alamat instruksi berikutnya yang akan diambil
Memory Address Register register yang memegang alamat lokasi memori yang sedang dibaca atau ditulis
Memory Data Register register yang memegang data atau instruksi yang baru saja dibaca dari, atau akan segera ditulis ke, memori
Current Instruction Register register yang memegang instruksi yang saat ini didekode dan dieksekusi
Accumulator register serbaguna yang memegang hasil operasi aritmatika atau logika terakhir
cache memory memori kecil, cepat dekat dengan prosesor yang menyimpan instruksi dan data yang sering digunakan
interrupt sinyal dari perangkat atau program yang menyebabkan prosesor menghentikan tugas saat ini dan menjalankan rutin layanan interupsi
bahasa assembly bahasa tingkat rendah di mana setiap instruksi mnemonik sesuai dengan satu instruksi kode mesin
pengalamatan langsung operand adalah nilai yang ditulis dalam instruksi
pengalamatan langsung operand adalah isi alamat yang ditulis dalam instruksi
pengalamatan tidak langsung alamat dalam instruksi memegang alamat dari operand
pengalamatan terindeks alamat operand adalah alamat dalam instruksi ditambah isi register indeks
pengalamatan relatif alamat operand diberikan sebagai offset dari alamat instruksi saat ini
pergeseran logika setiap bit bergerak sejumlah tempat yang ditentukan dan nol mengisi tempat yang ditinggalkan
Kosa kata Latih
English Bahasa Indonesia
Program Counter/ˈprəʊɡræm ˈkaʊntə/ Program Counter
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ Memory Address Register
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ Memory Data Register
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ Current Instruction Register
4.3

Tips ujian

  • Pelajari siklus ambil-eksekusi dalam istilah transfer-register (PC, MAR, MDR, CIR, ACC) dan apa yang meningkatkan PC.
  • Sebutkan pekerjaan setiap register; bus alamat satu arah, bus data dua arah.
  • Bedakan mode pengalamatan (langsung, tidak langsung, terindeks) — pertanyaan yang sering muncul.
  • Jelaskan bagaimana kecepatan clock, jumlah inti, ukuran cache dan panjang kata mempengaruhi kinerja.
  • Untuk pergeseran biner, nyatakan apakah itu logika atau aritmatika; pergeseran kiri mengalikan dengan 2, pergeseran kanan membagi dengan 2.

Kesalahan umum

  • Mengatakan PC memegang instruksi saat ini, atau MDR memegang alamat. PC memegang alamat instruksi berikutnya; MDR memegang data atau instruksi, tidak pernah alamat.
  • Meninggalkan peningkatan PC keluar dari pengambilan, atau meletakkannya setelah eksekusi. Hal itu terjadi begitu alamat disalin ke MAR.
  • Membaca LDD 10 sebagai "muat 10". LDD 10 memuat isi alamat 10; LDM #10 memuat angka 10.
  • Memasukkan nilai di kolom ACC untuk CMP atau OUT. Perbandingan hanya menetapkan flag; output pergi ke kolom output.
  • Mengatakan interupsi ditangani "segera". Prosessor menyelesaikan instruksi saat ini dan memeriksa interupsi di akhir siklus.
  • Menggunakan pergeseran logika kanan pada bilangan dua komplemen negatif. Hanya pergeseran aritmatika yang mempertahankan bit tanda.

Pelajaran interaktif untuk topik ini

Kerjakan langkah demi langkah, dengan latihan pengecekan instan.

Soal-Soil Masa Lalu

Topik lain dalam Ilmu Komputer A-Level

Masuk atau buat akun

IGCSE, A-Level & AP