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

Tags: , ,

13 Responses to “C vs Assembly MCS-51: Kasus unik Aritmetika!”

  1. masih bingung..
    Kok operasinya langsung dikerjakan disitu ya?

  2. @Andi:
    Gak usah mas Andi, kompiler yang langsung melakukan perhitungannya karena algoritma yang digunkan mikroC seharusnya melakukan optimasi…

  3. saya masih bingung pak,…
    Lalu dengan listing seperti itu hasil kompilasi yang baik seharusnya gimana?

  4. @johan:
    itu sudah merupakan hasil kompilasi yang terbaik buat MikroC, sehingga tinggal kita buat programnya seharusnya menjadi lebih efisien…

  5. itu bagian dari optimasi kompiler
    kompiler mengingat nilai dari r5 dan r6 yang belom diubah
    malah seharusnya r7 kaga perlu diulang karena nilai dari hasil + - dan * kaga pernah digunakan cukup move r7, 3

  6. Saya tunggu bukunya pak.

  7. mudah2an bukunya bener2 fresh dan sedikit lebih beda dari yang lain, soalnya kalau saya perhatikan kebanyakan berbagai buku tentang mikrokontroler yang sudah sudah beredar sekarang cenderung sama dari segi aplikasinya atau objeknya itu2 saja…

    Wasalam,
    dari yang pernah beli buku hasil karya Pak Agfi

  8. seppp…
    Begitulah gunanya C, semua perintah dikerjakan di C, selanjutnya tinggal mengisi nilai register di assembler..
    baru ngeh saya pak, biasanya males liat ASM dari C soalnya pasti banyak menggunakan variabel yang tak guna L.O.L

  9. pak tolong bahas dong software ladder micro dari jonathan westhues http://cq.cx/ladder.pl. atau di link ini http://www.ziddu.com/download/.....o.exe.html
    makasih pak, soalnya masih lagi belajar nih.

  10. emang MCS-51 dioptimasi untuk bahasa C y…???? bknnya mcs-51 emang harus pk assembly. kl AVR y g’pp pk bahasa C.

  11. @sponx

    MCS-51 bisa pake “Keil C51″ compiler untuk bahasa C, cuma sintaksnya agak beda dibanding AVR seperti klo CVAVR kan PORTB, PORTB.0 s/d PORTB.7, klo di Keil C51 jadinya P2, P2_0 s/d P2_7.
    Sayangnya Keil nggak free..

  12. pak, bukunya dijual di toko buku online juga ya?

Trackbacks/Pingbacks

  1. C vs Assembly MCS-51: Kasus LED Flip-flop

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>