MIKROPROCESSOR MENGGUNAKAN BAHASA ASSEMBLER
ANGGOTA KELOMPOK IV
1. YOHANES PAMUNGKAS
2 . WELLA ASBENIA PUTRI
2 . WELLA ASBENIA PUTRI
1. LANDASAN TEORI
Assembler adalah sebuah program komputer untuk menerjemahkan Bahasa Assembly -- intinya, sebuah representasi menmonic dari bahasa mesin — menjadi kode objek. Sebuah assembler silang(lihat kompilator silang) memproduksi kode untuk satu jenis prosesor, tetapi dapat dijalankan di prosesor lain.
Selain menterjemahkan instruksi assembly mnemonic menjadi opcode, assembler juga menyediakan kemampuan untuk menggunakan nama simbolik untuk lokasi memori (menghindari penghitungan rumit dan pembaruan alamat secara manual ketika sebuah program diubah sedikit), dan fasilitas makro untuk melakukan penggantian textual — biasanya digunakan untuk menggantikan suatu urutan instruksi yang pendek untuk dijalankan perbaris dan bukan dalam sebuah subrutin.
Program bahasa
assembly berisikan :
1. Instruksi –
instruksi mesin
2. Pengarah –
pengarah assembler
3. Kontrol –
kontrol assembler
4. Komentar –
komentar
Instruksi – instruksi mesin
merupakan mnemonik yang menyatakan suatu instruksi yang bisa dijalankan
(misalnya MOV). Pengarah assembler merupakan instruksi keprogram assembler yang
mendefinisikan struktur program, simbol – simbol, (menentukan) mode – mode
assembler dan aliran assembler langsung (missal STITLE).Komentar perlu dituliskan
agar program mudah dibaca, tidak harus perintruksi bisa juga sekumpulan
instruksi yang mengerjakan suatu operasi.
Baris – baris program yang mengandung instuksi mesin atau
pengarah assembler harus mengikuti aturan program assembler ASM51. masing –
masing baris batas beberapa field yang dipisahkan dengan spasi atau tabulasi.
1. Label
Sebuah label mewakili
alamat dari suatu nstruksi (data) yang mengikat. Label ini digunakan
sebagai operan pada instruksi – instruksi percabangan. (Misal : SJMP TERUS)
2. Mnemonik
Mnemonik instruksi
atau pengarah assembler dimasukan dalam “mnemonik field” yang mengikuti “label
mnemonik”. Mnemonik instruksi misalnya : ADD, MOV, INC, dan lain – lain.
3. Operan
Operan ditulis setelah
mnemonik, bisa berupa alamat atau data yang digunakan instruksi yang
bersangkutan. Bisa juga berupa label yang mewakili alamat data atau berupa
simbol yang mewakili data konstan.
4. Komentar
Komentar
harus diwakili dengan titik koma (;). Sebuah garis akan dianggap sebagai
komentar jika diawali dengan titik koma.
5. Simbol –
simbol assembler khusus
Simbol
– simbol assambler khusus digunakan untuk mode – mode pengalamatan melalui
register. Simbol – simbol ini
mencakup A, R0 s/d R7, DPTR, C, PC dan AB. Juga tanda dolar yang
dapat digunakan untuk menunjuk nilai pecahan program saat itu.
6. Pengalamatan
tak langsung
Beberapa
instruksi menggunakan operan berupa register yang menyimpan alamat data yang
disimpan. Dalam hal ini digunakan tanda “at” yang dapat digunakan bersama
dengan R0, R1, DPTR atau PC tergantung dari instruksi yang digunakan.
7. Data langsung
Data
– data langsung yang diawali tanda poud dan menyatu dengan instruksi yang
bersangkutan.
8. Alamat data
Banyak instruksi –
instruksi yang mengakses lokasi – lokasi memori menggunakan pengalamatan
langsung dan membutuhkan alamat memori dan internal (00h hingga 7Fh) atau
alamat SFR (80h hingga FFh) pada operan.
9. Alamat Bit
Salah
satu kelebihan dari mikrokontroller 51 adalah kemampuannya bisa mengakses
alamat – alamat perbit tanpa menggunakan cara khusus. Instruksi yang melibatkan
lokasi yang teralamati bit harus menyediakan alamat bit dalam memori data
internal (00h hingga 7Fh) atau alamat bit di ruang SFR (80h hingga FFh).
10. Alamat Kode
Suatu Alamat kode
digunakan dalam operan instruksi lompatan, termasuk lompatan relatif (SJMP dan
lompatan bersyarat), lompatan dan call far (LJMP, LCALL).
11. Jump dan Call
Jump
ASM51 membolehkan kita
untuk menggunakan mnemonik JMP atau CALL yang umum; mnemonik JMP digunakan
sebagai wakil dari SJMP, AJMP atau LJMP, sedangkan mnemonik CALL mewakili ACALL
atau LCALL.
1. Masuk
ke commandprompt.
2. Ketikkan
huruf a, maka akan muncul
sebuah kode yang memuat alamat.
Contoh disini : OC1E : 0100
OCIE = alamat segmen
0100 = alamat offset
OCIE = alamat segmen
0100 = alamat offset
3. Mengetikkan
program :
MOV CX, 1A
MOV DL, 41
MOV AH, 02
INT 21
INC DL
LOOP 0105
INT 20
MOV CX, 1A
MOV DL, 41
MOV AH, 02
INT 21
INC DL
LOOP 0105
INT 20
4. Menjalankan
program dengan menggunakn perintah debug, dengan cara mengetikkan G.
5. Mengetikkan
instruksi
U 0100 L OF
Instruksi ini berfungsi untuk menampilkan Segmen Ofset, opcode dan instruksi. U 0100 merupakan alamat awal dan L OF merupakan alamat akhir dari program.
U 0100 L OF
Instruksi ini berfungsi untuk menampilkan Segmen Ofset, opcode dan instruksi. U 0100 merupakan alamat awal dan L OF merupakan alamat akhir dari program.
6. Mengetikkan
instruksi “ t “ untuk
menampilkan perubahan registrasi pada instruksi. Ini dilakukan sampai muncul
perbedaan pada alamat segmen.
7. Setelah
semua instruksi telah di buat, ketikkan instruksi “ q “ untuk keluar dari debug.
4. lATIHAN
1. Dari
program-program yang sudah ditulis dan diuji apa fungsi dari register:
AX, BX, CX, DX, SP, IP, DS, SS, ES, CS.
jawaban :
AX, BX, CX, DX, SP, IP, DS, SS, ES, CS.
jawaban :
Accumulator
Register (AX)
Fungsi: Sebagai akumulator dan berhubungan dengan jenis-jenis operasi khusus seperti Aritmetika, In/Out, Shift, Logic, Rotate, dan operasi desimal berkode biner.
Fungsi: Sebagai akumulator dan berhubungan dengan jenis-jenis operasi khusus seperti Aritmetika, In/Out, Shift, Logic, Rotate, dan operasi desimal berkode biner.
Base
Register (BX)
Fungsi: Sebagai register base untuk mereferensi alamat memori. Operasi yang dapat dilakukan adalah Rotate, Logic, Shift, dan Aritmetika.
Fungsi: Sebagai register base untuk mereferensi alamat memori. Operasi yang dapat dilakukan adalah Rotate, Logic, Shift, dan Aritmetika.
Counter
Register (CX)
Fungsi: Sebagai pencacah implisit dengan instruksi tertentu, misalnya terhadap perintah Loop dan operasi string. Counter naik jika direction flag bernilai 0, dan counter turun jika direction flag bernilai 1.
Fungsi: Sebagai pencacah implisit dengan instruksi tertentu, misalnya terhadap perintah Loop dan operasi string. Counter naik jika direction flag bernilai 0, dan counter turun jika direction flag bernilai 1.
Data
Register (DX)
Fungsi: Menyimpan alamat port I/O selama operasi I/O tertentu, baik alamat port 8 bit maupun 16 bit. Digunakan juga dalam operasi perkalian dan pembagian.
Fungsi: Menyimpan alamat port I/O selama operasi I/O tertentu, baik alamat port 8 bit maupun 16 bit. Digunakan juga dalam operasi perkalian dan pembagian.
Register
SP (Stack Pointer, 16 bit)
Fungsi: Digunakan untuk operasi stack seperti menyimpan alamat return saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack.
Fungsi: Digunakan untuk operasi stack seperti menyimpan alamat return saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack.
Register
IP (Instruction Pointer, 16 bit)
Fungsi: Register yang berpasangan dengan CS sebagai register utama untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan langsung menunjuk pada awal program. Code Segment dan Instruction Pointer berfungsi sebagai program counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH dan POP dilakukan di Stack Segment.
Fungsi: Register yang berpasangan dengan CS sebagai register utama untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan langsung menunjuk pada awal program. Code Segment dan Instruction Pointer berfungsi sebagai program counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH dan POP dilakukan di Stack Segment.
Register
CS (Code Segment)
Fungsi: Mencatat segment dari kode program atau instruksi, register CS berpasangan dengan register IP (Instruction Pointer) dalam format CS:IP.
Fungsi: Mencatat segment dari kode program atau instruksi, register CS berpasangan dengan register IP (Instruction Pointer) dalam format CS:IP.
Register
DS (Data Segment)
Fungsi: Menyimpan alamat dari segment dimana data terletak.
Fungsi: Menyimpan alamat dari segment dimana data terletak.
2. Buat
program untuk menampilkan:
1*1 = 1
2*1 = 2
Jawaban:
1*1 = 1
2*1 = 2
Jawaban:
1
* 1 = 1
program: MOV AH,02
MOV DL,31
INT 21
MOV BL,DL
MOV DL,2A
INT 21
MOV BL,DL
MOV DL,31
INT 21
MOV BL,DL
MOV DL,3D
INT 21
MOV BL,DL
MOV DL,31
INC DL
LOOP 107
INT 20
program: MOV AH,02
MOV DL,31
INT 21
MOV BL,DL
MOV DL,2A
INT 21
MOV BL,DL
MOV DL,31
INT 21
MOV BL,DL
MOV DL,3D
INT 21
MOV BL,DL
MOV DL,31
INC DL
LOOP 107
INT 20
2
* 1 = 2
program: MOV AH,02
MOV DL,32
INT 21
MOV BL,DL
MOV DL,2A
INT 21
MOV BL,DL
MOV DL,31
INT 21
MOV BL,DL
MOV DL,3D
INT 21
MOV BL,DL
MOV DL,32
INC DL
LOOP 107
INT 20
program: MOV AH,02
MOV DL,32
INT 21
MOV BL,DL
MOV DL,2A
INT 21
MOV BL,DL
MOV DL,31
INT 21
MOV BL,DL
MOV DL,3D
INT 21
MOV BL,DL
MOV DL,32
INC DL
LOOP 107
INT 20
5. KESIPULAN