Chế độ địa chỉ là cách để vi xử lý tìm thấy toán hạng cho các lệnh của nó khi hoạt động. Một bộ vi xử lý có thể có nhiều chế độ địa chỉ. Các chế độ địa chỉ này được xác định ngay từ khi chế tạo ra bộ vi xử lý và sau này không thể thay đổi được. Bộ vi xử lý 8088 có các chế độ địa chỉ sau:
Chế độ địa chỉ thanh ghi (register addressing mode)
Chế độ địa chỉ tức thì (immediate addresing mode)
Chế độ địa chỉ ô nhớ: Riêng chế độ này lại được chia ra thành 5 chế độ địa chỉ khác nhau là:
Chế độ địa chỉ trực tiếp (direct addresing mode)
Chế độ địa chỉ gián tiếp qua thanh ghi (register indirect addressing mode)
Chế độ địa chỉ tương đối cơ sở (based relative addressing mode)
Chế độ địa chỉ tương đối chỉ số (indexed relative addressing mode) 80 = 10000000 CF = 1, PF = 1, AF = 0
80 = 10000000 ZF = 1, SF = 0, OF = 1 100 = 10000 0000
+
33
Chế độ địa chỉ tương đối chỉ số cơ sở (based indexed relative addressing mode)
2.1.1. Chế độ địa chỉ thanh ghi
Ở chế độ này các toán hạng đều là thanh ghi bên trong bộ vi xử lý cho nên thao tác của lệnh được thực hiện rất nhanh.
Ví dụ:
MOV AX, BX ; chuyển nội dung của thanh ghi BX vào AX ADD AL, BL ; cộng nội dung AL và BL rồi cất kết quả vào AL 2.1.2. Chế độ địa chỉ tức thì
Ở chế độ này toán hạng đích là một thanh ghi hay ô nhớ. Toán hạng nguồn là một hằng số. Thao tác của lệnh là thao tác của thanh ghi hay ô nhớ đối với hằng số đó.
Ví dụ:
MOV AX, 5 ; chuyển 5 vào AX hay copy 5 vào AX ADD AL, 5 ; AL = AL + 5
2.1.3. Chế độ địa chỉ trực tiếp
Ở chế độ này một toán hạng là ô nhớ mà địa chỉ độ lệch của ô nhớ đó là một hằng số 16 bit cho ngay ở trong lệnh. Toán hạng còn lại là thanh ghi.
Ví dụ:
MOV AL, [1234H] ; chuyển nội dung ô nhớ có địa chỉ DS:1234H vào AL
MOV [4321h], AX ; chuyển nội dung AX vào trong hai ô nhớ liên tiếp có địa chỉ DS:4321h và DS:4322h
2.1.4. Chế độ địa chỉ gián tiếp qua thanh ghi
Ở chế độ này toán hạng là một ô nhớ mà địa chỉ độ lệch của ô nhớ đó được cất trong một thanh ghi cho ngay ở trong lệnh. Toán hạng còn lại là thanh ghi.
Ví dụ:
MOV AL, [BX] ; chuyển nội dung ô nhớ có địa chỉ DS:BXvào AL MOV [SI], AX ; chuyển nội dung AX vào trong hai ô nhớ liên tiếp
có địa chỉ DS:SI và DS:SI + 1
34
2.1.5. Chế độ địa chỉ tương đối cơ sở
Ở chế độ này toán hạng là một ô nhớ mà địa chỉ độ lệch của ô nhớ đó được xác định bằng cách cộng nội dung của thanh ghi cơ sở (BX, BP) với giá trị dịch chuyển (8, 16 bit) cho ngay ở trong lệnh. Toán hạng còn lại là thanh ghi.
Ví dụ:
MOV AL, [BX] + 3Fh ; chuyển nội dung ô nhớ có địa chỉ DS:BX+3Fh vào AL
MOV [BP + E4h], AX ; chuyển nội dung AX vào trong hai ô nhớ liên tiếp có địa chỉ SS:BP + E4h và SS:BP + E5h Từ ví dụ trên ta thấy, việc sử dụng [BX] + 3FH và [BX + 3FH] là như nhau.
2.1.6. Chế độ địa chỉ tương đối chỉ số
Ở chế độ này toán hạng là một ô nhớ mà địa chỉ độ lệch của ô nhớ đó được xác định bằng cách cộng nội dung của thanh ghi chỉ số (SI, DI) với giá trị dịch chuyển (8, 16 bit) cho ngay ở trong lệnh. Toán hạng còn lại là thanh ghi.
Ví dụ:
MOV AL, [SI] + 3Fh ; chuyển nội dung ô nhớ có địa chỉ DS:SI+3Fh vào AL
MOV [DI + E4h], AX ; chuyển nội dung AX vào trong hai ô nhớ liên tiếp có địa chỉ DS:DI + E4h và DS:DI + E5h 2.1.7. Chế độ địa chỉ tương đối chỉ số cơ sở
Ở chế độ này toán hạng là một ô nhớ mà địa chỉ độ lệch của ô nhớ đó được xác định bằng cách cộng nội dung của thanh ghi cơ sở (BX, BP) với thanh ghi chỉ số (SI, DI) với giá trị dịch chuyển (8, 16 bit) cho ngay ở trong lệnh. Toán hạng còn lại là thanh ghi.
Ví dụ:
MOV AL, [BX] + [SI] ; chuyển nội dung ô nhớ có địa chỉ DS:BX+SI vào AL MOV [BP+DI]+E4h, AX ; chuyển nội dung AX vào trong hai ô nhớ liên tiếp có
địa chỉ SS:BP + DI + E4h và DS:BP + DI + E5h
Lưu ý:Độ dịch chuyển có thể không có như ở trường hợp đầu tiên, tuy nhiên với trường hợp không có giá trị dịch chuyển, ta có thể định nghĩa là một độ dịch chuyển 8 bit có giá trị là 00H.
Bảng 2.3 tóm tắt các chế độ địa chỉ của vi xử lý 8088/8086.
Bảng 2.3: Tóm tắt các chế độ địa chỉ
Chế độ địa chỉ Toán hạng Thanh ghi đoạn
35
ngầm định
Thanh ghi Thanh ghi
Tức thì Dữ liệu
Trực tiếp [độ lệch] DS
Gián tiếp qua thanh ghi
[BX]
[SI]
[DI]
DS DS DS Tương đối cơ sở [BX] + giá trị dịch chuyển
[BP] + giá trị dịch chuyển
DS SS Tương đối chỉ số [SI] + giá trị dịch chuyển
[DI] + giá trị dịch chuyển
DS DS
Tương đối chỉ số cơ sở
[BX] + [SI] + giá trị dịch chuyển [BX] + [DI] + giá trị dịch chuyển [BP] + [SI] + giá trị dịch chuyển [BP] + [DI] + giá trị dịch chuyển