Selasa, 30 September 2014

Spesifikasi Perangkat Keras 8086/8088



Spesifikasi Perangkat Keras 8086/8088

Pin-out dan Fungsi Pin.

 Secara virtual tak ada perbedaan antara mikroprosesor 8086 dan 8088-keduanya terkemas dalam dual in-line package (DIP) 40-pin. Mikroprosesor 8086 merupakan mikroprosesor 16-bit dengan bus data 16-bit, sementara mikroprosesor 8088 merupakan mikroprosesor 16-bit dengan bus data 8-bit.
Bagaimanapun terdapat perbedaan kecil antara keduanya, yakni pada sinyal kontrol. 8086 memiliki pin M/IO, dan 8088 memiliki pin IO/M. Perbedaan lainnya adalah pada pin 34 chip 8088 terdapat pin SSO sementara pada chip 8086 terdapat pin BHE/S7.
Baik 8086 maupun 8088, keduanya membutuhkan catu daya sebesar +5,0 volt dengan toleransi sebesar 10 persen. 8086 menggunakan arus catu maksimum 360 mA, sementara 8088 menggunakan arus catu maksimum 340 mA.
Mikroprosesor 8086 dan 8088 akan kompatibel TTL jika kekebalan terhadap noise disesuaikan menjadi 350 mV dari nilai 400 mV yang biasa.
https://lh3.googleusercontent.com/-0-dL1WONVFM/TXNZW3ssphI/AAAAAAAAAA4/2Zsw9q26814/s320/8088.jpg

Hubungan Pin8086 dan 8088

AD7-AD0 = Jalur bus alamat/data 8088 yang di-multipleks pada 8088 dan berisi 8-bit LSB dari alamat memory atau nomor port I/O. Pin-pin ini berada pada status impedansi tinggi selama hold acknowledge.

A15-A8 =Bus alamat 8088 menyediakan bit-bit alamat memory paruh atas MSB selama siklus bus.

A19-A16 =Bit-bit alamat status di-multipleks untuk memberi sinyal (S6-S3) alamat A19-A16 dan juga bit-bit status S6-S3. Status impedansi tinggi selama hold acknowledge.

RD =Jika sinyal logika 0 bus data bisa menerima data dari memory atau alat I/O.

READY =Input ini dikendalikan untuk mrnyisipkan status tunggu ke timing prosesor.

INTR =Interrupt request digunakan untuk meminta interupt perangkat keras.

TEST =Pin input yang dites oleh instruksi WAIT.

NMI =Input non-maskable interrupt sama dengan INTR kecuali NMI tidak memeriksa bit flag IF logika 1.

RESET =Input mereset mikroprosesor saat logika 1.

CLK =Pin clock menyediakan sinyal timing dasar ke mikroprosesor.

Vcc =Input catu daya menyediakan sinyal +5,0 volt toleransi 10 persen ke mikroprosesor.

GND = Hubungan ground jalur kembali catu daya.

MN/MX =Pin mode minimum atau maksimum.

BHE/S7 =Pin bus high enable pada 8086 untuk enable data MSB (D15-D8).

Pin-pin Mode Minimum.
Operasi mode minimum 8086/8088 didapat dengan menghubungkan pin MN/MX langsung ke +5,0 volt. Jangan hubungkan pin ini ke +5,0 volt melalui register pull-up karena tidak akan berfungsi dengan benar.

IO/M =Pin IO/M (8088) atau pin M/IO (8086) akan memilih memory (M/IO) atau I/O.

WR =Jalur write merupakan strobe yang menunjukkan bahwa 8086/8088 sedang mengeluarkan data ke memory atau I/O.

INTA =Sinyal interrupt acknowledge merupakan tanggapan terhadap pin INTR.

ALE =Address latch enable menunjukkan bahwa bus alamat/data 8086/8088berisi informasi alamat.

DT/R =Sinyal data transmit/recive.

DEN =Data bus enable mengaktifkan buffer bus data eksternal.

HOLD =Input hold meminta direct memory access (DMA).

HLDA =Hold acknowledge menunjukkan bahwa 8086/8088 memasuki status hold.

SS0 =Jalur SS0 ekuivalen dengan pin S0 pada operasi mode maksimum. Sinyal ini digabungkan dengan IO/M dan DT/R untuk mendekode fungsi siklus bus saat itu.

Pin-pin Mode Maksimum.
Untuk mencapai mode maksimum untuk penggunaan dengan co-processor external, hubungkan pin MN/MX ke ground.

S0, S1, dan S0
= Bit-bit status ini menunjukkan fungsi siklus bus saat itu. Sinyal-sinyal ini biasanya didekode oleh bus controller 8288.

RO/GT1 =Pin-pin request/grant ini meminta DMA selama operasi mode dan maksimum. Jalur-jalur ini bidireksional dan digunakan RO/GT1 untuk meminta dan memberi hak operasi DMA.

LOCK =Output lock digunakan untuk mengunci periferal dari sistem. Pin ini diaktifkan dengan menggunakan awalan LOCK untuk semua instruksi.

QS1 dan  QS0 =Bit queue status menunjukkan status antrian instruksi internal.

Generator Clock (8284A)
 8284A merupakan komponen tambahan mikroprosesor 8086/8088. Tanpa generator clock banyak rangkaian tambahan yang dibutuhkan untuk membangkitkan clock (CLK) pada sistem yang berbasis 8086/8088. 8284A menyediakan fungsi-fungsi atau sinyal-sinyal dasar sebagai pembangkit clock, sinkronisasi RESET, sinkronisasi READY, dan sinyal clock periferal level

TTL =Frekuensi operasi standar 5 Mhz untuk 8086/8088 didapat dengan memasang kristal 15 Mhz ke generator clock 8284A. Output PCLK terdiri dari sinyal yang kompatibel TTL pada setengah frekuensi CLK.
Bagian reset 8284A sangat sederhana hanya terdiri dari satu buffer Schmitt Trigger dan satu rangkaian flip-flop tipe-D. Jika mikroprosesor 8086/8088 direset, mikroprosesor ini mulai mengeksekusi perangkat lunak pada lokasi memory FFFF0H (FFFF:0000) dengan pin interrupt request disable.

Demultipleks Bus =Bus alamat/data pada 8086/8088 di-multipleks (dipakai bersama) untuk memperkecil jumlah pin yang dibutuhkan untuk IC mikroprosesor 8086/8088.
Karena bus-bus mikroprosesor 8086/8088 di-multipleks dan kebanyakan memory dan peralatan I/O tidak, maka sistem haruslah di-demultipleks sebelum pengantarmukaan dengan memory atau dengan I/O. Demultipleks dilakukan oleh latch 8-bit yang pulsaclocknya berasal dari sinyal ALE.

Sistem yang Di-buffer  =Jika lebih dari 10 satuan beban terhubung ke pin bus manapun, seluruh sistem 8086 atau 8088 harus di-buffer. Pin yang ter-multipleks telah di-buffer oleh latch 74LS373, yang dirancang untuk mengendalikan bus kapasitas tinggi yang ditemukan pada sistem mikroprosesor.
Arus output buffer telah dinaikkan sehingga lebih banyak stuan beban TTL yang dapat dikendalikan. Output logika 0 menyediakan sampai 32 mA arus sink, dan output logika 1 menyediakan arus sumber hingga 5,2 mA.

Operasi Mode Minimum
Operasi mode minimum merupakan cara yang paling mudah untuk mengoperasikan mikroprosesor 8086/8088. Biayanya lebih murah karena semua sinyal kontrol untuk memory dan I/O dibangkitkan oleh mikroprosesor. Sinyal-sinyal kontrol ini sama dengan Intel 8085A, periferal 8-bit untuk digunakan dengan 8086/8088 tanpa pertimbangan khusus.

