Senin, 08 Desember 2014

MEMBUAT MENU SOROT


 Assalamualaikum wr,wb

NAMA                   : Putri Rizki Amalia
KELAS                    : 1CB               
NIM                       : 061730700546
MATA KULIAH    : Bahasa Rakitan  


Saya akan memposting "Membuat Menu Sorot" Masih dalam program DOSbox 0,74.

Proses Kerjanya sebagai berikut:
1. Jalankan DOSBox 0.74 dan ketik Mount E C:\TASM 


   Setelah itu ketik E: , kemudian ketik edit dan enter 


2.      Kemudian ketikan perintah seperti perintah yang ada di gambar tersebut
 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,10     ; 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. Huruf Warna                                                |’,13,10
 DB     9,9,’|  2. Huruf tidak berwarna                                   |’,13,10
 DB     9,9,’|  3. Rontok                                                          |’,13,10
 DB      9,9,’|  4. selesai                                                           |’,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    warna
 cmp    posy,13
 je    huruf
 cmp    posy,14
 je      rontok
 cmp     posy,15
 jmp     selesai2
 huruf:  cls
 gotoxy 25 10
 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
 add dl,1
 loop repwarna2
 jmp Masukan
 rontok: JMP Prontok
 Prontok:
 gotoxy 25 10
 mov ah,09h
 mov bh,00h
 mov bl,1
 mov cx,26
 repwarna4:
 int 10h
 add bl,1
 loop repwarna4
 gotoxy 5 10
 mov ah,02h
 mov dl,’A’
 mov cx,26
 repwarna5:
 int 21h
 add dl,1
 loop repwarna5
 mov ah,02h
 mov dl,’A’
 mov cx,26
 repwarna3:
 int 21h
 add dl,1
 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 masukan
 selesai2 : jmp selesai
 Selesai:cls
 INT     20h
 END     TData
setelah selesai simpan file (file > save as) sorot.asm seperti gambar dibawah ini:

 Setelah itu pilih File-exit

 3. Kemudian jalankan program dengan cara seperti berikut:

 maka akan tampil menu seperti:

 Dan ketika kita menyorot no.1 maka akan tampil seperti:


 Ketika kita menyorot pada no.2



 Maka akan tampil seperti berikut:



 Ketika kita menyorot pada no.3

 Maka akan tampil seperti berikut:




 Ketika kita menyorot pada no.4

 Maka program akan menjadi keluar seperti berikut:
Semoga Bermanfaat :)


 

Tidak ada komentar:

Posting Komentar