Daftar Perintah Dasar Pada Bahasa Assembly

Daftar Perintah Dasar Pada Bahasa Assembly


Daftar Perintah Dasar Pada Bahasa Assembly >> Untuk kalian yang sedang mencoba untuk Belajar Bahasa Pemprograman, pasti sedikit bertanya tanya sebenarnya apa Fungsi setiap Perintah pada Bahasa Assembly ? karena itu untuk artikel kali ini saya akan membagikan Daftar Perintah Dasar Pada Bahasa Assembly. Ada beberapa Perintah atau Fungsi Kode Bahasa Assembly yang paling mudah, Misal "MOV" Fungsi perintah ini sebenarnya sama seperti namanya yakni untuk Memindahkan Data dari suatu tempat ke tempat lain (Dalam Memory IC atau Chip).

https://www.solderperak.xyz/2018/04/daftar-perintah-dasar-pada-bahasa.html
Bahasa Assembly

Saya biasanya mengunakan Program Assembly ini untuk membuat Running Text atau Teks Berjalan, baik ti berjalan dari sebelah kiri atau berlajan dari sebelah kanan, atau berkedip secara bersamaan dan mati secara bersamaan. Saya biasanya mengunakan Bahasa Pemprograman Assembly ini, Dan saya biasanya mengunakan Sistem Minimum dan Downloader yang saya buat sendiri, waktu saat saya masih SMK saya mulai belajar membuat Sistem Minimum dan Downloader walaupu waktu saat itu saya masih banyak di bantu Oleh Guru dan teman teman semasa SMK saya hehe.. 


Dalam Perogram Bahasa Assembly Terdapat 2 Jenis Yang Kita Tulis Dalam Program : 


1. Assembly Directive (yaitu merupakan kode yang menjadi arahan bagi assembler/compiler untuk menata program)
2. Instruksi (yaitu kode yang harus dieksekusi oleh CPU mikrokontroler dengan melakukan operasi tertentu sesuai dengan daftar yang sudah tertanam dalam CPU) 
Daftar Assembly Directive 
Assembly Directive                                    Keterangan

EQU                                Pendefinisian konstanta
DB                                        Pendefinisian data dengan ukuran satuan 1 byte
DW                                        Pendefinisian data dengan ukuran satuan 1 word
DBIT                                   Pendefinisian data dengan ukuran satuan 1 bit
DS                                        Pemesanan tempat penyimpanan data di RAM
ORG                                Inisialisasi alamat mulai program
END                                Penanda akhir program
CSEG                                Penanda penempatan di code segment
XSEG                                Penanda penempatan di external data segment
DSEG                                Penanda penempatan di internal direct data segment
ISEG                                Penanda penempatan di internal indirect data segment
BSEG                                Penanda penempatan di bit data segment
CODE                                Penanda mulai pendefinisian program
XDATA                                Pendefinisian external data
DATA                                Pendefinisian internal direct data
IDATA                                Pendefinisian internal indirect data
BIT                                        Pendefinisian data bit
#INCLUDE                        Mengikutsertakan file program lain

Baca Juga :  Skematik Rangkaian Power Amplifier TDA2003
                    Rangkaian Amplifier OCL 150W

Daftar Instruksi


Instruksi                                               Keterangan Singkatan'

ACALL                                Absolute Call
ADD                                Add
ADDC                                Add with Carry
AJMP                                Absolute Jump
ANL                                AND Logic
CJNE                                Compare and Jump if Not Equal
CLR                                        Clear
CPL                                       Complement
DA                                        Decimal Adjust
DEC                                Decrement
DIV                                        Divide
DJNZ                                Decrement and Jump if Not Zero
INC                                        Increment
JB                                        Jump if Bit Set
JBC                                        Jump if Bit Set and Clear Bit
JC                                        Jump if Carry Set
JMP                                        Jump to Address
JNB                                        Jump if Not Bit Set
JNC                                        Jump if Carry Not Set
JNZ                                        Jump if Accumulator Not Zero
JZ                                        Jump if Accumulator Zero
LCALL                                Long Call
LJMP                                Long Jump
MOV                                Move from Memory
MOVC                                Move from Code Memory
MOVX                                Move from Extended Memory
MUL                                Multiply
NOP                                No Operation
ORL                               OR Logic
POP Pop                                Value From Stack
PUSH                                Push Value Onto Stack
RET                                        Return From Subroutine
RETI                                Return From Interrupt
RL                                        Rotate Left
RLC                                        Rotate Left through Carry
RR                                        Rotate Right
RRC                                Rotate Right through Carry
SETB                                Set Bit
SJMP                                Short Jump
SUBB                                Subtract With Borrow
SWAP                                Swap Nibbles
XCH                                Exchange Bytes
XCHD                                Exchange Digits
XRL                                Exclusive OR Logic

                 : Cara Membuat Pre-Amp Mic

1. Acall (absolute call)


Instruksi acall digunakan untuk memanggil sub rutin program
Contoh :
Start:
Acall tunda ; panggil procedure penundaan waktu
….
Tunda: ; label tunda
Mov r7,#0ffh ; isikan register 7 dengan data 0ffh(255

2. Add (add immediate data)


Instruksi ini akan menambah 8 bit data langsung ke dalam
Isi akumulator dan menyimpan hasilnya pada akumulator.
Contoh : Add a, #data
Add a, #@r1 ; add indirect address
Add a, r6 ; add register
Add a, 30h ; add memori

3. Addc (add carry plus immediate data to accumulator)


Instruksi ini akan menambahkan isi carry flag (0 atau 1) ke dalam isi akumulator. Data langsung 8 bit ditambahkan ke akumulator
Contoh: Addc a,#012h
Addc a, @r1 ; add carry plues indirect address

4. Ajmp (absolute jump)


Ajmp adalah perintah jump mutlak. Jump dalam 2 kb dimulai dari alamat yang mengikuti perintah ajmp. Ini mentransfer kendali program ke lokasi dimana alamat dikalkulasi dengan cara yang sama dengan perintah acall. Konter program ditambahkan dua kali dimana perintah ajmp adalah perintah 2-byte. Konter program di-load dengan a10 – a0 11 bits, untuk membentuk alamat tujuan 16-bit.

5. Anl (logical and memori ke akumulator)


Instruksi ini mengand-kan isi alamat data dengan isi akumulator
Contoh : Anl a,#0001000b ;data acumulator akan dikalikan dengan 00010000 biner
Anl a, 57h,#01h; logical and immediate data ke memori

6. Cjne (compare indirect address to immediate data)


Instruksi ini akan membandingkan data langsung dengan lokasi memori yang dialamati oleh register r atau akumulator a. Apabila tidak sama maka instruksi akan menuju ke alamat kode.
Format : Cjne r,#data,alamat kode
Contoh:
Cjne r7,#001h,command0
Mov a,stepcontrol
Ajmp command1

7. Clr (clear accumulator)


Instruksi clr akan mereset data akumulator menjadi 00h.
Format : Clr a


8. Cpl (complement accumulator)


Instruksi cpl akan mengkomplemen isi akumulator
Contoh : Cpl a
Cpl c ; mengkomplemen isi carry flag

9. Da (decimal adjust accumulator)


Instruksi da akan mengatur isi akumulator ke padanan bcd, steleah penambahan dua angka bcd.


10. Dec (decrement indirect address)


Instruksi dec akan mengurangi isi lokasi memori yang ditujukan oleh register r dengan 1, dan hasilnya disimpan pada lokasi tersebut.
Contoh: Dec 40h
Dec r7 ; decrement register

11. Div (divide accumulator by b)


Instruksi div akan membagi isi akumulator dengan isi register b. Akumulator berisi hasil bagi, register b berisi sisa pembagian.
Contoh : Mov b,#1h
Div ab

12. Djnz (decrement register and jump id not zero)


Instruksi djnz akan mengurangi nilai register dengan 1 dan jika hasilnya sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan menuju ke alamat kode.
Format : Djnz rr,alamat kode

13. Inc (increment indirect address)


Instruksi inci akan menambahkan isi memori dengan 1 dan menyimpannya pada alamat tersebut.
Contoh: Inc a
Inc r7 ; increment register


14. Jb (jump if bit is set)


Instruksi ini akan membaca data
Per satu bit, jika data tersebut adalah 1 maka akan menuju ke alamat kode dan jika 0 tidak akan menuju ke alamat kode.
Format : Jb alamat bit,alamat kode

15. Jbc (jump if bit set and clear bit)


Bit jbc, perintah rel menguji yang terspesifikasikan secara bit. Jika bit di-set, maka jump dilakukan ke alamat relatif dan yang terspesifikasi secara bit di dalam perintah dibersihkan. Segmen program berikut menguji bit yang kurang signifikan (lsb: Least significant byte), dan jika diketemukan bahwa ia telah di-set, program melompat ke read lokasi. Perintah tersebut juga membersihkan lsb dari akumulator.

16. Jc (jump if carry is set)


Instruksi jc akan menguji isi carry flag. Jika berisi 1, eksekusi menuju ke alamat kode, jika berisi 0, instruksi selanjutnya yang akan dieksekusi.

17. Jmp (jump to sum of accumulator and data pointer)


Instruksi jmp untuk memerintahkan loncat kesuato alamat kode tertentu.
Format : Jmp alamat kode.
Contoh :
Loop:

Rl a ; geser data akumulator ke kiri
Acall long_delay ; panggil procedure penundaan waktu
Jmp loop ; loncat ke procedure loop

18. Jnb (jump if bit is not set)


Instruksi jnb akan membaca data per satu bit, jika data tersebut adalah 0 maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat kode.
Format : Jnb alamat bit,alamat kode

19. Jnc (jump if carry not set)


Perintah jnc menguji bit carry, dan jika tidak di-set, maka sebuah lompatan akan dilakukan ke alamat relatif yang telah ditentukan. Sebagai contoh, perintah berikut akan menyebabkan loop tanpa henti, karena carry dibersihkan oleh perintah clr c dan jnc akan selalu menyebabkan lompatan ke lokasi yang sama yang berlabel ‘loop’.

20. Jnz ( jump if accumulator not zero )


Jnz adalah mnemonik untuk instruksi jump if not zero (lompat jika tidak nol). Dalam hal ini suatu lompatan akan terjadi bilamana bendera nol dalam keadaan “clear”, dan tidak akan terjadi lompatan bilamana bendera nol tersebut dalam keadaan set. Andaikan bahwa jnz 7800h disimpan pada lokasi 2100h. Jika z=0, instruksi berikutnya akan berasal dari lokasi 7800h: Dan bilamana z=1, program akan turun ke instruksi urutan berikutnya pada lokasi 2101h.

21. Jz ( jump if accumulator is zero )


Perintah ini menguji konten-konten akumulator. Jika bukan nol, maka lompatan dilakukan ke alamat relatif yang ditentukan dalam perintah.


22. Lcall ( long call )


Lcall memungkinkan panggilan ke subrutin yang berlokasi dimanapun dalam memori program 64k. Operasi lcall berjalan seperti berikut:
(i) menambahkan ke dalam konter program sebanyak 3, karena perintahnya adalah perintah 3-byte.
(ii) menambahkan penunjuk stack sebanyak 1.
(iii) menyimpan byte yang lebih rendah dari konter program ke dalam stack.
(iv) menambahkan penunjuk stack.
(v) menyimpan byte yang lebih tinggi dari program ke dalam stack.
(vi) me-load konter program dengan alamat tujuan 16-bit.
Sebagai contoh, jika penunjuk stack dimulai pada 54h, maka perintah lcall 0400h di lokasi 0100h dalam memori program akan menghasilkan nilai sp, pc dan stack,.

23. Ljmp ( long jump )


Long jump memungkinkan lompatan tak bersyarat kemana saja dalam lingkup ruang memori program 64k. Lcall adalah perintah 3-byte. Alamat tujuan 16-bit ditentukan secara langsung dalam perintah tersebut. Alamat tujuan ini di-load ke dalam konter program oleh perintah ljmp. Sebagai contoh, untuk melompat ke lokasi 0200h, kita dapat menulis “ljmp 0200h”.

24. Mov ( move from memory )


Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain.
Contoh :
Mov a,#40h
Mov @ro,a
Mov a, p3
Mov c, p1.0
Mov dptr, #20h
Movc a, @a+dptr ; pindahkan code memory offset dari data pointer ke a
Movx @dptr, a ; pindahkan akumulator ke memoeri eksterlah yang dialamati oleh
; data pointer

25. Movc ( move from codec memory )


Fungsi : Mengisikan (move) byte kode (code) atau byte konstanta (constant). Instruksi movc akan mengisi accumulator dengan byte kode atau konstanta dari program memory. Alamat byte tersebut adalah hasil penjumlahan unsigned 8 bit pada accumulator dan 16 bit register basis yang dapat berupa data pointer atau program counter. Instruksi ini tidak mempengaruhi flag apapun juga.

26. Movx (move accumulator to external memory addressed by data pointer)

Instruksi pop akan memindahkan isi akumulator ke memori data eksternal yang alamatnya ditunjukkan oleh isi data pointer.
Contoh: Movx @dptr,a
Movx @r0,a

