Senin, 24 November 2014

Bahasa Rakitan: Membuat Program Macro pada Assembly




Menggunakan Macro dalam Assembly

Macro hampir sama dengan procedure, yang dapat membantu anda dalam membuat program yang besar. Dengan Macro anda tidak perlu menggunakan perintah "CALL" dan anda juga bisa menggunakan parameter dengan mudah. Suatu ciri dari pemrograman bahasa tingkat tinggi. Macro adalah lebih mudah dibuat daripada procedure.
Model Macro
"P1" dan "P2" adalah parameter yang bisa anda gunakan pada macro. Parameter ini berbentuk optional, artinya bisa digunakan ataupun tidak. Supaya lebih jelas bisa anda lihat pada program MAC1 yang menggunakan macro ini untuk mencetak karakter.
Berikut ini contoh program mencetak karakter huruf S.

Cetak_Kar MACRO Kar
MOV AH,2H
MOV DL,Kar
INT 21H
ENDM


.MODEL SMALL
.CODE
ORG 100h
Proses: Cetak_Kar 'S'
INT 20h
END     Proses
Buka TASM 1.4 , kemudian ketikan
   cd\  (enter)
   cd 1ca\asm (enter)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIVld1pi1EJIf-LjhcKytHUJ-O6Sb8yz3A3DA3F1oH623pUyBu0VFwLW_cv0J4gvl6Xx24vEGpoarefR3EO0MGvPRxjlJqeKSdf39vt5sKMMSBmYbTdSoinbLgTXHBo8UdkvJWGW1nSkM/s1600/1.png


Tambahkan  edit.
   Edit (enter)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiILu2WllG-4tFdBfCzhhZV18WF-E7QMbth5dwOg34nqnWx7KdJgHytgX1hByrubQXS99jzsVoUflQje2vgFExTkXuzhg0g1JUyNOwmOfimNz8dev_THZlY1MNjkLOSlA8GL5kUpW9y-Ng/s1600/2.png



Ketikan program tersebut pada layar berwarna biru.
Cetak_Kar MACRO Kar
MOV AH,2H
MOV DL,Kar
INT 21H
ENDM


.MODEL SMALL
.CODE
ORG 100h
Proses: Cetak_Kar 'S'
INT 20h
END     Proses
 https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxRZOEgfTql6WeYVk2JYYMgmLA47vjenyowf67QF4frmRuuy4LPVt9pXmdsEi1n3n29RhLEB1GYwb_LaUzl1NeHgxSNogK_-ZMvTUMLqE23A4KTYYVSR8Bo-velkdCbEhDzLPYAOFuRr4/s1600/MACROS..png


Setelah melakukan langkah di atas, simpan program dengan nama .ASM.
 https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmJaAeTWbnPk4k_iTbCkSJuTv76idZ_tqRaYjy4W6jJzPAyvSOnaw7fpD_yh-biwAcf7gnH2Dyw6SjWmGXTNCPok4x1cy1QyFbHM1JKalMxMZ7T_1sKS92bF2C7xUFF2QUZnPs97YZvb0/s1600/MACROS1.png

 Kemudian jalankan program tersebut dengan Tasm dan cetak dengan Tlink.


Menggunakan macro
Dari program MAC1 bisa anda lihat betapa mudahnya untuk menggunakan macro. Pada procedure, setiap kali kita memanggilnya dengan perintah CALL maka program akan melompat pada procedure tersebut, sehingga setiap procedure hanya terdapat satu kali saja pada program. Lain halnya dengan Macro, setiap terjadi pemanggilan terhadap macro atau dapat dikatakan secara kasar, setiap kita memanggil macro dengan menuliskan nama macronya dalam program, maka seluruh isi macro akan dipindahkan pada program yang memanggilnya. Dengan demikian bila pada program anda memanggil suatu macro sebanyak 10 kali maka macro tersebut akan disisipkan 10 kali pada program. Hal inilah yang menyebabkan program yang menggunakan macro ukuran programnya menjadi lebih besar. Tetapi hal ini juga yang menyebabkan program yang menggunakan macro lebih cepat daripada procedure, karena pada procedure komputer harus melakukan lompatan tetapi pada macro tidak perlu.

Kita akan mencetak label pada macro satu parameter.
Cetak_Kar MACRO Kar                    
LOCAL Ulang
MOV CX,5…………………banyaknya karakter yang akan dicetak
MOV AH,02
MOV DL,Kar
Ulang:
INT 21h ; Cetak Karakter
LOOP Ulang
ENDM ; End Macro


.MODEL SMALL
.CODE
ORG 100h
Proses:
Cetak_Kar 'A' …………………………. Cetak Huruf A
Cetak_Kar 'Q' …………………………. Cetak Huruf Q
INT 20h
END      Proses
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifL-ZHkc7JVFEZV4WQ84MSzUOyOLpkJI3NuVTT4CsjNVvynhRmV_H7cqNbGrU4sDw-LfFmbkZVgi91PtZBUdk4KxpX17yYbRimfmTvKRSw2FT9KPkjwSitbn-TaqU0aFVGAVZqKOT4F_Y/s1600/satupar.png


    Setelah melakukan langkah di atas, simpan program dengan nama .ASM. Kemudian cek menggunakan TASM dan cetak menggunakan TLINK.https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9VPIW73h_B84IQqQIRt_xYrWyYXSIzwmkq_REVHlgA9t6qQtcL08T9p8i5a4n98Brup3g9csL2vjSIIXy2yHGbzaX4XYqWy905EddiBoU_AYhqrYEO32h1zRAuxXSphgCAVmyGmvLi2w/s1600/satupar11.png




LABEL PADA MACRO
Pada macro anda bisa menggunakan label seperti biasa. Tetapi anda harus ingat, karena setiap pemanggilan Macro akan menyebabkan seluruh isi macro tersebut disisipkan pada program, maka pada macro yang didalamnya menggunakan label hanya dapat dipanggil sebanyak satu kali. Bila anda menggunakanya lebih dari satu kali maka akan terjadi "**Error** Symbol already defined elsewhere: ULANG" karena dianggap kita menggunakan label yang sama.
Untuk menghindari hal itu, gunakanlah directif LOCAL. Dengan directif LOCAL assembler akan membedakan label tersebut setiap kali terjadi pemanggilan terhadapnya.

Selanjutnya kita akan mencetak karakter macro lebih dari satu parameter.
CETAK_KAR MACRO
                          MOV AH,02
                          MOV DL,KAR
                          MOV CX,26                  

ULANG       :
                     INT 21H
                     INC DL
                     LOOP ULANG
                     ENDM 

.MODEL SMALL
.CODE
 ORG 100H
PROSES     :CETAK_KAR’A’
                   INT 20H
END           PROSES
 https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixOZIJ4d5TUP4sifo91PW2G8LDSR1QpDKlu1i875PHuai_py2iFceB0nONnyYhOqY_fik9mTgVsPr2ScNHS1AOKTsI-N0OasaKQzgkcWFqeu9LRrRxH4mPwMZACV2d6vqKmqjtyJwDf_A/s1600/m.png

    Setelah melakukan langkah di atas, simpan program dengan nama MACR2 .ASM. Kemudian cek menggunakan TASM dan cetak menggunakan TLINK. Setelah program dijalankan maka hasilnya akan seperti berikut.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4YUveOlFOnrB1jKrDVh0RvtyXUuis8GovtTPcjP9zYOUl9u5AWKDBgP5GO3e7jrh3PGzCl8V5OssQXTWBAplMvoi5VNAuuBSSPjN3WYi6zctaDrLK6Gl5UhPsXGZXvmnwIbhdpiD_GIg/s1600/mmm.png



 Selesai...............!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!




Tidak ada komentar: