Categories
Mikrokontroler

C vs Assembly MCS-51: Kasus unik Aritmetika!

Beberapa saat yang lalu saya sempat mencoba sebuah kompiler MikroC dari mikroelektronika yang betul-betul hebat, karena hasil kompilasinya yang berupa ASM dan LST bisa saya lihat langsung. Dan kabar baiknya adalah, saya bisa membandingkan antara program C yang saya buat dan hasil kompilasi ASM/LST yang dihasilkan.

Sebagai kasus yang sangat unik dan membuat saya ketawa terbahak-bahak setelah menyaksikan hasil kompilasi ASM-nya adalah masalah aritmetika yang melibatkan operasi penjumlahan, pengurangan, pembagian dan sisa pembagian (modulus). Okey, agar Anda tidak bingung dibutuhkan syarat minimal tahu bahasa C dan bahasa ASM untuk MCS-51 untuk memahami listing-listing program berikut ini.

Yang pertama, adalah listing program C sebagai berikut (saya capture langsung dari editor mikroc-nya):

Terlihat dengan jelas bahwa saya menuliskan 4 (empat) macam operasi aritmetika terhadap register R5 dan R7: penjumlahan, pengurangan, pembagian dan modulus yang masing-masing menempati baris 4, 5, 6 dan 7. Okey that’s all, lantas saya lakukan kompilasi. Kira-kira menurut Anda hasil ASM-nya bagaimana? Apakah nantinya kompiler akan membuat sederetan instruksi untuk melakukan penjumlahan, pengurangan, pembagian dan modulus? Atau bagaimana? Ya, langsung saja Anda lihat hasil kompilasi berikut dan silahkan berikan komentar Anda.

Bagaimana? Saya bisa tertawa terbahak-bahak melihat hasil kompilasi ini.

Ini adalah sebagian kecil dari rancangan buku saya terbaru… nantikan terbitnya, pasti heboh! Insya Alloh