CHAPTER 8 PROGRAMMING THE MICROPROCESSOR
CHAPTER 8
Programming the Microprocessor
8–1 MODULAR PROGRAMMING[kembali]
Banyak program yang terlalu besar untuk dikembangkan oleh satu orang. Ini berarti bahwa program biasanya dikembangkan oleh tim programmer. Program linker disediakan bersama Visual Studio sehingga modul-modul pemrograman dapat dihubungkan menjadi satu program lengkap. Linking juga tersedia dari command prompt yang disediakan oleh Windows. Bagian teks ini menjelaskan tentang linker, tugas linking, file library, EXTRN, dan PUBLIC sebagaimana berlaku pada program modular dan pemrograman modular.
EXAMPLE 8–1
    Gambar tersebut memperlihatkan proses kompilasi dan linking sebuah program assembly menggunakan MASM (Microsoft Macro Assembler) versi 6.11 di lingkungan DOS, di mana perintah ml new.asm dijalankan untuk mengubah file sumber berbahasa assembly bernama new.asm menjadi program yang dapat dieksekusi. Pada tahap pertama, assembler membaca kode sumber dan menghasilkan file object dengan ekstensi .obj, dalam hal ini new.obj, yang berisi instruksi mesin dalam bentuk belum sepenuhnya siap dijalankan. Selanjutnya, proses dilanjutkan ke tahap linking menggunakan Segmented Executable Linker versi 5.60.220, yang bertugas menggabungkan file object dengan library atau dependensi lain (jika ada), lalu menyusunnya menjadi sebuah file executable (.exe) yang dapat langsung dijalankan, yaitu new.exe. Pada output, terlihat bahwa file list (.map) dan file definisi (.def) tidak digunakan sehingga diarahkan ke NUL, serta tidak ada library tambahan yang dilibatkan. Keseluruhan proses ini menunjukkan alur standar pembuatan program assembly dengan MASM: dimulai dari kode sumber .asm, kemudian dikompilasi menjadi .obj, dan akhirnya dilink menjadi .exe, sehingga programmer dapat menjalankan hasil kodenya langsung di sistem operasi.
EXAMPLE 8–2
    Gambar tersebut menunjukkan contoh proses kompilasi dan linking beberapa file assembly sekaligus menggunakan MASM (Microsoft Macro Assembler). Tiga file sumber program berbahasa assembly (new.asm, what.asm, dan donut.asm) dikompilasi sekaligus. MASM (versi 6.11) akan menerjemahkan masing-masing file .asm menjadi file object (.obj), yaitu new.obj, what.obj, dan donut.obj. Setelah itu, linker (Microsoft Segmented Executable Linker) akan menggabungkan semua file object tersebut menjadi satu file program yang dapat dieksekusi. Pada hasil keluaran terlihat bahwa file objek digabung secara berurutan (new.obj, what.obj, donut.obj), dan output akhirnya berupa sebuah file eksekusi bernama new.com. File .com adalah format executable sederhana pada sistem DOS dengan ukuran maksimal 64 KB, berbeda dengan .exe yang lebih kompleks.
    Selain itu, terlihat juga bahwa file list (.map) dan file definisi (.def) tidak digunakan (diarahkan ke NUL), dan tidak ada library tambahan yang dilibatkan. Dari sini dapat dipahami bahwa tujuan menjalankan perintah ini adalah untuk membuat satu program utuh dari beberapa modul assembly yang berbeda, sehingga setiap modul dapat dipisahkan dalam file .asm masing-masing, kemudian digabung menjadi satu program executable yang lengkap.
