bahasa asembler

13
Nama : Adam Husain NPM :20071110002 Jurusan : Teknik Elektro Universitas Kebangsaan BAHASA ASEMBLER SOFTWARE FUNCTION MONITOR COMMAND Monitor command fungsi tombol dalam system BGC 8088 microenginering yang memungkinkan interaksi antara user dengan system BGC. Artinya, jika salah satu perintah dioperasikan maka system dalam BGC 8088 akan dimengerti apa yang harus dikerjakannya. Types of monitor commands 1. Aseembler command (A, I dan U) A: assemble the assembly lenguange instruction I : insert mode U: dissemble (List) 2. Program control command(G,T dan R) G: excute R: display/ modify the register content T: trace program execution 3. Memory management (C, D, E, F, M) C: compare the memory content

Upload: adam-smith

Post on 05-Jul-2015

81 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: BAHASA ASEMBLER

Nama : Adam Husain

NPM :20071110002

Jurusan : Teknik Elektro Universitas Kebangsaan

BAHASA ASEMBLER

SOFTWARE FUNCTION

MONITOR COMMAND

Monitor command fungsi tombol dalam system BGC 8088 microenginering yang

memungkinkan interaksi antara user dengan system BGC. Artinya, jika salah satu perintah

dioperasikan maka system dalam BGC 8088 akan dimengerti apa yang harus dikerjakannya.

Types of monitor commands

1. Aseembler command (A, I dan U)

A: assemble the assembly lenguange instruction

I : insert mode

U: dissemble (List)

2. Program control command(G,T dan R)

G: excute

R: display/ modify the register content

T: trace program execution

3. Memory management (C, D, E, F, M)

C: compare the memory content

D: display the memory content

E: substitute the memory content

F: Fill into memory Block

M: Move the memory content

4. Numerical treatment (B, H, J, S)

Page 2: BAHASA ASEMBLER

B: convert decimal into binary

H: calculate the sum and difference of two hexadecimal number

J: menerjemahkan bilangan decimal ke hexa decimal

S: menerjemahkan bilangan hexa decimal ke bilangan decimal

Dasar dan instruksi yang digunakan

Register merupakan suatu unit memori penyimpanan data dengan bilangan hexa

Register yang sering digunakan :

AX(gabungan AH dan AL)

BX (gabungan BH dan BL)

CX (gabungan CH dan CL)

DX (gabungan DH dan DL)

Command for memory

F : digunakan untuk mengisi data dengan panjang alamat lokasi memori sudah ditentukan yang

diisi dengan data yang Sama

Format yang digunakan : f(alamat awal), (alamat akhir), (data yang akan diisikan)

E : digunakan untuk mengisi data di lokasi memori

Format yang digunakan : e ( alamat ) , (data yang akan disikan)

D: digunakan untuk menampilkan data yang diisikan dalam lokasi memori

Format yang digunakan ; d (alamat awal) , ( alamat akhir)

Page 3: BAHASA ASEMBLER

Perintah Mov

Mov merupakan perintah dalam bahasa assembly yang digunkan untuk menyimpan data atau

mengkopikan data menuju register

Format perintah Mov

Mov [tujuan] , [asal]

reg , [reg] mengkopikan data register dengan register

contoh

Mov ax,[bx] : maksudnya adalah mengkopikan data yang ada di register BX ke register

AX

Reg , data memasukan data ke sebuah register tujuan

Contoh

Mov ax,123 : maksudnya adalah memasukan data 123 pada register AX

[Memory] , register mengkopikan data di register ke lokasi memori

Contoh

Mov [100], ax : maksudnya adalah mengkopikan isi data yang ada di register AX

ke lokasi Memori di 100 (E100)

Register , [memori] mengkopikan data di lokasi memori ke register

Contoh ax,[100] : maksudnya adalah mengkopikan isi data di lokasi memori di 100

(E100} Ke register AX

Perintah INC

Inc merupakan kependekan dari ‘increase/increment’ yang artiinya menambahkan. perintah ini

digunakan untuk menambahkan isi di register sebesar “1”

Page 4: BAHASA ASEMBLER

Contoh : inc AX menambah isi reg. di register AX sebesar 1, jika isi reg.

sebelumnya 1 Maka setelah perintah ini di eksekusi maka isi reg.

yang berada di AX Berubah menjadi 2

Perintah DEC

Dec merupakan kependekan dari ‘decrease/decrement’ yang artinya berkurang. Perintah ini

digunakan untuk mengurangi isi register sebesar “1”

