Tugas Pemrograman Bahasa Rakitan
SOAL
- Buatlah tampilan karakter atau kalimat terbaca dari belakang / terbalik dan buatkan
konsepnya terlebih dahulu.
JAWAB :
1. Konsepnya :
- Tentukan nilai bx = 0
Xor bx, bx atau
Mov bx, 0
- Tentukan panjang karakter dari kalimat yang ditulis di program
Mengambil panjang karakter dengan memindahkan nilai bx ke al
- Bandingkan nilai al sampai karakter ‘$’
- Kemudian nilai bx dipindahkan ke cx
- Cetak kalimat dari karakter terakhir sesuai dengan panjang karakter dari kalimat
tersebut
2. Jawabannya :
.model small
.code
org 100h
mulai:
jmp proses
kata db 'Bahasa Rakitan$'
proses:
mov bx, 0
cek:
mov al, kata[bx]
inc bx
cmp al, '$'
jne cek
dec bx
mov cx, bx
ulang:
dec bx
mov dl, kata[bx]
mov ah, 02h
int 21h
loop ulang
int 20h
end mulai
HaRi iTu seJeNaK diRi tiBa2 beRguMaM... "iNi seBuaH teGuRaN YaNg beRkaLi2 aKu RasAkaN...." LeWaT seBuaH peRniKaHaN sEseOrAng, AkU teRsaDaR deNgaN seGaLa KeKuraNgaNku SeLaMa iNi...Astaghfirullah....
"Nafsu mengatakan perempuan itu cantik atas dasar rupanya. Akal mengatakan perempuan itu cantik atas dasar ilmu dan kepintarannya. Dan hati mengatakan perempuan itu cantik atas dasar akhlaknya."
Jumat, 04 Februari 2011
Materi Pemrograman Bahasa Rakitan Pertemuan 9
Label:
materi
Materi Pemrograman Bahasa Rakitan Pertemuan 8
Tugas Pemrograman Bahasa Rakitan
SOAL
Saat dijalankan muncul password = jika karakter yang diketik benar maka muncul Kode bintang (*) jika
salah akan kembali meminta passwprd kembali
Jawab :
.model small
.code
org 100h
Mulai:
jmp proses
kal db 13,10,'Masukkan Password : $'
kal2 db 10,'Welcome Guys !!!$'
proses :
mov ah, 09h
lea dx, kal
int 21h
mov ah, 07h
int 21h
cmp al, 'Y'
je pilihan1
jne proses
int 20h
pilihan1:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'O'
je pilihan2
jne proses
pilihan2:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'U'
je pilihan3
jne proses
pilihan3:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'R'
je pilihan4
jne proses
pilihan4:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 09h
lea dx, kal2
int 21h
int 20h
end Mulai
SOAL
Saat dijalankan muncul password = jika karakter yang diketik benar maka muncul Kode bintang (*) jika
salah akan kembali meminta passwprd kembali
Jawab :
.model small
.code
org 100h
Mulai:
jmp proses
kal db 13,10,'Masukkan Password : $'
kal2 db 10,'Welcome Guys !!!$'
proses :
mov ah, 09h
lea dx, kal
int 21h
mov ah, 07h
int 21h
cmp al, 'Y'
je pilihan1
jne proses
int 20h
pilihan1:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'O'
je pilihan2
jne proses
pilihan2:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'U'
je pilihan3
jne proses
pilihan3:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 07h
int 21h
cmp al, 'R'
je pilihan4
jne proses
pilihan4:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 09h
lea dx, kal2
int 21h
int 20h
end Mulai
Label:
materi
Materi Pemrograman Bahasa Rakitan Pertemuan 7
1. interrupt 21h service 01h
NO. INTERRUPT = 21h
NO. SERVICE = 01h
FUNCTION = Input 1 Karakter (Keyboard Input)
Mengambil Input Dari Keyboard (Standard Input Device),
lalu menampilkan karakter ke layar (Standard Output Device) dan menyimpan karakter tersebut di AL.
Penekanan tombol Ctrl-Break akan dicek. Jika tombol tersebut ditekan, interupt 23h akan dieksekusi.
INPUT :
AH = 01H
OUTPUT :
AL = Kode ASCII Hasil Input Tercetak di layar
2. interrupt 21h service 07h
NO. INTERRUPT = 21h
NO. SERVICE = 07h
FUNCTION = Input 1 Karakter Tanpa Echo Tidak Mengecek Ctrl-C (Direct Console Input Without
Echo). Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke
register AL. Service ini sangat mirip dengan service 01h, hanya saja pada service ini karakter tak
ditampilkan ke layar. Service ini tidak mengecek Ctrl-C atau Ctrl-Break. Service ini sering dipakai untuk
pemasukan password karena tak menampilkan karakter yang diketikkan.
INPUT :
AH = 07H
OUTPUT :
AL = Kode ASCII Yang Ditekan
3. interrupt 21h service 08h
NO. INTERRUPT = 21h
NO. SERVICE = 08h
FUNCTION = Input 1 Karakter Tanpa Echo Mengecek Ctrl-C (Console Input Without Echo With ^C).
Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke AL.
Service ini juga tidak menampilkan karakter yang diketikkan ke layar monitor tapi mencek Ctrl-C atau
Ctrl-Break. Jika tombol tersebut ditekan, INT 23h akan dieksekusi.
INPUT :
AH = 08H
OUTPUT :
AL = Kode ASCII Yang Ditekan
NO. INTERRUPT = 21h
NO. SERVICE = 01h
FUNCTION = Input 1 Karakter (Keyboard Input)
Mengambil Input Dari Keyboard (Standard Input Device),
lalu menampilkan karakter ke layar (Standard Output Device) dan menyimpan karakter tersebut di AL.
Penekanan tombol Ctrl-Break akan dicek. Jika tombol tersebut ditekan, interupt 23h akan dieksekusi.
INPUT :
AH = 01H
OUTPUT :
AL = Kode ASCII Hasil Input Tercetak di layar
2. interrupt 21h service 07h
NO. INTERRUPT = 21h
NO. SERVICE = 07h
FUNCTION = Input 1 Karakter Tanpa Echo Tidak Mengecek Ctrl-C (Direct Console Input Without
Echo). Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke
register AL. Service ini sangat mirip dengan service 01h, hanya saja pada service ini karakter tak
ditampilkan ke layar. Service ini tidak mengecek Ctrl-C atau Ctrl-Break. Service ini sering dipakai untuk
pemasukan password karena tak menampilkan karakter yang diketikkan.
INPUT :
AH = 07H
OUTPUT :
AL = Kode ASCII Yang Ditekan
3. interrupt 21h service 08h
NO. INTERRUPT = 21h
NO. SERVICE = 08h
FUNCTION = Input 1 Karakter Tanpa Echo Mengecek Ctrl-C (Console Input Without Echo With ^C).
Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke AL.
Service ini juga tidak menampilkan karakter yang diketikkan ke layar monitor tapi mencek Ctrl-C atau
Ctrl-Break. Jika tombol tersebut ditekan, INT 23h akan dieksekusi.
INPUT :
AH = 08H
OUTPUT :
AL = Kode ASCII Yang Ditekan
Label:
materi
Materi Pemrograman Bahasa Rakitan Pertemuan 6
KONDISI / LOMPAT (JUMP)
1. Lompatan Tak Bersyarat
Secara fisik anda hanya dapat melihat bahwa lompatan tak bersyarat terdiri dari satu macam, tapi bila
dianalisis jumlah byte yang dipakai untuk lompatan tak bersyarat dapat dikelompokan menjadi 2 macam yaitu :
- Lompatan Dekat (Near Jump)
- Lompatan Jauh (Far Jump)
Adapun secara fisik perintah lompat dapat ditulis sebagai berikut :
JMP [lokasi memory]
Contoh :
JMP 200
Perintah ini adalah untuk melakukan lompatan kearah lokasi memory segment:0200
2. Perbandingan Lompatan Bersyarat
Untuk lompatan bersyarat, terdapat beberapa jenis lompatan yang kegunaanya dapat disesuaikan dengan
keperluan yang dibutuhkan. Untuk perbandingan Operand dengan menggunakan perintah perbandingan
(Compare). Adapun tata penulisan perintah perbandingan adalah :
CMP [operand1],[operand2]
Contohnya :
CMP AX,0102
Perintah ini digunakan untuk membandingkan AX dengan 0102
3. Lompatan Bersyarat
- JE (Jump If Equal)
Perintah ini berlaku bila pada saat pembandingan kedua opearnd sama. Contohnya :
CMP AX,0102
JE 0102
- JNE (Jump If Not Equal)
Perintah ini berlaku bila pada saat perbandingan kedua operand tidak sama. Contohnya :
CMP AX,0102
JNE 0102
- JG (Jump If Greater Than)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar dari operand
pertama. Kebalikannya adalah JNG (Jump If Not Greater)
- JGE (Jump If Greater Or Equal)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar atau sama dengan
dari operand pertama. Kebalikannya adalah JNGE (Jump If Not Greater)
1. Lompatan Tak Bersyarat
Secara fisik anda hanya dapat melihat bahwa lompatan tak bersyarat terdiri dari satu macam, tapi bila
dianalisis jumlah byte yang dipakai untuk lompatan tak bersyarat dapat dikelompokan menjadi 2 macam yaitu :
- Lompatan Dekat (Near Jump)
- Lompatan Jauh (Far Jump)
Adapun secara fisik perintah lompat dapat ditulis sebagai berikut :
JMP [lokasi memory]
Contoh :
JMP 200
Perintah ini adalah untuk melakukan lompatan kearah lokasi memory segment:0200
2. Perbandingan Lompatan Bersyarat
Untuk lompatan bersyarat, terdapat beberapa jenis lompatan yang kegunaanya dapat disesuaikan dengan
keperluan yang dibutuhkan. Untuk perbandingan Operand dengan menggunakan perintah perbandingan
(Compare). Adapun tata penulisan perintah perbandingan adalah :
CMP [operand1],[operand2]
Contohnya :
CMP AX,0102
Perintah ini digunakan untuk membandingkan AX dengan 0102
3. Lompatan Bersyarat
- JE (Jump If Equal)
Perintah ini berlaku bila pada saat pembandingan kedua opearnd sama. Contohnya :
CMP AX,0102
JE 0102
- JNE (Jump If Not Equal)
Perintah ini berlaku bila pada saat perbandingan kedua operand tidak sama. Contohnya :
CMP AX,0102
JNE 0102
- JG (Jump If Greater Than)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar dari operand
pertama. Kebalikannya adalah JNG (Jump If Not Greater)
- JGE (Jump If Greater Or Equal)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar atau sama dengan
dari operand pertama. Kebalikannya adalah JNGE (Jump If Not Greater)
Label:
materi
Kamis, 03 Februari 2011
Materi Pemrograman Bahasa Rakitan Pertemuan 5
Pengulangan LOOP
contoh penggunaan loop :
.model small
.code
org 100h
mulai:
mov ah, 2h
mov dl, 'A'
mov cx, 5
lagi :
int 21h
loop lagi
int 20h
end mulai
Hasilnya :
Tugas : Buat tulisan huruf A - R dilanjut Z - H dan digabung
inc : untuk menambah
dec : untuk mengurangi
Jawab :
.model small
.code
org 100h
mulai:
mov ah, 2h
mov dl, 'A'
mov cx, 18
lagi :
int 21h
inc DL
loop lagi
mov ah, 2h
mov dl, 'Z'
mov cx, 19
lagi2 :
int 21h
dec DL
loop lagi2
int 20h
end mulai
contoh penggunaan loop :
.model small
.code
org 100h
mulai:
mov ah, 2h
mov dl, 'A'
mov cx, 5
lagi :
int 21h
loop lagi
int 20h
end mulai
Hasilnya :
Tugas : Buat tulisan huruf A - R dilanjut Z - H dan digabung
inc : untuk menambah
dec : untuk mengurangi
Jawab :
.model small
.code
org 100h
mulai:
mov ah, 2h
mov dl, 'A'
mov cx, 18
lagi :
int 21h
inc DL
loop lagi
mov ah, 2h
mov dl, 'Z'
mov cx, 19
lagi2 :
int 21h
dec DL
loop lagi2
int 20h
end mulai
Label:
materi
Selasa, 01 Februari 2011
Materi Pemrograman Bahasa Rakitan Pertemuan 4
Jenis Extensi Program Hasil Assembly
Program COM
- Lebih pendek dari file EXE
- Lebih cepat dibanding file EXE
- Hanya dapat menggunakan 1 segmen
- Ukuran file maksimum 64 KB (ukuran satu segment)
- Sulit untuk mengakses data atau procedure yang terletak pada segment yang lain.
- 100h (256) byte pertama merupakan PSP(Program Segment Prefix) dari program tersebut.
- Bisa dibuat dengan DEBUG
Program EXE
- Lebih panjang dari file COM
- Lebih lambat dibanding file COM
- Bisa menggunakan lebih dari 1 segmen
- Ukuran file tak terbatas sesuai dengan ukuran memory.
- Mudah mengakses data atau procedure pada segment yang lain.
- Tidak bisa dibuat dengan DEBUG
Bentuk Umum Assembly
.MODEL SMALL
.CODE
.STACK 200h / ORG 100h
label1:
JMP label2
data Label2:
program
end label1
Contoh Program Assembly
.MODEL SMALL
.CODE
ORG 100h
mulai:
mov ah,02h
mov dl,'A'
int 21h
int 20h
end mulai
Daftar interrupt
Interrupt 21h – Service 02h
Fungsi :
Mencetak satu buah karakter pada layar.
Register Input : AH = 02h DL = karakter / kode ascii
Register Output : Tidak ada
Program COM
- Lebih pendek dari file EXE
- Lebih cepat dibanding file EXE
- Hanya dapat menggunakan 1 segmen
- Ukuran file maksimum 64 KB (ukuran satu segment)
- Sulit untuk mengakses data atau procedure yang terletak pada segment yang lain.
- 100h (256) byte pertama merupakan PSP(Program Segment Prefix) dari program tersebut.
- Bisa dibuat dengan DEBUG
Program EXE
- Lebih panjang dari file COM
- Lebih lambat dibanding file COM
- Bisa menggunakan lebih dari 1 segmen
- Ukuran file tak terbatas sesuai dengan ukuran memory.
- Mudah mengakses data atau procedure pada segment yang lain.
- Tidak bisa dibuat dengan DEBUG
Bentuk Umum Assembly
.MODEL SMALL
.CODE
.STACK 200h / ORG 100h
label1:
JMP label2
data Label2:
program
end label1
Contoh Program Assembly
.MODEL SMALL
.CODE
ORG 100h
mulai:
mov ah,02h
mov dl,'A'
int 21h
int 20h
end mulai
Daftar interrupt
Interrupt 21h – Service 02h
Fungsi :
Mencetak satu buah karakter pada layar.
Register Input : AH = 02h DL = karakter / kode ascii
Register Output : Tidak ada
Label:
materi
Materi Pemrograman Bahasa Rakitan Pertemuan 3
Siklus Eksekusi
- Instruction Addess Calculation (IAC)
Yaitu mengkalkulasi atau menentukan alamat instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.
- Instruction Fetch (IF)
Yaitu membaca atau pengambil instruksi dari lokasi memorinya ke CPU.
- Instruction Operation Decoding (IOD)
Yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
- Operand Address Calculation (OAC)
Yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
- Operand Fetch (OF)
Adalah mengambil operand dari memori atau dari modul I/O.
- Data Operation (DO)
Yaitu membentuk operasi yang diperintahkan dalam instruksi
- Operand Store (OS)
Yaitu menyimpan hasil eksekusi ke dalam memori
Level Bahasa
- High Level Language (e.g. Java, C++)
A = B + C Assignment Statement
- Low Level Language -> Assembly Language (e.g. Pentium, PowerPC, ARM etc, Java Bytecode)
LOAD R2, B Assembly Language
ADD R2, C Instructions
STORE R2, A
- (Binary) Machine Code
0001101000000001 Machine Code
0011101000000010 Instructions
0010101000000000
Set Instruksi
- LOAD Register, [Memory Address]
Register = Memory[MemoryAddress]
- STORE Register, [Memory Address]
Memory[MemoryAddress] = Register
- ADDRgeister, [MemoryAddress]
Register = Register + Memory [MemoryAddress]
- SUB Rgeister, [MemoryAddress]
Register = Register - Memory [MemoryAddress]
Format Instruksi
Assembly Instruction e.g. ADD R2, C
Machine Code OPCODE REG ADDRESS
4-bit 2-bit 10-bit
Instruction Fields
- OPeration CODE (Select CPU Instruction)
LOAD 0001
STORE 0010
ADD 0011
SUB 0100
- REGister (Spesifies 1st Operand for Instruction)
Register 0 00
Register 1 01
Register 2 10
Register 3 11
- ADDRESS (Specifies 2nd Operand for Instruction)
10-bit Memory Word Address
- Instruction Addess Calculation (IAC)
Yaitu mengkalkulasi atau menentukan alamat instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.
- Instruction Fetch (IF)
Yaitu membaca atau pengambil instruksi dari lokasi memorinya ke CPU.
- Instruction Operation Decoding (IOD)
Yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
- Operand Address Calculation (OAC)
Yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
- Operand Fetch (OF)
Adalah mengambil operand dari memori atau dari modul I/O.
- Data Operation (DO)
Yaitu membentuk operasi yang diperintahkan dalam instruksi
- Operand Store (OS)
Yaitu menyimpan hasil eksekusi ke dalam memori
Level Bahasa
- High Level Language (e.g. Java, C++)
A = B + C Assignment Statement
- Low Level Language -> Assembly Language (e.g. Pentium, PowerPC, ARM etc, Java Bytecode)
LOAD R2, B Assembly Language
ADD R2, C Instructions
STORE R2, A
- (Binary) Machine Code
0001101000000001 Machine Code
0011101000000010 Instructions
0010101000000000
Set Instruksi
- LOAD Register, [Memory Address]
Register = Memory[MemoryAddress]
- STORE Register, [Memory Address]
Memory[MemoryAddress] = Register
- ADDRgeister, [MemoryAddress]
Register = Register + Memory [MemoryAddress]
- SUB Rgeister, [MemoryAddress]
Register = Register - Memory [MemoryAddress]
Format Instruksi
Assembly Instruction e.g. ADD R2, C
Machine Code OPCODE REG ADDRESS
4-bit 2-bit 10-bit
Instruction Fields
- OPeration CODE (Select CPU Instruction)
LOAD 0001
STORE 0010
ADD 0011
SUB 0100
- REGister (Spesifies 1st Operand for Instruction)
Register 0 00
Register 1 01
Register 2 10
Register 3 11
- ADDRESS (Specifies 2nd Operand for Instruction)
10-bit Memory Word Address
Label:
materi
Langganan:
Postingan (Atom)