8–2 USING THE KEYBOARD AND VIDEO DISPLAY[kembali]
TABLE 8–1 The keyboard scanning and extended ASCII codes
as returned from the keyboard.
Tabel yang ditampilkan merupakan daftar kode pemindaian (scan code) dan kode ASCII yang diperluas (extended ASCII code) untuk berbagai tombol pada papan ketik (keyboard), termasuk kombinasi tombol tambahan seperti Shift, Control (Ctrl), dan Alternate (Alt). Kolom “Key” menunjukkan nama tombol pada papan ketik, baik berupa huruf, angka, tombol fungsi, maupun tombol khusus seperti Enter, Tab, atau Ctrl. Kolom “Scan Code” memuat kode unik yang dikirimkan papan ketik ke komputer setiap kali sebuah tombol ditekan. Kode ini bersifat tetap berdasarkan posisi fisik tombol pada papan ketik, sehingga tidak bergantung pada simbol atau karakter yang ditampilkan. Misalnya, tombol huruf A memiliki kode pemindaian tertentu yang berbeda dari tombol huruf B.
Kolom “Nothing” berisi kode ASCII atau keluaran yang dihasilkan ketika tombol ditekan tanpa kombinasi tombol lain. Sebagai contoh, menekan tombol angka 1 secara langsung akan menghasilkan nilai ASCII tertentu. Kolom “Shift” memuat kode ASCII atau simbol lain yang dihasilkan jika tombol ditekan bersamaan dengan tombol Shift. Contohnya, tombol angka 1 dengan kombinasi Shift biasanya menghasilkan tanda seru (!). Kolom “Control” menunjukkan keluaran yang dihasilkan apabila sebuah tombol ditekan bersamaan dengan tombol Ctrl. Pada banyak kasus, kombinasi ini menghasilkan kode kontrol khusus yang berguna dalam sistem operasi maupun pemrograman. Sementara itu, kolom “Alternate (Alt)” memperlihatkan kode atau fungsi alternatif yang dihasilkan jika tombol ditekan bersamaan dengan Alt. Kombinasi ini sering dipakai untuk menghasilkan karakter khusus atau memanggil fungsi tambahan tertentu.
Secara keseluruhan, tabel tersebut memiliki peranan penting dalam pemrograman tingkat rendah, khususnya pada bahasa rakitan (assembly language) maupun pemrograman sistem yang memerlukan akses langsung terhadap input papan ketik. Dengan memahami hubungan antara kode pemindaian dan kode ASCII, seorang pemrogram dapat menafsirkan masukan pengguna secara tepat, membedakan antara huruf kecil dan huruf besar, serta mengenali berbagai kombinasi tombol khusus. Tabel ini juga menegaskan bahwa satu tombol fisik pada papan ketik dapat menghasilkan keluaran kode yang berbeda, bergantung pada penggunaan tombol pengubah (modifier keys) seperti Shift, Ctrl, dan Alt.
FIGURE 8–1 Using the textbox with filtering.
Data berkode ASCII muncul sebagaimana diuraikan dalam Tabel 1–8 di Bagian 1–4. Set karakter tambahan dari Tabel 1–9 berlaku untuk data yang dicetak atau ditampilkan saja, dan bukan untuk data keyboard. Perhatikan bahwa kode ASCII dalam Tabel 1–8 sesuai dengan sebagian besar tombol di keyboard. Juga tersedia melalui keyboard adalah data berkode ASCII tambahan. Tabel 8–1 mencantumkan sebagian besar kode ASCII tambahan yang diperoleh dengan berbagai tombol dan kombinasi tombol. Perhatikan bahwa sebagian besar tombol di keyboard memiliki kode alternatif. Setiap tombol fungsi memiliki empat set kode yang dipilih oleh tombol fungsi saja, kombinasi tombol fungsi Shift, kombinasi tombol fungsi Alt, dan kombinasi tombol fungsi Control.
Membuat aplikasi Visual C++ Express yang berisi sebuah textbox sederhana memberikan pemahaman yang lebih baik tentang cara membaca sebuah tombol di Windows. Gambar 8–1 menunjukkan sebuah aplikasi yang ditulis sebagai aplikasi berbasis form. Ingatlah bahwa untuk membuat aplikasi berbasis form:
- 
Jalankan Visual C++ Express. 
- 
Klik Create: Project. 
- 
Pilih CLR Windows Forms Application, lalu berikan sebuah nama dan klik OK. 
Setelah aplikasi berbasis form yang baru dibuat, pilih kontrol textbox dari toolbox dan gambar di layar dialog box, seperti ditunjukkan pada Gambar 8–1.
8–3 DATA CONVERSIONS [kembali]
FIGURE 8–5 The sevensegment display.
Gambar yang ditampilkan merupakan representasi dari tampilan seven-segment beserta pemetaan bit pengendali (control byte) yang digunakan untuk menyalakan masing-masing segmen. Pada bagian kiri gambar terlihat susunan segmen yang diberi label a, b, c, d, e, f, dan g. Setiap segmen tersebut merupakan lampu LED kecil yang dapat dinyalakan atau dipadamkan. Dengan kombinasi tertentu, segmen-segmen tersebut dapat membentuk angka desimal 0 sampai dengan 9.
Pada bagian kanan gambar ditunjukkan struktur control byte, yaitu sebuah data 8-bit yang digunakan untuk mengatur kondisi segmen. Pemetaan bit dilakukan sebagai berikut: bit 0 mengendalikan segmen a, bit 1 segmen b, bit 2 segmen c, bit 3 segmen d, bit 4 segmen e, bit 5 segmen f, dan bit 6 segmen g. Sementara itu, bit 7 tidak digunakan dalam contoh ini, namun dapat dialokasikan untuk keperluan lain seperti titik desimal. Jika suatu bit bernilai logika 1 (high), maka segmen yang bersesuaian akan menyala; sebaliknya, jika bernilai logika 0 (low), maka segmen tersebut padam.
    Keterkaitan gambar ini dengan konsep lookup table terletak pada bagaimana pola nyala segmen diatur melalui kode heksadesimal yang disimpan dalam tabel. Lookup table memuat data biner/heksadesimal yang secara langsung merepresentasikan kombinasi bit pengendali untuk setiap angka. Sebagai contoh, angka 0 dinyatakan dengan menyalakan segmen a, b, c, d, e, dan f sehingga pola bitnya adalah 0011 1111 atau 0x3F. Angka 1 hanya menyalakan segmen b dan c dengan pola 0000 0110 atau 0x06. Angka 2 menyalakan segmen a, b, d, e, dan g dengan pola 0101 1011 atau 0x5B.