Operasi Mode Maksimum
Operasi mode maksimum berbeda dengan operasi mode minimum dalam hal beberapa sinyal kontrol harus dibangkitkan secara eksternal. Hal ini membutuhkan bus controller 8288. Tidak ada cukup pin pada 8086/8088 untuk kendali bus selama mode maksimum karena pin-pin baru dan fitur-fitur baru telah menggantikan beberapa diantaranya. Mode maksimum biasanya hanya digunakan ketika sistem berisi co-processor eksternal seperti co-processor  8087 (untuk aritmatik).  
   
Bus Controller 8288
Central Processing Unit (CPU) 8088

Mikroprosesor 8 bit yang dibuat dengan teknologi HMOS (High Performance Metal Oxide Semiconductor). Mikroprosesor 8088 memiliki sifat yang unik yaitu mampu mengakses lokasi memori sampai 1.024.576 byte (1 Mbyte), padahal instruksi-instruksinya hanya mengijinkan operasi dan manipulasi alamat 16-bit. Hal ini dimungkinkan karena mikroprosesor 8088 memiliki 4 segmen register 16-bit yang dapat digunakan untuk memanipulasi pengalamatan.
Prosesor 8088 dapat dioperasikan dalam 2 mode, yaitu mode minimum dan mode maksimum. Pada perancangan ini digunakan mode minimum dengan pertimbangan pada kesederhanaan dan hanya 1 (satu) prosesor yang dioperasikan. Gambar – 1 menunjukan arsitektur internal 8088, yang (Korespondensi adalah staff Peneliti dari Puslitbang TELKOMA-LIPI , Jl.Cisitu No.21/154D Bandung 40135)
berdasarkan fungsi-nya dibagi dalam 2 (dua) unit yaitu : Bus Interface Unit (BIU) dan Execution Unit (EU).
?Bus Interface Unit (BIU), berfungsi menangani seluruh transfer data dan alamat untuk bagian eksekusi, mulai dari mengirim alamat, mengambil instruksi dari memori, membaca data dari memori atau port dan menuliskan data ke port atau memori.
?Execution Unit (EU), berfungsi memberitahu Bus Interface Unit (BIU) dimana data dan instruksi harus diambil, men-dekode instruksi dan mengeksekusi instruksi.Register CPU 8088.






Pada CPU 8088 ini memiliki 14 register 16-bit. Adapun register-register tersebut diklasifikasikan dalam :
?Register Data, terdiri atas 4 register.
?Register Index dan Pointer, terdiri atas 4 register.
?4 Segment Register.
?Instruction Pointer dan Sebuah Register Flag.

Register data terdiri atas : AH, AL, BH, BL, CH, CL, DH dan DL yang mana register-register tersebut digunakan untuk menyimpan data 8-bit atau secara berpasangan dipakai untuk menyinpan data 16-bit. Bentuk pasangan yang diijinkan dalam register data adalah :

?AH dan AL membentuk AX, sebagai Accumulator untuk menyimpan salah satu nilai yang akan dioperasikan oleh Arithmatic Logic Unit (ALU) dan tempat menerima hasil operasi tersebut.
?BH dan BL membentuk BX, sebagai Base Register dalam pengalamatan.

?CH dan CL membentuk CX, digunakan untuk pencacah pada instruksi tertentu.

?DH dan DL membentuk DX, untuk menyimpan alamat I/O bila CPU mengakses peralatan I/O.
Register segmen terdiri atas 4 register 16-bit, yaitu : register CS (Code Segment), DS (Data Segment), SS (Stack Segment) dan ES (Extra Segment). Penggunaan regsiter segmen ini memiliki beberapa keuntungan, yaitu :

?Mampu mengakses memori hingga 1 Mbyte meskipun instruksinya hanya mengijinkan operasi 16-bit.

?Dengan menggunakan lebih dari 1 segmen kode, data dan stack memungkinkan panjang program, data dan stack lebih dari 64 Kbyte.

