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)