Senin, 07 Januari 2013

Set Instruksi Program



Berikut ini adalah contoh set instruksi yang akan dianalisa lebih lanjut. Mode pengalamatan set instruksi ini adalah Register Addressing karena field alamatnya mengacu pada register yang ada di dalam software, bukan pada memori utama sehingga proses eksekusinya lebih cepat.


Int bil1;
Int bil2;
DDRB = 0xFF;
PORTB =0xFF;
Bil1=0x30;
Bil2=0x20;
PORTB=bil1-bil2;

Int bil1;
Int bil2;
PENGERTIAN : melakukan interupsi yang nilai interupsinya disimpan dalam konstanta bil1 dan bil2. Interupsi adalah permintaan kepada mikroprosesor untuk melakukan instruksi tertentu.
ANALISA : Int adalah elemen instruksi yang merupakan OPCODE sedangkan bil1 dan bil2 adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan alamat yang dimiliki bil1 dan bil2.

DDRB = 0xFF;
PENGERTIAN : menyimpan nilai 0xFF pada alamat yang dimiliki DDRB.
DDRB singkatan dari Data Direction Port B yang berfungsi untuk merujuk ke register pada software yang digunakan. Dalam hal ini memberikan keterangan bahwa Port B bertindak sebagai output.
ANALISA :
bentuk instruksi ini adalah MOV DDRB, 0xFF;
bentuk algoritmiknya adalah DDRB = 0xFF;
MOV adalah elemen yang merupakan OPCODE sedangkan DDRB adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada alamat DDRB. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

PORTB = 0xFF;
PENGERTIAN : menyimpan nilai 0xFF pada alamat yang dimiliki PORTB.
PORTB memberi pengertian bahwa Port B bertindak sebagai input dan merujuk pada register di dalam software.
ANALISA :
bentuk instruksi ini adalah MOV PORTB, 0xFF;
bentuk algoritmiknya adalah PORTB = 0xFF;
MOV adalah elemen yang merupakan OPCODE sedangkan PORTB adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada alamat PORTB. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

Bil1 = 0x30;
PENGERTIAN : menyimpan nilai 0x30 pada alamat yang dimiliki Bil1.
ANALISA :
bentuk instruksi ini adalah MOV Bil1, 0x30;
bentuk algoritmiknya adalah Bil1 = 0x30;
MOV adalah elemen yang merupakan OPCODE sedangkan Bil1 adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada alamat Bil1. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

Bil2=0x20;
PENGERTIAN : menyimpan nilai 0x20 pada alamat yang dimiliki Bil2.
ANALISA :
bentuk instruksi ini adalah MOV Bil2, 0x20;
bentuk algoritmiknya adalah Bil2 = 0x20;
MOV adalah elemen yang merupakan OPCODE sedangkan Bil2 adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada alamat Bil2. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

PORTB = bil1 - bil2;
PENGERTIAN : pengurangan (substract) antara isi register bil1 dengan isi register bil2 kemudian hasilnya disimpan dalam register PORTB.
ANALISA :
bentuk instruksi ini adalah SUB PORTB, bil1, bil2;
bentuk algoritmiknya adalah PORTB = bil1 - bil2;
SUB adalah elemen yang merupakan OPCODE, bil1 dan bil2 adalah SOURCE OPERAND REFERENCE, sedangkan PORTB adalah RESULT OPERAND REFERENCE. Jenis instruksi ini adalah pengolahan data atau Data Processing karena terdapat operator “-” atau substract untuk proses pengurangan. Instruksi ini merupakan instruksi 3 alamat karena terdapat 3 register.



Selanjutnya adalah contoh set instruksi yang diambil dari penggunaan bahasa Assembly pada Borland C++ untuk menampilkan karakter. Mode pengalamatan set instruksi ini adalah Register Addressing karena field alamatnya mengacu pada register yang ada di dalam software, bukan pada memori utama sehingga proses eksekusinya lebih cepat.

void writeChar(UCHAR letter, UCHAR attr) // Mencetak huruf
{
asm mov ah, 0x09; // Register AH = 9 heksadesimal
asm mov al, letter; // Register AL = hurufnya
asm mov bh, 0x00; // Register BH = 0 heksadesimal
asm mov bl, attr; // Register BL = warna huruf
asm mov ch, 0x00; // Register CH dan CL menentukan
asm mov cl, 0x01; // banyak pencetakan
asm int VIDEO_INT; // Lakukan interupsi
return;
}

void writeChar(UCHAR letter, UCHAR attr)

PENGERTIAN : WriteChar adalah sebuah fungsi yang digunakan untuk menampilkan karakter, fungsi ini mengirimkan parameter letter dan attr secara nilai. Parameter letter berisi karakter yang akan ditampilkan sedangkan parameter attr menentukan atribut karakter (warna karakter dan warna dasar).

asm mov ah, 0x09;
PENGERTIAN : menyimpan nilai 0x09 ke register AH.
Karena instruksi ini memakai software Borland C++ maka untuk memberi keterangan bahwa ini adalah bahasa Assembly maka ditambahkan keterangan asm sebelum opcode bahasa Assembly-nya.
ANALISA :
bentuk instruksi ini adalah MOV AH, 0x09;
bentuk algoritmiknya adalah AH = 0x09;
MOV adalah elemen yang merupakan OPCODE sedangkan AH adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register AH. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

asm mov al, letter;
PENGERTIAN : menyimpan isi karakter yang ingin ditampilkan ke register AL.
ANALISA :
bentuk instruksi ini adalah MOV AL, letter;
bentuk algoritmiknya adalah AL = letter;
MOV adalah elemen yang merupakan OPCODE sedangkan AL dan letter adalah SOURCE OPERAND REFERENCE. Parameter letter berisi karakter yang akan ditampilkan. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register AL. Instruksi ini adalah instruksi 2 alamat karena terdapat 2 register atau sumber.

asm mov bh, 0x00;
PENGERTIAN : menyimpan nilai 0x00 ke register BH.
ANALISA :
bentuk instruksi ini adalah MOV BH, 0x00;
bentuk algoritmiknya adalah BH = 0x00;
MOV adalah elemen yang merupakan OPCODE sedangkan BH adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register BH. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

asm mov bl, attr;
PENGERTIAN : menyimpan warna huruf yang ditampilkan ke register BL.
ANALISA :
bentuk instruksi ini adalah MOV BL, attr;
bentuk algoritmiknya adalah BL = attr;
MOV adalah elemen yang merupakan OPCODE sedangkan BL dan attr adalah SOURCE OPERAND REFERENCE. Parameter attr menentukan atribut karakter (warna karakter dan warna dasar). Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register BL. Instruksi ini adalah instruksi 2 alamat karena terdapat 2 register atau sumber.

asm mov ch, 0x00;
PENGERTIAN : menyimpan nilai 0x00 ke register CH.
ANALISA :
bentuk instruksi ini adalah MOV CH, 0x00;
bentuk algoritmiknya adalah CH = 0x00;
MOV adalah elemen yang merupakan OPCODE sedangkan CH adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register CH. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

asm mov cl, 0x01;
PENGERTIAN : menyimpan nilai 0x01 ke register CL.
ANALISA :
bentuk instruksi ini adalah MOV CL, 0x01;
bentuk algoritmiknya adalah CL = 0x01;
MOV adalah elemen yang merupakan OPCODE sedangkan CL adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan data pada register CL. Instruksi ini adalah instruksi 1 alamat karena terdapat 1 register atau sumber.

asm int VIDEO_INT;
PENGERTIAN : melakukan interupsi yang nilai interupsinya disimpan dalam konstanta VIDEO_INT
ANALISA : Int adalah elemen instruksi yang merupakan OPCODE sedangkan VIDEO_INT adalah SOURCE OPERAND REFERENCE. Jenis instruksi ini adalah penyimpanan data atau Data Storage karena terjadi penyimpanan pada alamat yang dimiliki VIDEO_INT.

return;
PENGERTIAN : fungsi untuk kembali pada awal program

Mudah-mudahan bisa bermanfaat ... :D