Membuat Pustaka Macro (bag. 1)


INCLUDE  PUSTAKA.MCR
.MODEL SMALL
.CODE
ORG 100h

Mulai :  JMP  Proses
         Kal0 DB 13,10,'CONTOH CETAK KALIMAT DENGAN MACRO $'
         Kal1 DB 13,10,'A = $'
         Kal2 DB 13,10,'B = $'
         Kal3 DB 13,10,'A*B = $'
         Kal4 DB 13,10,'A+B = $'
         Kal5 DB 13,10,'A-B = $'
         Kal6 DB 13,10,'A/B = $'
         a Dw 8
         b Dw 2
       

Proses:
         Cetak_Kar  'A'       
         Cetak_Klm  Kal0       
         MOV AH,09
         MOV DX,OFFSET Kal1
         int 21h
            Cetak_Angka a
         MOV AH,09
         MOV DX,OFFSET Kal2
         int 21h
            Cetak_Angka b
         MOV AH,09
         MOV DX,OFFSET Kal3
         int 21h
            Perkalian a,b
         MOV AH,09
         MOV DX,OFFSET Kal4
         int 21h
            Penjumlahan a,b
         MOV AH,09
         MOV DX,OFFSET Kal5
         int 21h
            Pengurangan a,b
         MOV AH,09
         MOV DX,OFFSET Kal6
         int 21h       
            Pembagian a,b
         INT   20h
END      Mulai

Pustaka.MCR
Cetak_Kar    Macro Kar
            MOV AH,02
            MOV DL,Kar
            INT 21H
            EndM
           
Cetak_Klm  MACRO  Klm        ; Macro untuk mencetak 
           LEA    DX,Klm     ; kalimat 
           MOV    AH,09
           INT    21h
           ENDM
   
Catat        MACRO j
            mov ah,0ah
            lea dx,j
            int 21h
            ENDM
      
Cetak_Angka MACRO Angka
            mov ax,angka
            Tampil
            endm
       
Perkalian MACRO a,b
            MOV AX,a
            Mul b
            endm
           
Penjumlahan MACRO a,b
            MOV AX,a
            ADD AX,b
            endm
           
Pengurangan MACRO a,b
            MOV AX,a
            SUB AX,b
            endm
           
Pembagian MACRO a,b
            SUB  DX,DX
            MOV AX,a
            DIV b
            endm
Kuadrat MACRO a
            MOV AX,a
            Mul a
            endm
AkarKuadrat     Macro a
        MOV CX,a
        MOV AX,-1
        CWD
        XOR BX,BX
Loopsqrt:
    INC AX
    INC DX
    INC DX
    ADD BX,DX
    CMP BX,CX
    JBE Loopsqrt

ENDM
           
Tampil Macro
            local looping, cetak
            mov bx,10 ;bx=10
            xor cx,cx ;cx=0
            looping:
            xor dx,dx
            div bx ;dx=ax/bx
            push dx ;push untuk menyimpan data ke dalam steck
            inc cx
            cmp ax,0
            jne looping
            cetak:
            pop dx ;pop untuk mengambil data dari stack
            add dl,'0' ;ubah angka menjadi code ascii
            mov ah,02h
            int 21h
            loop cetak
            endM
Previous
Next Post »