CHAPTER 7 - Using Assembly Language with C/C++

 CHAPTER 7 

 Using Assembly Language with C/C++


  • 7–1 USING ASSEMBLY LANGUAGE WITH C++ FOR 16-BIT DOS APPLICATIONS



            TABLE 7-1



## Perbandingan Opsi Kompiler /G1, /G2, dan /G3

Fitur/G1/G2/G3
Target ProsesorIntel 8088 / 8086Intel 80188 / 80186 / 80286Intel 80386
Arsitektur16-bit16-bit32-bit
Inovasi UtamaArsitektur x86 dasar, fondasi dari semua PC modern.Pengenalan Protected Mode (pada 80286) dan beberapa instruksi baru yang lebih efisien.Revolusi 32-bit: Pengenalan register 32-bit (EAX, dll.) dan mode pengalamatan memori 32-bit.
Implikasi PerformaPerforma dasar. Kode yang dihasilkan tidak efisien untuk standar modern.Sedikit lebih cepat dari /G1 karena bisa menggunakan instruksi yang lebih optimal untuk tugas tertentu.Lompatan Performa Besar. Mampu memproses data dalam bongkahan 32-bit, jauh lebih cepat untuk kalkulasi dan manajemen memori.
Keunggulan UtamaKompatibilitas Maksimal. Program dapat berjalan di hampir semua mesin PC-compatible, bahkan yang paling kuno.Keseimbangan antara kompatibilitas dengan mesin AT-class (286) dan sedikit peningkatan performa.Akses ke Kekuatan 32-bit. Membuka potensi performa yang signifikan dan kemampuan mengelola memori lebih besar.
Kelemahan UtamaKinerja Terbatas. Tidak dapat memanfaatkan inovasi CPU apa pun setelah tahun 1981.Menghilangkan Kompatibilitas Awal. Program tidak akan berjalan pada PC generasi pertama (8088/8086).Tidak Kompatibel Mundur. Program tidak akan berjalan sama sekali di mesin 16-bit murni seperti 80286 atau 8086.




  •  7–2 USING ASSEMBLY LANGUAGE WITH VISUAL C/C++ FOR 32-BIT APPLICATIONS

            FIGURE 7-1


Gambar ini menampilkan langkah awal dalam membuat program menggunakan Microsoft Visual C++ 2008. Jendela yang tampil adalah "New Project", di mana pengguna sedang memilih untuk membuat sebuah "Win32 Console Application". Pilihan ini secara spesifik digunakan untuk membangun program berbasis teks yang berjalan di dalam command prompt (konsol), yaitu aplikasi yang tidak memiliki antarmuka grafis seperti jendela atau tombol visual. Untuk melanjutkan, pengguna perlu mengisi nama untuk proyeknya, menentukan di folder mana program tersebut akan disimpan, lalu menekan tombol "OK" untuk membuat kerangka dasar programnya.



            FIGURE 7-2


Gambar ini menampilkan proses pembuatan proyek baru di Microsoft Visual C++ 2008, namun untuk jenis aplikasi yang berbeda. Pengguna di sini memilih templat "Windows Forms Application" yang berada di bawah kategori "CLR". Pilihan ini bertujuan untuk memulai pengembangan sebuah aplikasi yang memiliki antarmuka pengguna grafis (GUI) khas Windows—lengkap dengan elemen visual seperti jendela, tombol-tombol, dan menu—berbeda dari aplikasi konsol yang hanya berbasis teks. Kategori "CLR" (Common Language Runtime) mengindikasikan bahwa program ini akan dibangun di atas platform .NET Framework. Sebelum melanjutkan, pengguna perlu memberikan nama dan lokasi untuk proyek tersebut, yang kemudian akan menghasilkan kerangka dasar untuk sebuah aplikasi Windows visual.



             FIGURE 7-3




Gambar ini memperlihatkan antarmuka desainer visual dari Microsoft Visual C++ 2008, yang merupakan area kerja utama setelah membuat sebuah proyek "Windows Forms Application". Di bagian tengah layar, Anda melihat "Form1", yaitu representasi visual dari jendela utama aplikasi yang sedang dirancang. Di sebelah kanan, terdapat panel "Properties" yang sangat penting, yang berisi daftar lengkap semua atribut dari elemen yang sedang dipilih (dalam hal ini adalah "Form1" itu sendiri). Melalui panel ini, seorang pengembang dapat dengan mudah mengubah berbagai properti seperti judul jendela (properti Text), warna latar belakang (BackColor), ukuran, dan perilaku lainnya secara visual tanpa harus menulis kode. Lingkungan kerja seperti ini dirancang untuk mempercepat proses perancangan antarmuka pengguna grafis (GUI) sebuah aplikasi Windows.


            FIGURE 7-4

Gambar ini merupakan kelanjutan dari proses desain antarmuka pengguna pada gambar sebelumnya. Di sini, pengembang telah melakukan langkah selanjutnya dengan menambahkan sebuah elemen kontrol interaktif, yaitu sebuah tombol (button), ke atas permukaan "Form1". Tombol ini, yang untuk sementara menampilkan teks default "button1", adalah komponen fundamental dalam aplikasi GUI yang nantinya akan diberi fungsi spesifik. Setelah menempatkan tombol ini, langkah berikutnya bagi seorang programmer adalah menulis kode yang akan dieksekusi ketika pengguna akhir mengklik tombol tersebut, serta mengubah propertinya (seperti teks yang ditampilkan) melalui jendela Properties agar lebih deskriptif.



            FIGURE 7-5



