"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

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

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

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

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)

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

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

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