?Memberi fasilitas penggunaan ruang memori yang terpisah antara program, data dan stack.
Pada gambar – 2 dibawah ini ditunjukkan pengorganisasian memori pada CPU 8088.
Sistem Pewaktu Pada CPU 8088.
Pada sistem mikroprosesor 8088, panjang 1 siklus bus ada 4 pulsa clock, yaitu : T1, T2, T3 dan T4. Bila ada sinyal tunggu panjang 1 siklus bus tersebut ditambahkan sejumlah pulsa clock yang diberi notasi Tw. Dimana Tw tersebut letaknya disisipkan diantara T3 dan T4, bila peralatan I/O atau memori kurang cepat dalam merespon perpindahan data.
Gambar – 2 : Organisasi Memori CPU 8088.
Universal Synchronous/Asynchronous Receiver Transceiver (USART) 8251.
Secara internal USART 8251 terdiri dari 7 blok, yang masing-masing fungsinya dapat dilihat pada gambar – 3, adalah : ?Data Bus Buffer : menyimpan data paralel 8-bit yang akan dikeluarkan ke jalur data, maupun yang diterima dari jalur data.

?Read/Write Logic : berfungsi untuk mengendalikan perpindahan data dan command status, sehingga memungkinkan data dapat dibaca maupun ditulis pada lokasi dan waktu yang tepat. Pada blok ini terdapat pin CS yang mengaktifkan 8251 dengan memberikan logika ‘0’. Sedangkan frekwensi CLK-nya 30 x bit rate pengiriman data.

?Modem Control : merupakan perantara hubungan dari USART 8251 dengan Modem. Pada blok ini terdapat pin RTS yang dipakai untuk ‘handshaking’.

?Receiver Buffer (S-P) & Receiver Control : bagian ini saling bekerja sama dalam menerima data serial. Receiver buffer akan mengubah data serial menjadi paralel agar dapat dibaca oleh CPU, sedangkan receiver control memantau status dari receiver buffer. Pada blok ini terdapat RxC, pada modus transmisi sinkron nilai baud rate-nya sama dengan frekwensinya.
SYNDET yang mempunyai dua fungsi adalah :

?Pada mode asinkron, bila jalur input data RxD berada pada keadaan ‘0’ selama lebih dari 2 waktu karakter, pin ini akan ‘high’.
?Pada mode sinkron, pin ini akan ‘high’ bila 8251 mendeteksi adanya karakter sinkronisasi pada deret bit data.
?Transmitter Buffer (P-S) & Transmitter Control : bagian ini saling bekerja sama dalam mentransmisikan data serial. Transmitter buffer berfungsi menerima data dari CPU kemudian secara otomatis pada data ditambahkan bit start, bit paritas dan bit stop sesuai dengan mode word yang diberikan, sedangkan transmitter control memantau status dari transmitter buffer. Pada blok ini terdapat TxC, pada modus transmisi asinkron nilai baud rate-nya sama dengan frekwensinya.

Gambar - 3 : Blok Diagram USART 8251.
Programmable Interval Timer (PIT) 8253.
PIT 8253 berfungsi untuk mengimplementasikan pewaktu/pencacah pada sistem mikrokomputer. Pada gambar – 4 nampak satu pin PIT 8253 terdapat tiga buah pencacah 16-bit yang saling terpisah, yang masing-masing mampu mencacah hingga frekwensi 2.6 MHz. PIT 8253 terdiri atas 4 blok yang fungsi masing-masing bagian adalah :

?Data Bus Buffer : mempunyai 3 fungsi utama, yaitu :
1.Untuk memprogram mode dari PIT 8253.
2.Untuk memberikan nilai awal cacahan pada register pencacah.
3.Untuk membaca nilai cacahan.