Contoh : dec BX mengurangi isi reg. di register AX sebesar 1, jika isi reg.

sebelumnya 2 Maka setelah perintah ini di eksekusi maka isi reg.

yang berada di AX Berubah menjadi 1

Perintah ADD

Merupakan perintah untuk menjumlahkan isi register dengan isi register lain atau dengan nilai

yang diinginkan . Tidak seperti inc , perintah add dapat menjumlah data dengan jumlah

berapa pun dan hasil penjumlahan di simpan di register tujuan.

Format nya adalah sebagai berikut

ADD (isi register tujuan ) , (isi register asal)

Contoh : add AX,BX artinya jumlahkan isi register yang ada di AX dengan isi

register Yang ada di BX dan hasilnya disimpan di register

AX

Atau formatnya bisa juga

ADD (isi register tujuan) , (nilai data yang akan dijumlahkan)

Page 5: BAHASA ASEMBLER

Contoh : add AX,10 artinya jumlahkan isi register yang ada di AX dengan data

Sebesar 10 dan hasilnya disimpan di register AX

Perintah SUB

Merupakan perintah untuk mengurangkan isi register dengan isi register lain atau dengan nilai

yang diinginkan . Tidak seperti dec , perintah sub dapat mengurangi data dengan nilai

berapa pun dan hasil penjumlahan di simpan di register tujuan.

Format penulisan perintah sama dengan format penulisan pada perintah add hanya saja

perintahnya yang berbeda.

Contoh : sub AX,BX artinya kurangkan isi register yang ada di AX dengan isi

register Yang ada di BX dan hasilnya disimpan di register

AX

sub AX,10 artinya kurangkan isi register yang ada di AX dengan data

Sebesar 10 dan hasilnya disimpan di register AX

Perintah LOOP

Merupakan perintah untuk mengulangi instruksi atau perintah jumlah pengulangan sebesar isi

register CX yang merupakan acuan dari perintah loop. Pada saat di eksekusi isi register CX akan

berkurang 1 terus menerus hingga isi register CX sama dengan 0 baru kemudian pengulangan

perintah berhenti.

Contoh :

Mov ax,0

Page 6: BAHASA ASEMBLER

Mov bx,10

mov cx, 10

++ inc ax merupakan area pengulangan dimana perintah

Inc bx tersebut akan diulangi sebesar cx dengan “++” merupakan

loop ++ alamat yang akan diulang.

Perintah jump

Sesuai dengan namanya perintah ini digunakan untuk melompat ke alamat suatu perintah. Ada berbagai

jenis perintah jump

Jmp : merupakan perintah jump tanpa sarat

JNE : “jump non equal” merupakan perintah jump dimana syarat untuk jump nya harus

Memiliki parameter nya berbeda setelah melalui perintah ‘CMP’

JE : “jump Equal” merupakan kebalikan dari ‘JNE’ , jikalau JNE parameter pembandingnya berbeda

Setelah melalui perintah CMP maka pada perintah JE parameter pembandingnya harus sama

Setelah melalui perintah CMP lalu kemudian bisa lompat ke alamat yang dituju.

JZ : “jump Zero” merupakan perintah jump dimana untuk bisa melompat parameter sebelumnya

Harus memiliki nilai sama dengan ‘nol’ tanpa harus melalui perintah ‘CMP’

JNZ : “jump non zero” merupakan kebalikan dari perintah JZ, jadi parameter sebelumnya harus

Memiliki nilai bukan sama dengan ‘nol’

*** jika di asumsikan perintah JNE dan JE hampir sama dengan perintah ‘IF’ dalam bahasa pascal

Dengan bentuk flowchart:

IF …=/ =...

Page 7: BAHASA ASEMBLER

Tidak

Ya

Perintah untuk I/O

Daftar I/O device pada BGC 8088 adalah sebagai berikut

Address range I/O device

FF00 –FF0F 8254

FF10 –FF1F 8255

FF20 –FF2F 8259

FF30 –FF3F Printer

FF40 –FF4F LCD

FF50 –FF5F 8279

FF60 –FF6F 8250

FF70 –FF7F Status port

Untuk menuliskan pada device (sebagai output): OUT DX,AL

Untuk membaca dari device (sebagai input): IN AL,DX

Sebagai contoh pada status port:

MOV DX,FF70 FF70 sebagai I/O device

MOV AL,FE FE sebagai status port yang akan dinyalakan

OUT DX,AL

Page 8: BAHASA ASEMBLER

Susunan lampu pada status port

Dengan aktif pada logic nol maka :

Speaker print insert caps lock

1 1 1 0

F : E ( bilangan heksa )

Dengan demikian yang berlogic nol adalah yang di aktifkan sedangkan yang berlogic satu yang dipadamkan

*perlu dicatat bahwa byalanya lampu bisa dilhat oleh mata bila ada delay

Program untuk delay diantaranya adalah;

Mov CX,FFFF

**LOOP **

Dengan demikian delay bisa di realisasikan dengan lamanya proses pada suatu perintah dengan loop dialamat loop itu sendiri maka berarti melakukan pengulangan selama FFFF (proses selama FFFF kali) sehingga utnuk membaca perintah selanjutnya tertunda dikarenakan perintah loop ini harus diselesaikan terlebih dahulu.

Status register

Status register merupakan register pada BGC yang berguna untuk menyimpan kondisi yang terjadi apa bila perintah di eksekusi yang di tuliskan dengan “1” sebagai set dan “0” sebagai reset. Kondisi ini mempengaruhi perintah yang akan dieksekusi.

Untuk menggunakan status register gunakan perintah ‘RF’ atau ‘RFG’

Table status port

Flag Set Reset kode untuk mengeset/reset kondisi flag (RF …)

Carry flag CY – carry yield NC – no carry 1

Parity flag PE – parity even PO – parity odd 4

Auxiliary flag AC – auxiliary carry NA – no auxiliary 10

Page 9: BAHASA ASEMBLER

Zero flag ZR – zero NZ – not zero 40

Sign flag NG – negative PL - positive 80

Overflow flag OV – overflow NV – no overflow 800

Direction flag DN -down UP - up 400

Interrupt flag EI DI 200

Dengan menggunakan perintah seperti RF 1 berarti mengubah carry flag kedalam keadaan set atau reset

Jika ingin mengubah keadaan lebih dari 1 flag bisa juga digunakan dengan perintah RF dengan menjumlah kan kode dari flag yang akan diubah .

Perintah aritmetik lain

Selain ADD, INC, SUB, DEC adapun

ADC (add with carry)

SBB (subtract wih carry)

MUL (multiply)

DIV (divide)

Perintah ADC

Perintah ADC digunakan dengan cara yang sama seperti perintah ADD, yaitu

ADC tujuan ,Asal

Perbedaanya dengan ADD terletak pada proses penjumlahannya jika ADD menjumlahkan hanya isi tujuan dan isi asal jika pada perintah ADC penjumlahannya ditambah dengan carry (carry flag).

Jika pada penjumlahan sebelumnya meninggalkan sisa sehingga meninggalkan carry=1 maka dengan pada penjumlahan selanjutnya dengan perintah ADC carry tersebut dijumlahkan dengan perintah dasar (tujuan = tujuan + asal + carry)

Contoh :

MOV AX,1234 AX= 1234 ; CF = 0

MOV BX,9ABC BX = 9ABC ; CF = 0

MOV CX, 5678 CX = 5678 ; CF =0

Page 10: BAHASA ASEMBLER

MOV DX, DEF0 DX = DEF0 ; CF = 0

ADD CX,DX CX = CX + DX = 3568 ; CF = 1

ADC AX,BX AX = AX + BX + CF = ACF1

Perintah SBB

Perintah SBB (subtract with carry) perintah ini hamper sama dengan ADC namun pada perintah ini operasi yang digunakan adalah pengurangan

SBB tujuan , asal

Perintah MUL

Perintah MUL digunakan untuk operasi perkalian, berbeda dengan operasi sebelumnya perintah ini hanya menjadikan register AX sebagai acuan untuk dikalikan dan hasil yang disimpan selalu di register AX namun bila hasil akhirnya lebih dari 4 digit pada register AX misalkan 6 digit maka sisa 2 digit lagi disimpan di register DX sehingga perintahnya dapat ditulis sebagai berikut:

MUL (reg. asal)

Contoh :

MOV AX,5

MOV BX, 10

MUL BX Berarti mengalikan BX dengan AX sehingga nilai AX

Sekarang adalah 50 (heksa)

Perintah DIV

Perintah ini digunakan untuk proses aritmetik pembagian , sama halnya dengan MUL perintah ini juga menjadikan register AX sebagai acuan untuk proses pembagian dan hasil akhirnya disimpan di register AX dan sisa dari pembagian di simpan di register DX. Perintahnya bisa ditulis sebagai berikut:

DIV (reg. Asal)

Contoh :

MOV AX, 2 ; AX = 2 DX=0

MOV BX,9 ; AX=2 DX =0

DIV BX ; AX = BX/AX = 4 DX = 1