Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
MP
ROM
RAM
I/O Interface
Bentuk:
MOV
TUJUAN: REGISTER/ AKUMULATOR
AL,5
SUMBER:
DATA
Bentuk:
MOV
TUJUAN: REGISTER
AL,BL
SUMBER: REGISTER
Contoh Mode Pengalamatan Register: MOV AL, BL apa artinya? MOV AX, CX apa artinya? MOV CS, AX apa artinya? MOV CS, DS tidak diijinkan karena segment to segment MOV BL, BX Tidak dijinkan karena berbeda ukuran (mixed size)
7
Susun perintah untuk mengisi register segmen DS dengan data 1234 heksadesimal! Jawab: MOV AX,1234 immediate addressing MOV DS,AX register addressing
Bentuk 1:
MOV
TUJUAN: REGISTER
AL,[0120]
SUMBER: ALAMAT RELATIF MEMORI
Contoh Bentuk 1:
Susun instruksi assembly untuk memindahkan/copy isi alamat 10120 heksadesimal ke register AL, isi alamat 10150 heksadesimal ke register BL, dan isi alamat 10160 heksadesimal ke register CL! Anggap segment base 1000 tersimpan pada register DS! Jawab: MOV AX,1000 immediate addressing MOV DS,AX register addressing MOV AL,[0120] direct addressing MOV BL,[0150] direct addressing MOV CL,[0160] direct addressing Coba kerjakan contoh di atas menggunakan program DEBUG!
10
Bentuk 2: MOV
[0120],AL
SUMBER: REGISTER
Contoh: susun instruksi untuk mengisi alamat 10120 dengan data 5 heksadesimal! Anggap segment base yang digunakan adalah 1000 tersimpan dalam DS!
11
Tugas1: Susun instruksi untuk mengisi alamat 20150 heksadesimal dengan data 5, dan alamat 20160 heksadesimal dengan data 2. Isi kedua alamat tersebut dijumlahkan dan hasilnay disimpan di alamat 20170 heksadesimal. Anggap segment base yang digunakan adalah 2000 tersimpan dengan DS! Gunakan program DEBUG untuk menguji program anda, tunjukkan dengan peta memori dan register bahwa program telah berjalan dengan baik.
12
13
Contoh permasalahan Susunlah intruksi ke dalam bahasa assembly untuk memindahkan data A1B2 yang ada di register AX ke alamat fisik memori 20300 heksadesimal menggunakan mode pengalamatan register indirect, anggap segment yang digunakan adalah DS = 2000 dan alamat relatif yang menunjukkan alamat memory disimpan di register BX Jawab: DS : IP = 20300 alamat fisik DS = 20000 alamat awal DS IP = 0300 DIRECT: Intruksi yang digunakan MOV AX, 2000 MOV AX, 2000 MOV DS, AX MOV DS, AX MOV AX, A1B2 MOV BX, 0300 MOV [0300], AX MOV AX, A1B2 MOV [BX], AX
14
16
Contoh permasalahan Susun intruksi dalam bahasa assembly untuk memindahkan data A1B2 dari akumulator AX ke alamat memori 20304 H dengan menggunakan register relative addressing , anggap segmen yang digunakan DS : 2000 dan dan displacement 4 DS : IP = 20304 DS = 20000 IP = 0304 Intruksi yang digunakan Mov AX,2000 Mov DS, AX Mov BX,0300 Mov AX,A1B2 Mov [Bx + 4], AX
17
18
INTERUPT
; nama program : int01.asm ; ALTERNATIF .... ; contoh program mencetak string dengan ; INT 21h fungsi 9 #MAKE_COM# ; membuat berkas COM ORG 100h JMP START ; Data: msg DB 'Belajar Assembler',13,10 DB 'Sangat menyenangkan',13,10 DB 'Menggunakan Emulator 8086!','$ ; simpan alamat label msg ke register DX: START: LEA DX, msg ; Cetak string-nya: MOV AH, 9 INT 21h RET ; kembali ke sistem operasi END
; nama program : int04.asm MODIFIKASI contoh program mencetak string dengan ; yang mengandung'$' disertai BELL #MAKE_COM# ; membuat berkas COM ORG 100h JMP START ; Data: msg DB 'ASSEMBLER',0 ; simpan alamat label msg ke register DX: START: MOV AH, 2 ; fungsi mencetak karakter' MOV BX, 0 ; tanda indeks data ulang: MOV DL, msg[BX] ; baca karakter simpan di DL CMP DL, 0 ; apakah kode ASCII 0? JZ selesai ; YA, selesai! INT 21h ; TIDAK, cetak karakter! CALL bunyi_bel ; panggil prosedur bunyi_bel INC BX ; naikkan indeksnya JMP ulang ; ulangi lagi selesai: RET ; kembali ke sistem operasi bunyi_bel PROC MOV DL, 7 MOV AH, 2 INT 21h RET bunyi_bel ENDP END
; nama program : int06.asm membuat garis diagonal dengan karakter 'smiley face' ; mulai posisi kiri atas layar hingga batas bawah layar #MAKE_COM# ORG 100h ; membuat berkas COM
START: MOV AH, 0 ; siapkan layar hitam/putih 80x25 MOV AL, 2 ; karakter 'smiley face' + mode layar INT 10h ; set layar (sekaligus bersihkan layar) MOV DX, 0 MOV CX, 1 ; mulai dari posisi 0,0 (DH dan DL) ; 1 karakter tercetak
set_kursor: MOV AH, 2 INT 10h ; set posisi kursor MOV AH, 10 INT 10h ; cetak karakter INC DH ; geser kanan INC DL ; turunkan CMP DH, 25 ; apakah sudah di batas bawah layar? JNE set_kursor ; BELUM, ulangi lagi RET ; YA, selesai END
; nama program : int07.asm membuat garis diagonal dengan karakter 'smiley face' ; mulai posisi kanan atas layar hingga batas bawah layar #MAKE_COM# ; membuat berkas COM ORG 100h START: MOV AH, 0 ; siapkan layar hitam/putih 80x25 MOV AL, 2 ; karakter 'smiley face' + mode layar INT 10h ; set layar (sekaligus bersihkan layar) MOV DX, 79 ; mulai dari posisi 0,79 (DH dan DL) MOV CX, 1 ; 1 karakter tercetak
set_kursor: MOV AH, 2 INT 10h ; set posisi kursor MOV AH, 10 INT 10h ; cetak karakter INC DH ; turunkan DEC DL ; geser kiri CMP DH, 25 ; apakah sudah di batas bawah layar? JNE set_kursor ; BELUM, ulangi lagi RET ; YA, selesai END
; nama program : int02.asm ; contoh program mencetak string dengan ; yang mengandung'$' #MAKE_COM# ; membuat berkas COM ORG 100h JMP START ; Data: msg DB 'Belajar $Assembler','$' ; simpan alamat label msg ke register DX: START: LEA DX, msg ; Cetak string-nya: MOV AH, 9 INT 21h RET ; kembali ke sistem operasi END
; nama program : int03.asm ; MODIFIKASI ... ; contoh program mencetak string dengan ; yang mengandung'$' #MAKE_COM# ; membuat berkas COM ORG 100h JMP START ; Data: msg DB 'Belajar $Assembler',0 ; simpan alamat label msg ke register DX: START: MOV AH, 2 ; fungsi mencetak karakter' MOV BX, 0 ; tanda indeks data ulang: MOV DL, msg[BX] ; baca karakter simpan di DL CMP DL, 0 ; apakah kode ASCII 0? JZ selesai ; YA, selesai! INT 21h ; TIDAK, cetak karakter! INC BX ; naikkan indeksnya JMP ulang ; ulangi lagi selesai: RET ; kembali ke sistem operasi END
Tema TB