?Read/Write Logic : berfungsi membangkitkan sinyal kontrol untuk mengendalikan seluruh operasi PIT 8253, termasuk pembacaan atau penulisan pada register pencacah.
?Control Word Register : berisi informasi yang dikirim sistem prosesor untuk mengidentifikasi operasi PIT 8253 yang diinginkan, juga digunakan untuk memilih pencacah, mode operasi dan jenis pencacah.
?Counter 0, 1 dan 2 : bagian ini pencacahan dilaksanakan, yang mana ketiga counter tersebut identik dan bebas satu dengan yang lainnya. Tiap-tiap pencacah dapat dioperasikan pada mode yang berlainan.

Gambar – 4 : Blok Diagram PIT 8253.
Programmable Peripheral Interface (PPI) 8255.
PPI 8255 ini melakukan fungsi interface (fungsi I/O) dalam sistem mikroprosesor. Pada gambar – 5 ini ditunjukkan diagram blok dari PPI 8255. PPI 8255 terbagi atas 3 buah port, yaitu : Port A, Port B dan Port C, juga dilengkapi pula dengan Data Bus Buffer serta Read/Write Control Logic. Fungsi dari Control Logic disini untuk menyimpan kombinasi bit yang mengkodekan mode kerja dari PPI 8255. Sedangkan input CS digunakan untuk memungkinkan pembacaan atau penulisan data dan dihubungkan dengan rangkaian dekoder untuk memilih perangkat bila dikehendaki.
Gambar – 5 : Diagram Blok PPI 8255.

Cara Kerja
Central Processing Unit (CPU) 8088
Pada mikroprosesor 8088 ini untuk bekerjanya memerlukan clock. Dimana clock tersebut dipergunakan untuk mensinkronisasi semua operasi didalam mikroprosesor. Pada perancangan ini dipergunakan IC 8284 yang memang diaplikasi pada CPU 8088. Sebagai sumber frekwensinya dipergunakan kristal 14.318 MHz. Untuk dapat bekerja secara optimum duty cycle yang diisyaratkan oleh CPU 8088 adalah 33%.

Pemrograman USART 8251.
Sebelum melaksanakan fungsinya USART 8251 harus diinisialisasi terlebih dahulu. Yang mana inisialisasi tersebut dilakukan oleh CPU 8088 dengan jalan mengirimkan control word ke alamat control register. Operasi pada USART 8251 ditentukan oleh nilai yang diberikan pada bit-bit control word. Dimana format control word dibagi dalam 2 jenis, yaitu :

1. Mode Instruction, dibagi menjadi 2 macam, yaitu :
?Mode Instruction untuk operasi Asinkron.
?Mode Instruction untuk operasi Sinkron.
Mode ini untuk mendefinisikan karakteristik operasi secara umum USART 8251, dan hanya cukup ditulis sekali saja pada setiap kali selesai operasi reset.

1.Command Instruction.
Pada command instruction dapat ditulis berkali-kali sesuai dengan keperluan.
Mengontrol operasi dan format mode instruction yang dipilih
Adapun urutan program dari control word dapat dilihat pada gambar – 6.

MODE INSTRUCTION
Gambar – 6 : Urutan Pemrograman USART 8251.
Pemrograman PIT 8253.
Untuk mengoperasikan PIT 8253, terlebih dahulu dilakukan inisialisasi. Yang mana inisialisasi dilakukan oleh CPU 8088 dengan cara mengirimkan control word ke control word register. Control word akan mendefinisikan modus kerja. pencacah, urutan pemberian nilai, urutan pembacaan dan jenis cacahan.

Pada tabel – 1 terlihat format control word dari PIT 8253. Dan pada tabel – 2 menunjukkan pemiliham pencacah.

Tabel – 1 : Format Control Word PIT 8253.
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD



Tabel – 2 : Pemilihan Pencacah PIT 8253.
SC1 SC0 DEFINISI
0 0 Pilih Pencacah 0
0 1 Pilih Pencacah 1
1 0 Pilih Pencacah 2
1 1 Tidak boleh