27. Mul ( multiply )

Fungsi : Perkalian (multiply). Mul ab akan mengalikan unsigned 8 bit integer pada accumulator dan register b. Byte rendah (low order) dari hasil perkalian akan disimpan dalam accumulator sedangkan byte tinggi (high order) akan disimpan dalam register b. Jika hasil perkalian lebih besar dari 255 (0ffh), overflow flag akan bernilai ‘1’. Jika hasil perkalian lebih kecil atau sama dengan 255, overflow flag akan bernilai ‘0’. Carry flag akan selalu
Dikosongkan.

28. Nop ( no operation )


Fungsi : Tidak ada (no) operasi. Eksekusi program akan dilanjutkan ke instruksi berikutnya. Selain pc, instruksi ini tidak mempengaruhi register atau flag apapun juga.


29. Orl (logical or immediate data to accumulator)


Instruksi orl sebagai instruksi gerbang logika or yang akan menjumlahkan accumulator terhadap nilai yang ditentukan.
Format : Orl a,#data
Contoh : Orl a,#0001000b
Ini berarti data acumulator akan dijumlahkan dengan 00010000 biner
Jika a bernilai 11100001 maka hasilnya adalah 11110001


30. Pop (pop stack to memory)


Instruksi pop akan menempatkan byte yang ditunjukkan oleh stack pointer ke suatu alamat data.
Contoh: Pop psw
Pop 03h

31. Push (push memory onto stack)


Instruksi ini akan menaikkan stack pointer kemudian menyimpan isinya ke suatu alamat data pada lokasi yang ditunuk oleh stack pointer.
Contoh: Push 30h

32. Ret (return from subroutine)


Intruksi untuk kembali dari suatu subrutin program ke alamat terakhir subrutin tersebut di panggil.


33. Reti ( return from interrupt )


Fungsi : Kembali (return) dari interrupt. Reti akan mengambil nilai byte tinggi dan rendah dari pc dari stack dan mengembalikan kondisi logika interrupt agar dapat menerima interrupt
Lain dengan prioritas yang sama dengan prioritas interrupt yang baru saja diproses. Stack pointer akan dikurangi dengan 2. Instruksi ini tidak mempengaruhi flag apapun juga. Nilai psw tidak akan dikembalikan secara otomatis ke kondisi sebelum interrupt. Eksekusi program akan dilanjutkan pada alamat yang diambil tersebut. Umumnya alamat tersebut adalah alamat setelah lokasi dimana terjadi interrupt. Jika interrupt dengan prioritas sama atau lebih rendah tertunda saat reti dieksekusi, maka satu instruksi lagi akan dieksekusi sebelum interrupt yang tertunda tersebut diproses.

34. Rl (rotate accumulator left)


Instruksi rl akan memutar setiap bit dalam akumulator satu posisi ke kiri.
Contoh : Rl a
Rlc a ; rotasi akumulator dan carry flag ke kiri
Rr a ; rotasi akumulator ke kanan


35. Rlc ( rotate left through carry )


Fungsi : Memutar (rotate) accumulator ke kiri (left) melalui carry flag. Kedelapan bit accumulator dan carry flag akan diputar satu bit ke kiri secara bersama-sama. Bit 7 akan dirotasi ke carry flag, nilai carry flag akan berpindah ke posisi bit 0. Instruksi ini tidak mempengaruhi flag lain.

36. Rr ( rotate right )


Fungsi : Memutar (rotate) accumulator ke kanan (right). Kedelapan bit accumulator akan diputar satu bit ke kanan. Bit 0 akan dirotasi ke posisi bit 7. Instruksi ini tidak mempengaruhi flag apapun juga.

37. Rrc ( rotate right through carry )


Fungsi : Memutar (rotate) accumulator ke kanan (right) melalui carry flag. Kedelapan bit accumulator dan carry flag akan diputar satu bit ke kanan secara bersama-sama. Bit 0 akan dirotasi ke carry flag, nilai carry flag akan berpindah ke posisi bit 7. Instruksi ini tidak mempengaruhi flag lain.


38. Setb (set carry flag)


Instruksi setb akan menset carry flag
Contoh : Setb c

39. Sjmp (short jump)


