org 100h
jmp mulai
tampilan db
''
, 13,10
db
' _________________ '
, 13,10
db
' by:SURIADI '
, 13,10
db
' Oo===================== MENU UTAMA =======================oO'
, 13,10
db
' || ||'
, 13,10
db
' || 1) Menghapus Layar ||'
, 13,10
db
' || 2) Menampilkan Urutan Abjad AAABBC ||'
, 13,10
db
' || 3) Mengalikan Bilangan 2 dan 2 ||'
, 13,10
db
' || 4) Menampilkan Biodata Anda ||'
, 13,10
db
' || 5) Selesai ||'
, 13,10
db
' || ||'
, 13,10
db
' || ||'
, 13,10
db
' || ||'
, 13,10
db
' Oo========================================================oO'
, 13,10
db
' Pilihan Anda [1...5]:$'
mulai: mov ah, 09h ; service number 09h untuk mencetak string
mov dx, tampilan ; mengisi data string
int 21h ; menampilkan di monitor
;aksi input pilihan menu oleh user
pilih: mov ah,07h ; service number 07h untuk input karakter
int 21h ; menampilkan
cmp al,
'1'
; bandingkan input dengan karakter
'1'
je hapuslayar ; jika sama lompat ke prosedur hapuslayar
cmp al,
'2'
; bandingkan input dengan karakter
'2'
je urutanabjad ; jika sama lompat ke prosedur urutanabjad
cmp al,
'3'
; bandingkan input dengan karakter
'3'
je perkalian42 ; jika sama lompat ke prosedur perkalian42
cmp al,
'4'
; bandingkan input dengan karakter
'4'
je tampilbiodata ; jika sama lompat ke prosedur tampilbiodata
cmp al,
'5'
; bandingkan input dengan karakter
'7'
je keluar ; jika sama lompat ke prosedur keluar
call kembali ; panggil prosedur kembali
;Untuk mengosongkan layar
kosonglayar: mov ah,07h ; service number 07h untuk menghapus layar ke bawah
mov al,00h ; hapus semua baris
mov bh,71h ; tampilkan warna background putih tulisan biru
mov ch,00h ; Baris batas atas 0
mov cl,00h ; Kolom batas atas 0
mov dh,0ffh ; baris batas bawah off
mov dl,0ffh ; kolom batas bawah off
int 10h ; Menjalankan interupt 10h
ret
kursor: mov ah,02h ; Service number 02h (untuk menentukan posisi kursor)
mov dh,00h ; Nilai baris posisi kursor (baris 0)
mov dl,00h ; Nilai kolom posisi kursor (kolom 0)
mov bh,00h ; Nilai nomor halaman layar (halaman 0)
int 10h ; Inisialisasi bentuk dan posisi kursor saat itu
ret
hapuslayar : call kosonglayar ; kosongkan layar
call kursor ; letakkan kursor di awal
mov ah,07h ; servis input
int 21h ; tampilkan
call kembali ; kembali ke menu
komenhuruf db
''
,13,10
db
''
,13,10
db
'Pencetakan karakter membentuk string AAABBC menggunakan program looping .....'
,13,10
db
''
,13,10
db
'$'
,13,10
urutanabjad: call kosonglayar ; kosongkan layar
call kursor ; letakkan kursor di awal
mov ah, 09h ; servis 09h menampilkan string
mov dx, komenhuruf ; ambil data string komenhuruf
int 21h ; tampilkan
mov cx,03h ; pengulangan 3 kali
mov bl,04h ; nilai awal bl = 04
mov dl,40h ; masukkan nilai 40 ke reg dl
ulang1: dec bl ; kurangi dl dengan 1
push bx ; simpan bx ke stack
inc dl ; tambah dl dengan 1
ulang2: dec bl ; kurangi bl dengan 1
mov ah,02h ; beri nilai ah dengan service 02h - pencetakan karakter
int 21h ; tampilkan
jne ulang2 ; lompat ke ulang2
pop bx ; ambil nilai bx dari stack
loop ulang1 ; kebali ke baris ulang1
mov ah,07h ; servis input
int 21h ; tampilkan
call kembali ; kembali ke menu
komenkali db
''
,13,10
db
''
,13,10
db
'Perkalian antara bilangan 2 dan 2 menggunakan Assembler.'
,13,10
db
'Hasilnya adalah ....'
,13,10
db
''
,13,10
db
'$'
,13,10
perkalian42: call kosonglayar ; kosongkan layar
call kursor ; panggil kursor ke awal halaman
mov ah, 09h ; servis pencerakan string
mov dx, komenkali ; ambil data string di komenkali
int 21h ; tampilkan
mov bl,02h ; nilai bl = 04
mov al,02h ; nilai al = 02
mul bl ; kalikan nilai bl dengan al
mov dl,al ; masukkan nilai al ke dl untuk dicetak
add dl,30h ; tambahkan nilai dl dengan 30
mov ah,02h ; servis pencetakan karakter
int 21h ; tampilkan
mov ah,07h ; servis input
int 21h ; tampilkan
call kembali ; kembali ke menu
komengenap db
''
,13,10
db
''
,13,10
db
'Bilangan genap antara 0 sampai dengan 8 adalah.....'
,13,10
db ',13,10
db
'$'
,13,10
bilgenap08:
call kosonglayar ; kosongkan layar
call kursor ; letakkan kursor di awal halaman
mov ah, 09h ; servis 09h pencetakan string
mov dx, komengenap ; ambil data string dari komengenap
int 21h ; tampilkan
mov cx,05h ; pengulangan 5 kali
mov ah,02h ; servis pencetakan karakter
mov dl,30h ; masukkan nilai 30h ke dl
a: int 21h ; tampilkan
add dl,02h ; tambah dl dengan 2
loop a ; lompat ke baris a sebanyak pengulangan
mov ah,07h ; servis input
int 21h ; tampilkan
call kembali ; kembali ke menu
; berikut adalah data yang akan ditampilkan pada menu Biodata
biodata: db
' ___________________________________________________________________'
,13,10
db
' //=========================== BIODATA ============================\\'
,13,10
db
' || ||'
,13,10
db
' || Nama : suriadi ||'
,13,10
db
' || Alamat : Jl. KH. Ahmad Dahlan No.81 Pekanbaru ||'
,13,10
db
' || Umur : 20 tahun ||'
,13,10
db
' || Pekerjaan : mahasiswa ||'
,13,10
db
' || Hobi : berenang ||'
,13,10
db
' || email : adie putra 11@gmail.com ||'
,13,10
db
' || Website : maz adie.blogspot.com ||'
,13,10
db
' || ||'
,13,10
db
' Oo================================================================oO$'
,13,10
tampilbiodata: call kosonglayar ; kosongkan layar
call kursor ; letakkan kursor di awal
mov dx,biodata ; ambil data string dari biodata
mov ah,09h ; servis 09h untuk pencetakan string
int 21h ; tampilkan
mov ah,07h ; servis input
int 21h ; tampilkan
call kembali ; kembali ke menu
keluar: int 20h ; program selesai
kembali : call kosonglayar ; kosongkan layar
call kursor ; letakkan kursor di awal
jmp mulai ; lompat ke prosedur mulai (menampilkan menu)