Tugas 1
Mikroprosesor dan Antarmuka
Dosen
Darwison, M.T.
Oleh:
Kelompok 14
Pedri Yulianto
(1210951011)
Nella Wahyuni (1210951015)
Nella Wahyuni (1210951015)
Dewi Wardianti (1201951014)
Jurusan
Teknik Elektro
Fakultas
Teknik
Universitas
Andalas
Padang
2016
Program Menampilkan Angka 0-9
;Program
menampilkan angka 0 sampai 9 ke layar monitor
mov cx,0Ah
;counter sebanyak 10 kali (banyaknya angka)
mov dl,30h
;kode ASCII dari angka 0
ulangi:
mov AH,02h
int 21h
;mencetak kode ASCII karakter di DL ke layar
inc dl
;dl+1=karakter berikutnya
loop ulangi ;ulangi sampai angka 9 karena
CX=Ah(10 kali)
mov AH,4CH
INT
21h ;hentikan program
Gambar 1. Menampilkan Angka 0-9
Program Menampilkan Angka 9-0
;Program
Menampilkan Angka 9-0 ke layar monitor
MOV CX,0Ah ;counter
sebanyak 10x (banyaknya angka)
MOV DL,39h ;kode
ASCII dari angka 9
ulangi:
MOV AH,02h
INT 21h ;mencetak
kode ASCII karakter DL ke layar
DEC DL ;DL
-1= karakter berikutnya
LOOP ulangi ;ulangi sampai angka 9 karena CX=Ah(10x looping)
MOV AH,4CH
INT 21h ;
Hentikan Program
Gambar 2. Menampilkan Angka 9-0
Program Perkalian 2
;Program
perkalian 2
MOV CX,4h ;counter
sebanyak 4x (banyaknya angka)
MOV BH,1h ;base
register untuk ascii angka
ulangi:
MOV AH,02h
MOV DL,0DH ;membuat
baris baru
INT 21h
;cetak angka
MOV DL,0AH ;membuat
kursor baru
INT 21h
MOV DL,BH
;Base register untuk langsung menulis ke memori
ADD DL,30H
;BH+30H untuk ascii angka
MOV AH,02H
INT 21H
;cetak angka
MOV DL,2AH
;cetak '*'
INT 21H
MOV DL,32H
;cetak '2'
INT 21h
MOV DL,3DH
;cetak '='
INT 21h
MOV AL,02H
MUL Bh
;Mengalikan nilai register BL dengan nilai register AL dan disimpan di
register AX
MOV DL,AL
ADD DL,30H ;BH+30H untuk ascii angka
MOV AH,02H
INT 21H
MOV DL,0DH ;membuat baris baru
INT 21H
MOV DL,0AH ;membuat kursor baru
INT 21h
INC BH
;BH+1, angka ditambahkan 1
LOOP ulangi ;ulangi sampai cx=0
MOV AH,4CH
INT 21H
Gambar
3. Perkalian 2
Program Pembagian 1
;Program
pembagian 1
MOV CX,0009h ;counter sebanyak 9x (banyaknya angka)
MOV BH,01h ;base
register untuk ascii angka
ulangi:
MOV AH,02h
MOV DL,0DH ;membuat
baris baru
INT 21h
;cetak angka
MOV DL,0AH ;membuat
kursor baru
INT 21h
MOV DL,BH
;Base register untuk langsung
menulis ke memori
ADD DL,30H
;BH+30H untuk ascii angka
MOV AH,02H
INT 21H
;cetak angka
MOV DL,3AH
;cetak ':'
INT 21H
MOV DL,31H
;cetak '1'
INT 21h
MOV DL,3DH
;cetak '='
INT 21h
MOV AL,BH
XOR AH,AH ;Buat nol AH
MOV BL,01H
DIV BL
;Membagikan nilai register BL dengan nilai register AL dan disimpan di
register AX
MOV DL,AL
ADD DL,30H ;BH+30H untuk ascii angka
MOV AH,02H
INT 21H
MOV DL,0DH ;membuat baris baru
INT 21H
MOV DL,0AH ;membuat kursor baru
INT 21h
INC BH
;BH+1, angka ditambahkan 1
LOOP ulangi ;ulangi sampai cx=0
MOV AH,4CH
INT 21H
Gambar
4. Pembagian 1
Program JUMP ke label ulangi
;Program
JUMP ke label ulangi
MOV CX,1Ah ;counter
sebanyak 26x (banyaknya angka)
MOV DL,5Ah ;kode
ASCII dari Huruf Z
ulangi1:
MOV AH,02H
INT 21h ;mencetak
kode ASCII karakter DL ke layar
DEC DL ;DL
-1= karakter berikutnya
LOOP ulangi1 ;ulangi sampai huruf A karena CX=19h(25x looping)
MOV AH,4CH
INT 21h
Gambar 5. Program JUMP ke label ulangi
Program Operasi Stack
;
Program Operasi Stack
MOV AH,02H
MOV CX,1AH ;counter sebanyak 25x (banyaknya angka)
MOV DL,41H ;kode ASCII dari Huruf A
Lagi: INT 21H
PUSH DX ;menggantikan fungsi MOV BL,DL
MOV DL,20H ;memberikan spasi
INT 21H
POP DX ;menggantikan fungsi MOV BL,DL
INC DL ;DL +1= karakter berikutnya
LOOP Lagi ;ulangi sampai huruf Z karena CX=1Ah(26x
looping)
MOV AH,4CH
INT 21H
Gambar 6. Program Operasi Stack
Program Intruksi logika OR
;Program
Intruksi logika OR
MOV
DL,5AH ;kode ASCII dari Huruf Z
MOV
AH,02H
INT
21H ;mencetak kode ASCII karakter DL
ke layar
OR
DL,20H ;proses logika OR
INT
21H ;mencetak kode ASCII karakter DL
ke layar
MOV
AH,4CH
INT
21H
Gambar 7. Program Instruksi Logika OR
Program Input int 21H, service 09H
;Input
int 21H, service 09H
JMP MULAI
;Disini
data dimulai
KATA
db 'Kata yang dicetak',13,10
db
'dengan Interrupt 21H service 09H',13,10
db
'$'
;Disini
Program dimulai
mulai:
MOV DX,OFFSET
KATA ;Mengisi DX dengan OFFSET DATA
MOV AH,09H
;Mengisi AH dengan Service Number
INT 21H
MOV AH,4CH
INT 21H ;Pemberhentian Program
Gambar 8. Input int 21H, service 09H
Program Input int 21H, service 01H
;Input
int 21H, service 01H
START: JMP MULAI
Tanya
db 'Jawablah Pertanyaan Di Bawah Ini
!',13,10
db 'Apakah Anda seorang Laki - Laki
?(Y/T)',13,10
db 'Jawaban Anda :$'
Jawab1
db 13,10,'Anda Adalah Seorang
Mahasiswa ',13,10,'$'
Jawab2
db 13,10,'Anda Adalah Seorang
Mahasiswi ',13,10,'$'
MULAI:
MOV AH,09H ; SERVICE NUMBER = 09h
MOV DX,OFFSET
Tanya ; NENCETAK TANYA.
INT 21H
ULANG:
MOV AH,01H ; SERVICE NUMBER = 01H
INT 21H
CMP AL,'Y'
; APAKAH JAWABAN 'y'
JE Mahasiswa ; JIKA SAMA LOMPAT KE LAKI
CMP AL,'y'
; APAKAH JAWABAN 'y'
JE
Mahasiswa ; JIKA SAMA
LOMPAT KE LAKI
CMP AL,'T' ; APAKAH JAWABAN 'T'
JE Mahasiswi
; JIKA SAMA LOMPAT KE WANITA
CMP AL,'t' ; APAKAH JAWABAN 't'
JNE ULANG ; JIKA TIDAK SAMA LOMPAT ULANG
Mahasiswi:
MOV AH,09H
MOV DX,OFFSET JAWAB2 ; MENCETAK JAWAB2
INT 21H
JMP SELESAI ; LOMPAT KE SELESAI
Mahasiswa:
MOV AH,09H
MOV DX,OFFSET Jawab1 ; MENCETAK JAWAB1
INT 21H
SELESAI:
MOV AH,4CH
INT
21H ; AKHIR PR0GRAM
Gambar 9. Input int 21H, service 01H
Program Input int 21H, service 06H
;Program
Input Per Huruf Tanpa Echo int 21H, service 06H
START: JMP
MULAI ;mulai
DATA DB
'KATA INI AKAN DICETAK TERUS $' ;data
kalimat
MULAI: MOV AH,09H
;service number 09H ;
MOV DX,OFFSET
DATA ;mencetak DATA
INT 21H ;mencetak kata
MOV AH,06H
MOV DL,0FFH ;register DL berisi FF hexa
XOR AL,AL ;proses logika OR AL terhadap AL
INT 21H
CMP AL,'X' ;Input X
JE AKHIR ;Akhir program
CMP AL,'x' ;Input x
JMP MULAI ;Akhir program
AKHIR: MOV AH,4CH
INT 21H
Gambar 10. Input int 21H, service 06H
Program Input int 21H, service 0AH
;PROGRAM
Menulis dan mebaca memori
;Program
isi NIM
Start: JMP MULAI
TANYA DB 'NIM Anda?',13,10,'$'
NIM
DB 11,?,11 DUP(?)
JAWAB DB 13,10,'NIM : $'
MULAI: MOV AH,09H
MOV DX,OFFSET TANYA
INT 21H ; MENCETAK TANYA
MOV AH,0AH
MOV DX,OFFSET NIM
PUSH DX ;MENYIMPAN DX KE
STACK
INT 21H ;INPUT DARI
KEYBOARD
MOV BX,OFFSET NIM
INC BX
MOV DL,[BX] ;MASUKAN
[BX] KE DX
XOR DH,DH
INC BX ;BX=BX+1
ADD BX,DX ;BX=BX+DX
MOV DL,'$'
MOV [BX],DL ;MASUKAN DL
KE [BX]
MOV DX,OFFSET JAWAB
MOV AH,09H
INT 21H ;CETAK JAWAB
POP DX ;AMBIL DX DARI STACK
INC DX ;DX=DX+1
INC DX ;DX=DX+1
MOV AH,09H
INT 21H ;CETAK TAMPUNG
MOV AH,4CH
INT 21H
Gambar 11. Input int 21H, service 0AH
Program Subroutine cek input
;SUBROUTINE CEK INPUT KEYBOARD
;'esc' =27h,KELUAR PROGRAM
;'S' =APLIKASI GESER LED BERHENTI
;'S' =APLIKASI GESER LED KEMBALI DILANJUTKAN
cek:
push ax
mov ah,6
mov dl,0ffh
int 21h
cmp al,27
keluar0:
je keluar0
or al,20h
cmp al,'s'
jne run
stop:
mov ah,6
mov dl,0ffh
int 21h
cmp al,27
je keluar0
or al,20h
cmp al,'r'
jne stop
run:
pop ax
ret
Gambar 12. Subroutine cek input
Program Menampilkan 3 Digit Angka
;Program
Menampilkan 3 Digit angka
MULAI:
MOV AX,469
XOR CX,CX ;untuk angka berapa
digit bilangan
ulang:
MOV BH,10
DIV BH ;bagi AX dengan BH
PUSH AX ;masukkan hasil bagi
AX ke Stack
INC CX ;DL +1= karakter
berikutnya
XOR AH,AH ;AH = 0
CMP AL,00 ;AL = 0
JNE ulang ;ulang jika tidak
sama
ulangi1:
POP DX
MOV DL,DH
ADD DL,30H
;+30 untuk dicetak
MOV AH,02
INT 21H
LOOP
ulangi1
MOV AH,4CH
INT 21h
Gambar 13. Menampilkan 3 Digit Angka
Bahan lengkap dapat didownload disini
Tidak ada komentar:
Posting Komentar