Pemrograman PPI 8255.
PPI 8255 terbagi atas 3 buah port, yaitu : Port A, Port B dan Port C, dan sebuah Control Word Register yang masing-masing terdiri atas 8-bit dan dapat diatur melalui software untuk melaksanakan fungsi output dan input. Pada tebel –
3 ditunjukkan salah satu cara untuk menentukan bit control word dari PPI 8255.

Tabel – 3 : Control Word PPI 8255.
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 1 0 0 0 0


Kesimpulan

?Sistem minimum merupakan sistem pengolah data yang sederhana karena hanya menggunakan 1 buah Mikroprosesor yang dioperasikan, sistem minimum ini bila dipadukan dengan sistem RF Transmitter dapat digunakan untuk sistem monitoring data dengan jarak jangkauan yang cukup jauh (Telemetri ).
?Mikroprosesor 8088 mempunyai fungsi yang cukup beragam pada aplikasi-aplikasi rangkaiannya dan relatif mudah serta murah untuk direalisasikan dalam sebuah sistem yang dirancang sesuai keinginan.

MODE PENGALAMATAN



MODE PENGALAMATAN


MODE PENGALAMATAN

1.    Immediate Addressing (Pengalamatan Segera)
Suatu proses penyalinan data yang berukuran byte atau word langsung ke dalam register tujuan. Data yang dimaksud di sini adalah suatu nilai atau bilangan tertentu atau bisa juga berupa sebuah konstanta (didefinisikan dengan instruksi EQU). Perlu dicatat bahwa data segera merupakan data konstan, sedangkan data yang dipindahkan dari register adalah data berubah (variable).
Contoh :
MOV AL,11h                               menyalin bilangan 11h ke dalam register AL
MOV AX,1234h                           menyalin 1234h ke dalam register AX
A EQU 25h                                   mendefinisikan konstanta A
MOV AX,A                                  menyalin 25h ke dalam register AX
Huruf ‘h’ ditambahkan dibelakang bilangan untuk menunjukkan bahwa itu adalah bilangan heksadesimal (bedakan dengan penulisan angka di debug). Ketika bilangan heksadesimal dimulai dengan suatu huruf, assembler memerlukan data yang dimulai dengan angka ‘0’, jika tidak (diberi angka ‘0’) maka assembler akan menganggap bilangan tersebut sebagai variable, jadi kompiler akan mengeluarkan pesan kesalahan.
Contoh :
MOV AX,FFh                              contoh yang salah
MOV AX,0FFh                            ini yang benar
Untuk karakter atau kode – kode ASCII dapat direpresentasikan dalam bentuk immediate jika data ASCII ditutup dengan tanda apostrof (‘).
Contoh :
MOV AL,’A’                                menyalin huruf ‘A’ (41h) ke dalam register AL
Yang terlarang dalam mode pengalamatan segera adalah memberikan nilai untuk segmen register (SS, CS, DS, ES). Untuk memecahkan hal ini, kita bisa menggunakan register general purpose (AX, BX, CX, DX) sebagai perantara.
Contoh :
MOV ES,0FFh                             salah, yang benar ada 2 langkah di bawah ini
MOV AX,0FFh                            disalin ke AX dulu
MOV ES,AX                                baru kemudian disalin ke ES

2.    Direct Addressing (Pengalamatan Langsung)
Suatu proses penyalinan data pada register dan suatu alamat efektif (Effective Address, Alamat ini disimpan pada byte berikut setelah opcode instruksi).
Contoh :
MOV AX,[100h]                          menyalin data pada alamat 100h ke AX
A DB 89h                                     mendefinisikan variable A
.
.
MOV AL,A                                  direct addressing
Sebenarnya huruf ‘A’ di atas lebih tepat disebut lokasi memori yang memiliki offset A, yaitu 89h, pada segmen data (DS). Jadi ‘A’ di sini bisa dibilang sama dengan sebuah nama variable pada bahasa pemrograman tingkat tinggi (C, C++, Pascal, Basic, dsb), hanya untuk memudahkan dalam pemahaman. Penyalinan data langsung antarmemori tidak diijinkan. Untuk memecahkan hal ini, kita bisa menggunakan register general purpose sebagai perantara.
Contoh :
A DB 10h
B DB ?                              definisi variable B, nilai ditentukan / diisi kemudian
.
.
MOV B,A