Gambar ini menampilkan antarmuka pengguna (UI) yang sudah selesai dirancang untuk sebuah aplikasi Windows fungsional bernama "Converter". Berdasarkan elemen-elemen yang ada, aplikasi ini bertujuan untuk mengonversi sebuah angka dari sistem desimal ke sistem bilangan lain berdasarkan radix (basis) yang dimasukkan oleh pengguna. Antarmukanya terdiri dari label yang jelas ("Decimal Number", "Radix", "Result"), beberapa kotak teks untuk tempat pengguna memasukkan data dan melihat hasil, serta sebuah tombol "Convert" yang akan memicu proses kalkulasi. Ini adalah contoh dari sebuah aplikasi sederhana dengan desain yang lengkap dan intuitif, yang merupakan hasil akhir dari proses perancangan visual yang telah ditunjukkan pada gambar-gambar sebelumnya.


             FIGURE 7-6


Gambar ini menampilkan jendela "Property Pages" atau halaman properti dari sebuah proyek di Visual C++, yang merupakan tempat untuk mengatur konfigurasi tingkat lanjut dari sebuah aplikasi. Pengguna sedang berada di bagian Configuration Properties -> General dan akan mengubah pengaturan untuk "Common Language Runtime support". Sesuai dengan keterangan gambar dan menu dropdown yang terbuka, pengguna sedang mengaktifkan opsi "/clr", yaitu sebuah compiler switch yang fundamental. Tindakan ini bertujuan untuk mengubah proyek dari aplikasi C++ standar (native) menjadi aplikasi yang mendukung dan dapat berinteraksi dengan lingkungan .NET Framework (managed). Dalam konteks yang dijelaskan oleh keterangan gambar, langkah ini merupakan prasyarat yang harus dilakukan untuk memungkinkan penggunaan bahasa assembly di dalam proyek tersebut.


  • 7–3 MIXED ASSEMBLY AND C++ OBJECTS


             FIGURE 7-7

Gambar ini menampilkan jendela "Property Pages" untuk sebuah file individual bernama 'Reverse.txt' di dalam sebuah proyek Visual C++. Pengguna telah mengonfigurasi sebuah "Custom Build Step", yang merupakan fitur untuk memberikan instruksi perakitan (build) khusus pada file tersebut. Pada bagian "Command Line", telah dimasukkan perintah ml /c /Cx /coff Reverse.txt, yang secara spesifik memanggil Microsoft Macro Assembler (ml.exe) untuk memproses file teks tersebut. Tujuan dari langkah ini adalah untuk meng-assemble (merakit) kode bahasa assembly yang tertulis di dalam Reverse.txt menjadi sebuah object file (Reverse.obj), yang nantinya dapat digabungkan (di-link) dengan sisa proyek C++ untuk menciptakan sebuah program aplikasi yang utuh. Ini adalah metode standar untuk mengintegrasikan sebuah modul yang ditulis murni dalam bahasa assembly ke dalam sebuah proyek C++ yang lebih besar.



             TABLE 7-2 


Tabel tersebut menunjukkan kode Morse internasional untuk setiap huruf abjad dari A sampai Z. Kode ini terdiri dari kombinasi sinyal pendek (disebut dit dan ditulis sebagai titik .) dan sinyal panjang (disebut dah dan ditulis sebagai strip -).
## Penjelasan Kode Morse per Huruf
  • A: . - (di-dah)
  • B: - . . . (dah-di-di-dit)
  • C: - . - . (dah-di-dah-dit)
  • D: - . . (dah-di-dit)
  • E: . (dit) - Kode termudah, karena 'E' adalah huruf yang paling umum digunakan dalam bahasa Inggris.

Fungsi utama kode Morse adalah sebagai metode pengkodean untuk mengirim pesan teks melalui media komunikasi yang hanya bisa mengirimkan sinyal sederhana (seperti "nyala/mati" atau "bunyi panjang/bunyi pendek"). Setiap huruf dan angka diwakili oleh kombinasi unik dari sinyal pendek (titik/dit) dan sinyal panjang (strip/dah).
Secara historis, fungsi utamanya adalah:
  • Komunikasi Jarak Jauh: Kode Morse menjadi revolusi dalam komunikasi pada abad ke-19 melalui telegraf, yang mengirimkan pulsa listrik melalui kabel. Ini memungkinkan pengiriman pesan antar kota atau bahkan antar benua dalam hitungan menit, bukan hari atau minggu. 
  • Komunikasi Maritim dan Darurat: Kode ini sangat vital untuk kapal di laut dan stasiun pantai. Sinyal darurat paling terkenal, SOS (... --- ...), adalah standar internasional yang mudah dikenali.
  • Komunikasi Militer: Karena kesederhanaan dan keandalannya, kode Morse banyak digunakan dalam dunia militer, baik melalui radio maupun sinyal cahaya.

         














Komentar

Postingan Populer