Set-Set Instruksi MCS-51 (Pendahuluan) 3 contoh instruksi dalam Asembler : CPL a Mov a, 40h Mov 41h,#30h ;------ CPL a ; komplemenkan isi reg. A, kodenya F4h Mov a, 40h ; isi reg. A dg isi memorilokasi 40h,kodenya E5h 40h Mov 41h, #30h ; isi memori lokasi 41h dg konstanta 30h, kodenya 75h 41h 30h ;------- CPL, Mov dst disebut mnemonic, kodenya disebut opcode (operation code) dan bisa diikuti atau tidak oleh satu atau dua operand Opcode menentukan operasi yang akan dilakukan, sedang operand menentukan variabel mana yang akan terlibat dlm operasi tsb, data apa yg digunakan, atau instruksi apa yang dilakukan berikutnya Format penulisan bilangan : 22 ; bil. Desimal 22, 22h ; bil. Hexa 22 0Afh ; bil. Afh (tambahkan 0 utk angka awal A s/d F), 01010b ; bil. Biner 01010 - Huruf besar atau kecil adalah sama
Set-Set Instruksi MCS-51 (Ragam Pengalamatan) Pengalamatan Register Pengalamatan Langsung Pengalamatan tidak Langsung Pengalamatan Segera Pengalamatan Relatif Pengalamatan Absolut 11 bit Pengalamatan Absolut 16 bit Pengalamatan berindek
Ragam Pengalamatan (Pengalamatan Register) Melibatkan reg. R0 s/d R7, bentuk instruksi : ADD, a, R7 ; reg. a diisi dg isi a mula-mula ditambah isi dari reg. R7, ; atau ditulis a=a+R7, kode mesinnya 2Fh = 00101111b Adalah 00101111b, 5 bit atas, yaitu 00101 menunjukkan instruksi dan 3 bit terakhir 111 menunjukkan reg. mana yg dipilih, 111b utk. Reg. R7, 110b utk. Reg. R6 dst hingga 000b utk. Reg. R0
Ragam Pengalamatan (Pengalamatan Langsung) Melibatkan reg., port dan akumulator A (tdk dapat mengakses memori dari luar chip). Contoh : Mov P1, a ; port P1 diisi dg data dari register a Mov 040h, a ; memori dg lokasi 40h diisi dg data di register a Mov b, P2 ; register b diisi dg data dari port P2 Add a, 40h ; a=a+ (data di lokasi memori 40h)
Ragam Pengalamatan (Pengalamatan Tidak Langsung) Pengalamatan ini ditandai dg tanda @, artinya di situ terdapat data alamat yg harus dibaca datanya lebih dahulu, Contoh : Mov a,@R1 Pertama baca isi reg. R1, misalnya isinya 20h, maka perintah diatas adalah : isi a dg data yg berada di lokasi 20h
Ragam Pengalamatan (Pengalamatan Segera) Pengalamatan ini ditandai dg tanda #, Contoh : Mov a,#34 ; isi a dg 34 desimal Mov a, #34h ; isi a dg 34 hexa Mov P1, #01010101b ; isi P1 dg 01010101 biner Add a, #0Feh ; a=a+0Feh
Ragam Pengalamatan (Pengalamatan Relatif) Pengalamatan ini, ada pada instruksi sjmp (sort jump). Karena besar langkah lompat relatif (dari tempat semula), hanya 8 bit (256 langkah), maka sjmp hanya dapat lompat ke depan sejauh +127langkah (lokasi memori) atau mundur -128 langkah. Sehingga perlu diperhatikan jarak relatifnya, jangan sampai berada di luar jangkauan.
Ragam Pengalamatan (Pengalamatan Absolut 11 bit) Pengalamatan ini, ada pada instruksi acall dan ajmp. Opcode terdiri 2 byte, byte pertama adalah gabungan antara alamat yg dituju dg opcode (00001b), byte kedua adalah alamat. Contoh : 11100001 b (111A10-A8, 00001b opcode) 01010101 b (A7-A0) Adalah lompat ke lokasi memori dg alamat 11101010101b (0755h), sedangkan opcode-nya E1h 55h.
Ragam Pengalamatan (Pengalamatan Absolut 16 bit) Pengalamatan ini, ada pada instruksi 1call dan 1jmp. Pada instruksi ini, program akan menuju alamat tertentu yang absolut hingga 16 bit (64 K)
Ragam Pengalamatan (Pengalamatan berindek) Pengalamatan ini, menggunakan reg. 16 bit program counter (PC) atau data pointer (DPTR) sebagai tempat informasi alamat, untuk mengakses hingga 64 K lokasi memori. Contoh : Movc a, @a+DPTR Movc a, @a+PC Movx a, @DPTR Movc @DPTR, a Baris pertama : isi reg a dg data dilokasi memori dg alamat : a+isi dari DPTR. Bila isi DPTR=1234h, dan isi a semula adalah 12h, maka memori yg dituju adalah 1234h+12h=1246h, selanjutnya isi data di lokasi 1246h dicopykan ke reg. a
Ragam Pengalamatan (Pengalamatan berindek) Utk baris kedua, hanya disini digunakan PC. Baris ketiga : copy data dilokasi memori yg ditunjukkan DPTR ke reg. a, baris keempat adalah kebalikan dari baris ketiga