salah, harusnya dengan perantara sebagai berikut ..
MOV AX,A                                  direct addressing
MOV B,AX                                  register addressing
3.    Register Direct Addressing
Suatu proses penyalinan data (bisa byte atau word) dari register ke register atau ke suatu lokasi memori. Proses tersebut harus menggunakan dua buah operand yang berukuran sama, misalnya AX dan BX, AL dan BH (tapi ada beberapa instruksi tertentu yang dikecualikan, misalnya : SHL DX,CL
Contoh :
MOV AX,BX                               untuk operasi 16 bit data (word)
MOV AL,BL                                untuk operasi 8 bit data (byte)
Perlu diwaspadai bahwa ada beberapa penyalinan data yang terlarang pada pengalamatan ini. Misalnya instruksi MOV pada register segmen ke register segmen (SS, CS, DS, ES). Untuk memecahkan hal ini, kita bisa menggunakan register general purpose (AX, BX, CX, DX) sebagai perantara.
Contoh :
MOV ES,DS
salah, yang benar ada 2 langkah di bawah ini :
MOV AX,DS                               disalin dulu ke AX
MOV ES,AX                                baru kemudian disalin ke ES
Selain dengan cara di atas, kita juga bisa menggunakan stack sebagai perantara.
Contoh :
PUSH DS                                     PUSH (masukkan) nilai DS ke dalam stack
POP ES                                         POP (keluarkan) nilai dari dalam stack ke ES
Perhatikan juga bahwa register segmen kode (CS) tidak mungkin diubah oleh instruksi MOV, karena alamat instruksi berikutnya sudah ditentukan oleh IP dan CS (ingat pasangan CS:IP). Jika hanya CS yang diubah, maka alamat instruksi berikutnya tidak dapat diprediksi. Oleh karena itu, pengubahan register CS dengan instruksi MOV tidak diijinkan. Register Addressing dapat juga hanya terdiri atas sebuah register seperti pada perintah INC CX.

4.    Register Indirect Addressing
Register indirect addressing ini hampir sama dengan direct addressing, bedanya hanya alamat efektif dari operand tidak disimpan di byte berikut setelah opcode instruksi, tetapi disimpan pada salah satu dari register indeks atau register basis, yaitu BX,BP,SI atau DI. Register Indirect Addressing biasanya digunakan untuk mengakses suatu data yang banyak (misalnya sebuah array atau string) dengan mengambil alamat efektif dari data tersebut. Untuk mendapatkan alamat efektif dari suatu data bisa digunakan perintah LEA (Load Effective Addres) dengan syntax : LEA Register,Data
Untuk mengakses data yang ditunjukkan oleh Register, setelah didapatkannya alamat efektif harus digunakan tanda kurung siku (‘[]‘). Jika pada perintah pengaksesannya tidak disebutkan segmennya, maka yang digunakan adalah segment default. Seperti bila digunakan register BX, DI, atau SI sebagai penunjuk offset, maka segment DS yang digunakan. Sedangkan bila digunakan register BP sebagai penunjuk offset, maka segment SS yang digunakan.
Contoh :
MOV AX,[BX]
menyalin isi dari lokasi memori yang offsetnya disimpan di dalam register BX (16 bit) pada segmen data (DS) ke register AX. Misalnya BX = 1000h, ketika instruksi di atas dilakukan, isi dari DS (yang berukuran word) pada alamat offset 1000h disalin ke dalam register AX. Perhatikan bahwa isi dari 1000h disalin ke AL dan isi dari 1001h disalin ke AH.
LEA SI,String muat offset String (String adalah variable yang berisi kumpulan karakter / string) MOV AL,[SI] menyalin isi dari lokasi memori yang offsetnya disimpan di dalam register SI (8 bit) pada segmen data (DS) ke register AL
Pada direct addressing di atas sudah dikatakan bahwa tidak diijinkan menyalin data langsung antarmemori. Hal tersebut juga berlaku pada Register indirect addressing.
Contoh :
MOV [DI],[BX]
salah, menyalin dari memori ke memori tidak diijinkan, kecuali dengan instruksi string.
Pada beberapa kasus, pengalamatan tidak langsung memerlukan ukuran data khusus yang ditetapkan dengan direktif assembler khusus BYTE PTR, WORD PTR, atau DWORD PTR. Direktif ini menunjukkan ukuran data memori yang dialamatkan oleh penunjuk memori (PTR).

Contoh:
MOV AL,[DI]
jelas merupakan instruksi penyalinan data berukuran byte (tandanya memakai register AL sebagai tujuannya).
MOV [DI],10h
salah, karena instruksi ini tidak jelas, apakah mengalamatkan lokasi memori yang berukuran byte, word, atau dword . Assembler tidak menentukan ukuran 10h tersebut. Yang benar seperti contoh berikut.
MOV BYTE PTR [DI],10h
jelas menentukan lokasi yang dialamatkan oleh DI sebagai lokasi memori yang berukuran byte.

5.    Indirect Addressing
Merupakan mode pengalamatan tak langsung. Field alamat mengacu pada alamat word di dalam memori, yang pada gilirannya akan berisi alamat operand yang panjang atau untuk mentransfer DATA/byte/word antar register dan lokasi yang alamatnya ditunjukkan oleh isi suatu register.
Contoh
AX  Þ Pindahkan isi register AX ke dalam alamat memori yang ditunjukkan oleh isi register BX
Contoh
ADD (A) Þ tambahkan isi memori yang ditunjuk oleh isi alamat A ke akumulator Keuntungan yang diperoleh adalah ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi. Sedangkan kerugiannya adalah diperlukan referensi memori ganda dalam satu fetch sehingga memperlambat proses operasi.



6.    Displacement Addressing
Merupakan mode pengalamatan yang menggabungkan kemampuan pengalamatan langsung dan pengalamatan register tidak langsung (Register Indirect Addressing). Metode ini mensyaratkan intruksi memiliki dua buah field alamat, sedikitnya sebuah field yang eksplisit (field eksplisit bernilai A dan field implisit mengarah pada register).
Operand berada pada alamat A ditambah isi register.
Tiga model displacement:
a.       Relative Addressing
Register yang direferensi secara implisit adalah program counter (PC). Alamat efektif didapatkan dari alamat instruksi saat itu ditambahkan ke field alamat. Memanfaatkan konsep lokalitas memori untuk menyediakan operand-operand berikutnya.
b.      Base Register Addressing
Register yang direferensikan berisi sebuah alamat memori, dan field alamat berisi perpindahan dari alamat itu. Referensi register dapat eksplisit maupun implisit. Memanfaatkan konsep lokalitas memori.
c.       Indexing
Indexing adalah field alamat mereferensi alamat memori utama, dan register yang direferensikan berisi pemindahan positif dari alamat tersebut. Merupakan kebalikan dari model base register. Field alamat dianggap sebagai alamat memori dalam indexing. Manfaat penting dari indexing adalah untuk eksekusi program-program iteratif.



7.    Stack Addressing
Stack adalah array lokasi yang linier, yang merupakan blok lokasi yang terbalik (butir ditambahkan ke puncak stack sehingga setiap saat blok akan terisi secara parsial)
Yang berkaitan dengan stack adalah pointer yang nilainya merupakan alamat bagian paling atas stack. Dua elemen teratas stack dapat berada di dalam register CPU, yang dalam hal ini stack pointer mereferensi ke elemen ketiga stack. Stack pointer tetap berada di dalam register. Dengan demikian, referensi-referensi ke lokasi stack di dalam memori pada dasarna merupakan pengalamatan register tidak langsung.