Posted by : ikaas


Pada kali ini saya akan membahas tentang tutorial Membuat Menu Sorot pada pemrograman dengan menggunakan bahasa assembly, menu-menu yang disajikan oleh program yang besar hampir semuanya dalam bentuk menu sorot. Kini dengan sedikit pengetahuan mengenai memory layar akan kita buat suatu menu sorot yang sederhana. Menu ini bisa dikembangkan atau digunakan untuk program yang anda buat.


berikut adalah langkah langkahnya
  1. langkah pertama buka dosbox bagi anda yang menggunakan dosbox, atau buka cmd bagi anda yang tidak menggunakan dosbox
  2. ketik
    cd /
    d:
    cd 1ca/asm
    lalu enter dan kemudian klik edit, maka akan tampil seperti dibawah ini
  3. lalu ketikan coding dibawah ini pada layar biru seperti gambar diatas

    DELAY MACRO
                    PUSH CX
                    XOR CX,CX
    LOOP1:
            LOOP LOOP1
            POP CX
            ENDM

    GESER MACRO PosY
            PUSH AX
            PUSH BX
            PUSH CX

            XOR CX,CX
            MOV AL,26
            SUB AL,PosY
            MOV CL,AL
    LOOP2:
            MOV AL,BYTE PTR ES:[BX]
            MOV BYTE PTR ES: [BX+160], AL

    HILANG:
            MOV BYTE PTR ES:[BX],' '
            DELAY
            ADD BX,160
            LOOP LOOP2

            POP CX
            POP BX
            POP AX
    ENDM

    Cls  MACRO  ; Macro untuk menghapus layar
    MOV AX,0600h

    XOR CX,CX
    MOV DX,184Fh
            MOV BH,11      ; Atribut Hijau diatas hitam
    INT 10h
    ENDM
    GotoXY  MACRO X,Y  ; Macro untuk memindahkan kursor
    MOV AH,02
    XOR BX,BX
    MOV DH,Y
    MOV DL,X
    INT 10h
    ENDM
    SimpanL MACRO  ; Macro untuk menyimpan seluruh
    LOCAL Ulang  ; isi layar monitor
    MOV AX,0B800h
    MOV ES,AX
    MOV CX,4000
    XOR BX,BX
    Ulang:
    MOV AL,ES:[BX]
    MOV Layar[BX],AL
    INC BX
    LOOP Ulang
    ENDM
    BalikL MACRO  ; Macro untuk mengembalikan semua
    LOCAL Ulang  ; isi layar yang telah disimpan
    MOV CX,4000
    XOR BX,BX
    Ulang:
    MOV AL,Layar[BX]
    MOV ES:[BX],AL
    INC BX
    LOOP Ulang
    ENDM
    Sorot  MACRO X,Y  ; Macro untuk membuat sorotan
    LOCAL Ulang  ; pada menu
    MOV BL,Y
    MOV AL,160
    MUL BL
    MOV BX,AX
    MOV AL,X
    MOV AH,2
    MUL AH
    ADD BX,AX
    INC BX  ; Alamat warna pada posisi X,Y
    MOV CX,15  ; Panjangnya sorotan
    Ulang:
    MOV BYTE PTR ES:[BX],4Fh ; Atribut sorotan
     ; putih diatas merah
    ADD BX,2
    LOOP Ulang
    ENDM
    Readkey MACRO  ; Macro untuk membaca masukan dari
    MOV AH,00  ; keyboard.
    INT 16h  ; hasilnya AH=Extended, AL=ASCII
    ENDM
    MenuL  MACRO String  ; Macro untuk mencetak menu
    MOV AH,09
    LEA DX,String
    INT 21h
    ENDM

    .MODEL SMALL
    .CODE
    ORG 100h
    TData:  JMP Proses



    Layar DB 4000 DUP (?)
    Menu      DB     9,9,'+=============================+',13,10
    DB      9,9,'|             >>> MENU SOROT <<<              |',13,10
    DB      9,9,'+=============================+',13,10
                    DB      9,9,'|                                                                     |',13,10
                    DB      9,9,'|  1. Cetak Karakter Warna                           |',13,10
                    DB      9,9,'|  2. Cetak Karakter tak warna                      |',13,10
                    DB      9,9,'|  3. Rontok                                                   |',13,10
                    DB      9,9,'|  4. SELESAI                                               |',13,10
                    DB      9,9,'|                                                                     |',13,10
    DB      9,9,'+=============================+$'

    PosX  DB  22  ; Posisi kolom mula-mula
    PosY  DB  12  ; Posisi baris mula-mula
    Panah_Atas  EQU  72  ; Kode tombol panah atas
    Panah_Bawah  EQU  80  ; Kode tombolpanah bawah
    TEnter  EQU  0Dh  ; Kode tombol Enter

    Proses :
    Cls  ; Hapus layar
    GotoXY  0 8  ; kursor = 0,8
    MenuL  Menu  ; Gambar menu
    SimpanL  ; Simpan isi layar
     Ulang :
    BalikL   ; Tampilkan isi layar yang disimpan
    Sorot  PosX,PosY  ; Sorot posisi X,Y

    Masukan:
    Readkey  ; Baca masukan dari keyboard
    CMP  AH,Panah_Bawah  ; Panah bawah yang ditekan ?
    JE  Bawah  ; Ya! lompat bawah

    CMP  AH,Panah_Atas  ; Panah atas yang ditekan ?
    JE  CekY  ; Ya, lompat CekY

    CMP  AL,TEnter  ; Tombol enter yang ditekan ?

    je      pilihan

    JNE  Masukan  ; Bukan, lompat ke ulangi

    CekY :
    CMP  PosY,12  ; Apakah sorotan paling atas ?
    JE  MaxY  ; Ya! lompat ke MaxY
    DEC  PosY  ; Sorotkan ke atas
    JMP  Ulang  ; Lompat ke ulang

    MaxY :
    MOV  PosY,15  ; PosY=Sorotan paling bawah
    JMP  Ulang  ; lompat ke ulang

    Bawah :
    CMP  PosY,15  ; apakah sorotan paling bawah ?
    JE  NolY  ; Ya! lompat ke NolY
    INC  PosY  ; Sorotkan ke bawah
    JMP  Ulang  ; Lompat ke ulang
     NolY :
    MOV PosY,12  ; Sorotan paling atas
    JMP  Ulang  ; Lompat ke ulang

    pilihan:cmp     posy,12
            je      huruf
    cmp posy,13
            je      warna
    cmp posy,14
            je      rontok
            cmp     posy,15
            jmp     SELESAI

    huruf:  cls
            gotoxy 25 8
            mov ah,02h
            mov dl,'A'
            mov cx,26
    huruf2:
            int 21h
            add dl,1
            loop huruf2

    jmp Masukan

    Warna:  cls
            gotoxy 25 10
    mov ah,09h
            mov bh,00h
    mov bl,1
            mov cx,26
    repwarna:
    int 10h
            add bl,1
            loop repwarna

    mov ah,02h
            mov dl,'A'
            mov cx,26
    repwarna2:
            int 21h
            loop repwarna2
    jmp Masukan

    rontok: JMP Prontok
         
    Prontok:cls
            gotoxy 25 12
    mov ah,02h
            mov dl,'A'
            mov cx,26
    huruf3:
            int 21h
            add dl,1
            loop huruf3

    mov ah,09h
            mov bh,00h
    mov bl,1
            mov cx,26
    repwarna1:
    int 10h
            add bl,1
            loop repwarna1

    mov ah,02h
            mov dl,'A'
            mov cx,26
    repwarna3:
            int 21h
            loop repwarna3

            MOV AX,0B800H
            MOV ES,AX

            MOV BX,3998
            MOV CX,25
    ULANGY:
            MOV PosY,CL
            PUSH CX
            MOV CX,80
    ULANGX:
            CMP BYTE PTR ES:[BX],33

            JB TdK

            GESER PosY
    TdK:
            SUB BX,2
            LOOP ULANGX
            POP CX

            LOOP ULANGY
    jmp Selesai



    Selesai:
    INT  20h
    END  TData
  4. kemudian simpan dengan format .ASM
  5. kemudian tasm dan tlink/t file yang disimpan tadi seperti gambar dibawah ini
  6. kemudian test. maka ia akan tampil seperti gambar dibawah ini

    enter cetak karakter warna untuk menampilkan karakter warna,

    enter cetak karakter tidak berwarna untuk menampilkan karakter tidak berwarna, dan enter rontok untuk menampilkan semua karakter rontok dan enter selesai untuk keluar.
untuk mengunduh file tutorial diatas bisa diunduh dibawah ini

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © 2011 - 2014 Ika Sunarsih - Yui-Lovers V2 - Powered by Blogger - Designed by - -