Sebuah short jump mentransfer kendali ke alamat tujuan dalam 127 bytes yang mengikuti dan 128 yang mengawali perintah sjmp. Alamat tujuannya ditentukan sebagai sebuat alamat relative 8-bit. Ini adalah jump tidak bersyarat. Perintah sjmp menambahkan konter program sebanyak 2 dan menambahkan alamat relatif ke dalamnya untuk mendapatkan alamat tujuan. Alamat relatif tersebut ditentukan dalam perintah sebagai ‘sjmp rel’.

40. Subb ( subtract with borrow )


Fungsi : Pengurangan (subtract) dengan peminjaman (borrow). Subb mengurangi variabel yang tertera pada operand kedua dan carry flag sekaligus dari accumulator dan menyimpan hasilnya pada accumulator. Subb akan memberi nilai ‘1’ pada carry flag jika peminjaman ke bit 7 dibutuhkan dan mengosongkan c jika tidak dibutuhkan peminjaman. Jika c bernilai ‘1’ sebelum mengeksekusi subb, hal ini menandakan bahwa terjadi peminjaman pada proses pengurangan sebelumnya, sehingga carry flag dan source byte akan dikurangkan dari accumulator secara bersama-sama. Ac akan bernilai ‘1’ jika peminjaman ke bit 3 dibutuhkan dan mengosongkan ac jika tidak dibutuhkan peminjaman. Ov akan bernilai ‘1’ jika ada peminjaman ke bit 6 namun tidak ke bit 7 atau ada peminjaman ke bit 7 namun tidak ke bit 6. Saat mengurangi signed integer, ov menandakan adanya angka negative sebagai hasil dari pengurangan angka negatif dari angka positif atau adanya angka positif sebagai hasil dari pengurangan angka positif dari
Angka negative. Addressing mode yang dapat digunakan adalah: Register, direct, register
Indirect, atau immediate data.


41. Swap ( swap nibbles )


Fungsi : Menukar (swap) upper nibble dan lower nibble dalam accumulator. Swap a akan menukar nibble (4 bit) tinggi dan nibble rendah dalam accumulator. Operasi ini dapat dianggap sebagai rotasi 4 bit dengan rr atau rl. Instruksi ini tidak mempengaruhi flag apapun juga.

42. Xch ( exchange bytes )


Fungsi : Menukar (exchange) accumulator dengan variabel byte. Xch akan mengisi accumulator dengan variabel yang tertera pada operand kedua dan pada saat yang sama juga akan mengisikan nilai accumulator ke dalam variabel tersebut. Addressing mode yang dapat digunakan adalah: Register, direct, atau register indirect.


43. Xchd ( exchange digits )


Fungsi : Menukar (exchange) digit. Xchd menukar nibble rendah dari accumulator, yang umumnya mewakili angka heksadesimal atau bcd, dengan nibble rendah dari internal data memory yang diakses secara indirect. Nibble tinggi kedua register tidak akan terpengaruh. Instruksi ini tidak mempengaruhi flag apapun juga.


44. Xrl ( exclusive or logic )


Fungsi : Logika exclusive or untuk variabel byte xrl akan melakukan operasi bitwise logika exclusive or antara kedua variabel yang dinyatakan. Hasilnya akan disimpan pada destination byte. Instruksi ini tidak mempengaruhi flag apapun juga. Kedua operand mampu menggunakan enam kombinasi addressing mode. Saat destination byte adalah accumulator, source byte dapat berupa register, direct, register indirect, atau immediate data. Saat destination byte berupa direct address, source byte dapat berupa accumulator atau immediate data.

Jika kalian ingin mencoba membuat suatu Program dengan Bahasa Assembly pastikan mengetikannya terlebih dahulu di notepad, dan setelah mengetikannya di notepad kalian bisa menggubah format filenya menjadi Hexa bukan Text. Kalian bisa mengecek apakah suatu Rangkaian yang kalian buat dan Program yang kalian buat berljan dengan lancar dengan melakukan Simulasi terlebih dahulu, Kalian bisa mengunakan Aplikasi Protesius untuk melakukan simulasi pada suatu rangkaian dan Program yang kalian buat.

Saya rasa cukup pembahasa kali ini tentang Daftar Perintah Dasar Bahasa Assembly ini, jika masih ada yang ingin di tanyakan silakan langsung bertanya melalui kolom Komentar. Terimakasih untuk kalian yang sudah menyempatkan waktu untuk mampir, Mohon maaf jika ada kesalahan yang di sengaja atau tidak disengaja, Sekali lagi terimakasih...

0 Response to "Daftar Perintah Dasar Pada Bahasa Assembly"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel