Lập ựịa chỉ tức thời (Immediate Addressing)

Một phần của tài liệu giáo trình kiến trúc mạng máy tính (Trang 170 - 172)

Cách ựơn giản nhất cho lệnh qui ựịnh toán hạng là ựể phần ựịa chỉ trong lệnh chứa chắnh toán hạng thay vì ựịa chỉ hoặc thông tin khác mô tả vị trắ toán hạng:

OPERAND = A

Toán hạng như vậy ựược gọi là toán hạng tức thời (immediate operand) vì tự ựộng ựược tìm nạp từ bộ nhớ cùng lúc với tìm nạp bản thân lệnh, nhờ ựó khả dụng tức thời.

Lập ựịa chỉ tức thời có ưu ựiểm là khỏi cần thêm tham chiếu bộ nhớ bộ nhớ ựế tìm nạp toán hạng. Nhược ựiểm là hạn chế toán hạng ở con số vừa vào trường ựịa chỉ. Ớ lệnh có ựịa chỉ 3 bit (vắ dụ như trường

thanh ghi), toán hạng sẽ giới hạn ở 3 bit, và làm hạn hẹp tắnh hữu ắch của chúng.

Chế ựộ này ựược dùng ựể ựịnh nghĩa các hằng số hoặc là khởi tạo một giá trị nào ựó cho một biến

Một vắ dụ trong các trường hợp lập ựịa chỉ tức thời là ựưa giá trị Ộ4Ợ vào thanh ghi R1 như sau:

MOV R1, #4

b) Lập ựịa chỉ trực tiếp (Direct Addressing)

Một phương thức ựơn giản khác ựể qui ựịnh toán hạng là cung cấp ựịa chỉ của từ nhớ có chứa toán hạng và ựặt nó vào trường ựịa chỉ của lệnh. Hình thức này gọi là lập ựịa chỉ trực tiếp (direct addressing):

EA = A

Tất nhiên phải có cách ựể máy tắnh biết ựược ựịa chỉ nào là tức thời và ựịa chỉ nào là trực tiếp. Nói chung, có hai phương pháp: sử dụng opcode khác nhau hoặc sử dụng một mode ựánh ựịa chỉ ựặc biệt cho mỗi loại toán hạng.

Cũng như cách lập ựịa chỉ tức thì, ựịa chỉ trực tiếp có một số giới hạn: Lệnh luôn truy cập ựến chỉ một ựịa chỉ ô nhớ. Tức là giá trị tại ựịa chỉ ựó có thể thay ựổi nhưng ựịa chỉ thì không. Như

vậy ựịa chỉ trực tiếp có thể ựược sử dụng với các biến toàn cục, mà ựịa chỉ của nó là biết trước trong thời gian biên dịch.

c) Lập ựịa chỉ gián tiếp (Indirect Addressing)

đánh ựịa chỉ trực tiếp là cách trong ựó trường ựịa chỉ chỉ ra một từ nhớ nào hay thanh ghi nào chứa toán hạng. Tuy nhiên trong trường hợp lập ựịa chỉ trực tiếp thì chiều dài của trường ựịa chỉ thường là ngắn hơn chiều dài một word, do ựó số ựịa chỉ có thể mã hóa ựược bị hạn chế. Cách ựánh ựịa chỉ gián tiếp là trường ựịa chỉ chỉ ra từ nhớ nào hoặc thanh ghi nào chứa ựịa chỉ của toán hạng ( Xem hình 6.8):

EA = (A)

Nói cách khác là từ nhớ hay thanh ghi trong trường ựịa chỉ giống như là một con trỏ (trong C++), trỏ tới một toán hạng

Việc ựánh ựịa chỉ gián tiếp cần hai lần truy cập bộ nhớ, lần thứ nhất ựể lấy con trỏ về và lần thứ hai ựể lấy toán hạng về.

d) Lập ựịa chỉ thanh ghi (Register Addressing)

Về khái niệm, lập ựịa chỉ thanh ghi tương tự như lập ựịa chỉ trực tiếp. điểm khác biệt duy nhất ở ựây là thay vì trường ựịa chỉ trỏ tới một ựịa chỉ trong bộ nhớ thì ở ựây là trỏ tới một thanh ghi (thanh ghi số mấy) trong ựó lưu trữ toán hạng:

Máy với 16 thanh ghi và bộ nhớ 65.536 từ thật sự sẽ có hai không gian ựịa chỉ. Ta có thể xem một ựịa chỉ trên máy như thế là có hai phần:

Ớ Một bit cho biết là ta muốn dùng thanh ghi hay từ nhớ

Ớ Một trường ựịa chỉ cho biết là sẽ cần thanh ghi hay từ nhớ nào.

Vì số thanh ghi ắt hơn số từ nhớ, do ựó người ta thường dùng các dạng thức lệnh khác nhau cho toán hạng thanh ghi và toán hạng nhớ.

Các máy ngày nay ựược thiết kế có các thanh ghi vì 2 lý do chắnh sau:

Ờ Số lượng thanh ghi là rất ắt do ựó ựể mã hóa chúng cũng chỉ cần một số ắt bit.

e) địa chỉ gián tiếp thanh ghi (Register Indirect)

địa chỉ thanh ghi thì giống ựịa chỉ trực tiếp, còn ựịa chỉ gián tiếp thanh ghi thì lại giống với ựịa chỉ gián tiếp. Trong ca hai trường hợp sự khác nhau chỉ là một cách là ựịa chỉ bộ nhớ chắnh, còn một cách là thanh ghi:

EA = (R)

Trường ựịa chỉ chứa số thanh ghi, mà trong thanh ghi ựó chứa ựịa chỉ của toán hạng cần thiết. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu giáo trình kiến trúc mạng máy tính (Trang 170 - 172)