Thanh ghi Trực tiếp

Một phần của tài liệu Thiết kế và thi công máy tính tiền siêu thị cửa hàng (Trang 38 - 40)

IV. THIẾT KẾ CHƯƠNG TRÌNH DÙNG CÁC NGẮT:

e Thanh ghi Trực tiếp

e Trực tiếp se Gián tiếp e Tức thời (Immediate) e Tương đối se ẻ Xa se Chỉ số Định vị bằng thanh ghi:

Người lâp trình truy xuất đữ liệu chứa trong các thanh ghi từ R0 đến R7 thông qua tên gọi của chúng. Địa chỉ của 8 thanh ghi này được giải mã thông qua bit thấp

nhất của chúng. Do đó mã lệnh và toán hạng địa chỉ được gom chung vào 1 byte.

| Opcode 5-bit n | n | n |

Chương HI: Tóm tắt tập lệnh

Ví dụ lệnh sau cộng nội dung R7 vào thanh ghi tích luỹ:

ADD A, R7;

Mã lệnh là 001011111B. Trong đó 5 bit cao 00101 chỉ mã lệnh 3 bít thấp 111 chỉ thanh ghi R7.

Một vài lệnh xác định trực tiếp trên thanh ghi như thanh ghi tích luỹ, con trỏ dữ liệu ..do đó không cần đến các bit địa chỉ. Bản thân mã lệnh đã mô tả thanh ghi.

Định vị trực tiếp :

Định vị trực tiếp có thể truy xuất bất kỳ byte nào trong vùng nhớ nội hoặc các

thanh ghi chức năng. Một byte được thêm vào mã lệnh để xác định vị trí thanh ghi được dùng.

| Opcode 8-bit | Drrect Adress 8§-bit |

Tùy thuộc vào bit cao nhất của byte địa chỉ trực tiếp, một trong hai vùng nhớ

sẽ được chọn. Khi bit 7 của địa chỉ trực tiếp bằng 0: địa chỉ trực tiếp có giá trị từ 0 đến 127 (00H - 0FH) và 128 bytes thấp của on chip RAM được tham khảo đến, Tất cả các LO port, thanh ghi chức năng. Thanh ghi điều khiển, thanh ghi trạng thái có địa chỉ từ 128 đến 255 (80H-FFh). Khi bit 7=l byte địa chỉ trực tiếp nằm trong giới

hạn này, tương ứng với thanh ghi chức năng sẽ được truy xuất. Ví dụ port Ö và port l

có địa chỉ tương ứng là 80H và 90H. Ta không cần phải biết địa chỉ của những thanh

ghi này, trình biên dịch luôn hiểu các mã gợi nhớ ngắn gọn của nó như PO, P1,

TMOV...

Định vị gián tiếp:

Làm thế nào để nhận dạng một biến, nếu địa chỉ của nó được xác định, tính

toán, thay đổi khi chương trình đang chạy. Vấn đề này được đặt ra khi thao tác các vị

trí nhớ liên tục, chuỗi số, hay xâu ký tự. Thanh ghi và địa chỉ trực tiếp không thể

dùng vì toán hạng địa chỉ phải được nhân biết trong thời gian biên dịch.

Để giải quyết vấn để trên 8051 sử dụng địa chỉ gián tiếp. R1 và R0 được coi như những con trỏ. Nội dung của chúng chỉ đến một địa chỉ nào đó trong RAM khi đọc hoặc ghi đữ liệu. Bit thấp nhất trong byte mã lệnh xác định thanh ghi nào (RO hay R1) được dùng làm con trỏ.

Ngôn ngữ assembly của 8051 dùng ký hiệu @ đặt trước R0 hay R1 để mô tả định vị gián tiếp. Ví dụ, nếu R1 chứa 40H và tại vị trí 40H trong bộ nhớ nội chứa giá

trị 55H, lệnh:

MOV A, @RI;

Chuyển giá trị 55H vào thanh ghi tích luỹ.

Opcode 7-bit 1

Chương III: Tóm tắt tập lệnh

Định vị gián tiếp trở nên quan trọng khi phải thao tác từng byte bộ nhớ nội

một cách liên tục. Ví dụ những lệnh sau sẽ xóa vùng RAM từ địa chỉ 60H đến 70H:

MOV R0, #60H;

MOV (@RO, #O;

LOOP: INC RO;

CJNE RO, #§0H, LOOP;

Lệnh đầu tiên khởi động thanh ghi với địa chỉ đầu tiên của khối bộ nhớ. Lệnh

Một phần của tài liệu Thiết kế và thi công máy tính tiền siêu thị cửa hàng (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(48 trang)