Dengan demikian, gambar tersebut menunjukkan representasi perangkat keras berupa susunan segmen dan pemetaan bitnya, sedangkan lookup table dalam program berfungsi sebagai implementasi perangkat lunak yang secara otomatis mengonversi masukan berupa bilangan BCD menjadi pola pengendali untuk menyalakan segmen sesuai dengan angka yang diinginkan.
FIGURE 8–6 A sevensegment display.
    Aplikasi “Display” pada Visual C++ merupakan simulasi dari seven-segment display yang dirancang untuk menampilkan karakter angka 0 sampai 9 di layar dengan memanfaatkan tujuh buah panel berbentuk persegi panjang yang disusun menyerupai batang penyusun angka digital pada kalkulator atau jam. Program ini bekerja dengan menangkap input dari keyboard melalui event KeyDown atau KeyPress, kemudian melakukan penyaringan sehingga hanya angka 0 sampai 9 yang dapat diterima, sementara input lain diabaikan. Setiap angka memiliki pola penyalaan panel tertentu yang disimpan dalam sebuah lookup table, di mana kombinasi panel yang ditampilkan membentuk angka yang sesuai. Tiga buah panel horizontal berukuran 120 × 25 berfungsi sebagai batang atas, tengah, dan bawah, sedangkan empat panel vertikal berukuran 25 × 75 membentuk sisi kiri atas, kanan atas, kiri bawah, dan kanan bawah, sehingga total terdapat tujuh panel yang dapat dinyalakan atau dimatikan. Untuk mengatur tampilan, program menyediakan fungsi Clear yang digunakan untuk menghapus angka sebelumnya dengan cara menyembunyikan seluruh panel melalui pengaturan properti Visible = false, sebelum menyalakan panel baru sesuai dengan angka yang ditekan. Dengan pendekatan ini, setiap penekanan tombol angka di keyboard akan langsung diterjemahkan ke dalam bentuk tampilan digital angka yang ditampilkan di layar.
8–4 DISK FILES [kembali]
FIGURE 8–8 Main data storage areas on a disk.
FIGURE 8–9 Format of any FAT directory or subdirectory entry.
Setiap file atau subdirektori pada sistem berkas direpresentasikan dalam sebuah entri berukuran 32 byte yang menyimpan seluruh informasi penting tentang file tersebut, meliputi nama file sepanjang maksimal delapan karakter, ekstensi file sepanjang maksimal tiga karakter yang dipisahkan dengan titik, atribut file, waktu dan tanggal pembuatan atau modifikasi, lokasi awal file dalam bentuk nomor cluster, serta panjang file yang disimpan dalam dua bagian (high order dan low order) sehingga membentuk bilangan 32-bit yang memungkinkan ukuran file hingga 4 gigabita. Atribut file tersimpan dalam satu byte dengan bit-bit penanda yang menunjukkan jenis file, seperti A (archive), D (subdirectory), V (volume label), S (system file), H (hidden file), dan R (read-only file). Selain itu, terdapat 10 byte yang tidak digunakan dan berfungsi sebagai cadangan, sementara bagian waktu berisi jam dan menit, serta bagian tanggal menyimpan tahun (dihitung dari 1980), bulan, dan hari. Dalam sistem , nama file dibatasi format 8.3 yaitu maksimal delapan karakter untuk nama dan tiga karakter untuk ekstensi, sedangkan dalam hingga , panjang nama file dapat mencapai 255 karakter, dapat mengandung spasi, dan bahkan dapat memiliki lebih dari satu ekstensi seperti “laporan.data.txt”. Sistem pengelolaan file ini disusun dalam struktur hierarkis berupa direktori dan subdirektori, di mana saat pertama kali diformat, disk memiliki sebuah root directory seperti C:\ yang menjadi induk dari seluruh folder, dan folder baru dapat dibuat di bawahnya seperti C:\DATA yang kemudian dapat memiliki subfolder seperti C:\DATA\AREA1 dan C:\DATA\AREA2, bahkan dapat bercabang lebih dalam lagi seperti C:\DATA\AREA2\LIST, sehingga keseluruhan file dan folder dalam sistem FAT dapat diatur secara sistematis dan mudah diakses oleh pengguna maupun sistem operasi.
 
 
 
Komentar