Các chế độ xác định địa chỉ toán hạng

Một phần của tài liệu GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH (Trang 36 - 40)

CPU thực hiện chương trình bằng cách thực hiện tuần tự các lệnh trong bộ nhớ chính 1.4.7.1 Cấu trúc lệnh

Cấu trúc của một lệnh có thể có các dạng sau:

-Mã lnh: là phần chứa thông tin xác định các thao tác hoặc công việc cần được thực hiện. CPU x86 thực hiện một tập các nhóm lệnh:

37 - Nhóm lệnh chuyển số liệu: MOV, PUSH, POP ...

- Nhóm lệnh rẽ nhánh và điều khiển: JMP, CALL, RET, INT, LOOP, CLI, STI, ... - Nhóm lệnh vào ra: IN, OUT

- Các lệnh khác: logic, thao tác bít, xử lý xâu...

- Phn địa chỉ: là phần thông tin xác định nơi chứa toán hạng. Các nơi có thể chứa toán hạng:

+ Tức thời trong lệnh (giá trị toán hạng nằm ngay trong lệnh). + Các thanh ghi của CPU.

+ Bộ nhớ.

1.4.7.2 Các phương pháp xác định địa chỉ toán hạng

Các phương pháp xác định địa chỉ toán hạng (Các phương pháp định vị toán hạng) cho phép xác định nơi chứa toán hạng. Nơi chứa toán hạng có thể là: Trên lệnh, thanh ghi và bộ nhớ. Bộ nhớ mặc định được hiểu là đoạn dữ liệu, xác định địa chỉ ô nhớ là xác định địa chỉ offset hiệu dụng của ô nhớ trong đoạn đó. Trong các trường hợp khác cần chỉ rõ đoạn nhớ cần truy nhập, ví dụ ES: [địa chỉ offset].

Có ba nhóm chế độ định vị toàn hạng + Định vị tức thời

+ Định vị thanh ghi + Định vị bộ nhớ.

Các thao tác có thể xẩy ra giữa các đối tượng sau: Thanh ghi Tức thời

Thanh ghi Thanh ghi Bộ nhớ Tức thời

Bộ nhớ Thanh ghi

- Định vị tức thời: Dữ liệu nằm ngay trong câu lệnh

Ví dụ: MOV AX. 0F000h: đưa giá trị F000h vào AX

- Định vị thanh ghi : Các thanh ghi đa năng, các thanh ghi địa chỉ hoặc các thanh ghi đoạn của CPU là nơi chứa dữ liệu.

Ví dụ: MOV AX. BX: đưa giá trị ở BX và AX

- Định vị bộ nhớ: Phương pháp định vị bộ nhớ cho phép xác định địa chỉ offset (địa chỉ lệch) của ô nhớ chứa toán hạng, ô nhớ mặc định nằm trong đoạn dữ liệu.

Có các phương pháp định vị bộ nhớ sau: - Định vị trực tiếp - Định vị gián tiếp. - Định vị cơ sở - Định vị chỉ số - Định vị cơ sở chỉ số - Định vị đầy đủ.

+ Định vị trực tiếp : Địa chỉ ô nhớ chứa dữ liệu nằm ngay trong lệnh. Địa chỉ offset = [giá trị cụ thể]

38 Ví dụ: MOV AX, [1000h]: Đưa nội dung ô nhớ có địa chỉ

DS: 1000h vào AX

MOV AX. ALFA: ALFA là tên tiến đã được khai báo

+ Định vị gián tiếp (thanh ghi).

Các thanh ghi địa chỉ BX, BP, SI, DI, SP là nơi chứa địa chỉ ô dữ liệu. Ví dụ: MOV AX, [BX] ;

Trong đó [BX]: = 1000h : lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1000h vào AX.

+ Định vị cơ sở :

Phương pháp định vị cơ sở thường được dùng trong các thao tác với phần tử mảng dữ liệu hoặc với các cấu trúc dữ liệu tương đương. (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ: MOV AX, [BX + 10h] ;

Trong đó [BX] = 1000h, lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1010h vào AX.

39 + Định vị chỉ số :

Ví dụ: MOV AX, [SI + 1000h] ;

Trong đó [SI] = 10h. lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1010h vào AX.

Điều khác biệt giữa phương pháp định vị chỉ số so với phương pháp định vị cơ sở bắt đầu từ hệ 32 bit là có thể viết (SI*bội số). (DI*bội số). Bội số là 1, 2, 4, 8.

S khác nhau gia định v ch sđịnh v cơ s ?

Ví d : 1 chui d liu được cha trong các ô nhđịa ch A, A+1, A+2. Mun chuyn chui này ti v trí B, B+1, B+2

Phương án đưa ra là : Mov B,A Mov B+1, A+1 Mov B+2,A+2

Thc hin bng phương pháp định v gián tiếp : Dùng 2 thanh ghi sau mi ln thc hin lnh 2 thanh ghi li tăng lên 1.

Mt gii pháp khác đưa ra là s dng 1 thanh ghi ch s. Khi này địa ch ô nh s gm 2 phn : Ni dung thanh ghi ch s và mt hng s (bng tng thanh ghi ch s cng vi hng s). Vi cách này ch cn dùng mt thanh ghi cho vòng lp sao chép bng cách khi động cho thanh ghi ch s bng 0 (SI=0) ri tăng dn ni dung thanh ghi này lên 1 lượng bng kích thước ca khi d liu cn sao chép.

- Định vị cơ sở chỉ số :

40 trong đó [BX] =1000h, [SI] =10h. Lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1010h vào AX.

Phương pháp định vị cơ sở chỉ số thường được dùng trong các thao tác với mảng dữ liệu hoặc với các cấu trúc dữ liệu tương đương.

- Định vị đầy đủ :

Địa chỉ offset= [Thanh ghi cơ sở + Thanh ghi chỉ số + khoảng dịch].

Phương pháp định vị này thường được dùng trong các thao tác với mảng dữ liệu hai chiều hoặc với các cấu trúc dữ liệu phức tạp.

Một phần của tài liệu GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH (Trang 36 - 40)