Lệnh inc trong vi xử lý

Trang Chủ VI ĐIỀU KHIỂN VI ĐIỀU KHIỂN 8051 TẬP LỆNH CỦA 8051

  • VI ĐIỀU KHIỂN
  • VI ĐIỀU KHIỂN 8051
TẬP LỆNH CỦA 8051

Bởi admin -

15 Tháng Mười Hai, 2015

6849

Chia sẻ Facebook

Tweet

I. MỞ ĐẦU:

Lệnh inc trong vi xử lý

* Khuôn dạng tổng quát của một dòng lệnh:
             [LABEL:] MNEMONIC [OPERAND][,OPERAND]… [;COMMENT]

  • Nhãn (Label): biểu thị địa chỉ của dòng lệnh (hoặc dữ liệu) theo sau, được dùng trong trường toán hạng của lệnh nhảy, lệnh rẽ nhánh                   (SJMP  AAA; ACALL  BBB; CJNE A, #35H, LOOP; JNB P3.1, TEST_1…).

 Lưu ý về nhãn:
   + Do người lập trình tự đặt (không được trùng với từ khoá, mã gợi nhớ, chỉ dẫn, toán tử hoặc ký hiệu tiền định nghĩa).
   + Bắt đầu bằng ký tự chữ, dấu chấm hỏi (?), dấu gạch dưới (_).
   + Dài tối đa 31 ký tự.
   + Kết thúc bằng dấu hai chấm (:).

  • Mã gợi nhớ (Mnemonic): biểu diễn các mã của lệnh hoặc các chỉ dẫn của chương trình dịch hợp ngữ (Mã gợi nhớ: ADD, SUBB, INC, …; Chỉ dẫn: ORG, EQU, DB, …).
  • Toán hạng (Operand): chứa địa chỉ hoặc dữ liệu mà lệnh sẽ sử dụng. Số lượng toán hạng trong một dòng lệnh phụ thuộc vào từng dòng lệnh (RET– không toán hạng,  INC A– một toán hạng, ADD A, R0– hai toán hạng, CJNE A, #12H, ABC– ba toán hạng).

    Lưu ý về toán hạng: Trong các lệnh có 2 toán hạng thì toán hạng đầu tiên còn được gọi là
toán hạng đích(Destination), toán hạng thứ hai còn được gọi là toán hạng nguồn(Source).

  • Chú thích (Comment): làm cho rõ nghĩa cho chương trình. Các chú thích phải nằm trên cùng một dòng và bắt đầu bằng dấu chấm phẩy (;). Các chú thích nếu nằm trên nhiều dòng thì mỗi dòng cũng phải bắt đầu bằng dấu chấm phẩy (;).

    Lưu ý: Chi tiết về phần này xem thêm tại “Chương 7: Lập trình hợp ngữ” trong sách “Họ
vi điều khiển – Tống Văn On”.

II. CÁC KIỂU ĐỊNH ĐỊA CHỈ (ADDRESSING MODE):

Lệnh inc trong vi xử lý

1. Định địa chỉ thanh ghi (Register Addressing):

  • Được dùng để truy xuất dữ liệu trong các thanh ghi từ R0 đến R7.
  • Số byte của lệnh: 1 byte.
  • Cấu trúc lệnh: 
    Lệnh inc trong vi xử lý

Ví dụ:  ADD A, R5  ⇒Lệnh cộng nội dung thanh ghi A với nội dung thanh  ghi R5. (Giả sử:
(A)=05H, (R5)=9AH).

Lệnh inc trong vi xử lý

  • Ngoài ra, một số trường hợp đặc biệt kiểu định địa chỉ này cũng dùng để truy xuất dữ liệu trong các thanh ghi như: thanh ghi chứa A, thanh ghi con trỏ dữ liệu DPTR, thanh ghi bộ đếm chương trình PC, cờ nhớ C và cặp thanh ghi AB.

Ví dụ:  INC A →  Lệnh tăng nội dung thanh ghi A.
INC DPTR → Lệnh tăng nội dung thanh ghi DPTR.
2. Định địa chỉ trực tiếp (Direct Addressing):

  • Được dùng để truy xuất dữ liệu trong các ô nhớ (00H – FFH) hay trong các thanh ghi (A, B, P0–P3, DPH, DPL,…) của bộ nhớ bên trong chip.
  • Số byte của lệnh: 2 byte.
  • Cấu trúc lệnh:  
    Lệnh inc trong vi xử lý

Ví dụ: ADD A, P1  ⇔ ADD A, 90H  ⇒ Lệnh cộng nội dung thanh ghi A với nội dung thanh ghi

port 1 hay ô nhớ 90H. (Giả sử: (A) = 05H, (P1) = (90H) = 9AH).

Lệnh inc trong vi xử lý

3. Định địa chỉ gián tiếp (Indirect Addressing):

  • Được dùng để truy xuất dữ liệu trong các ô nhớ “gián tiếp” của bộ nhớ bên trong chip. Các thanh ghi R0 và R1 được dùng để chứa địa chỉ của các ô nhớ gián tiếp (00H – FFH) trong chip. Lưu ý rằng, trước các thanh ghi R0, R1 cần phải có dấu “@”.
  • Số byte của lệnh: 1 byte.
  • Cấu trúc lệnh:
    Lệnh inc trong vi xử lý

Ví dụ:  ADD A, @R0  ⇒ Lệnh cộng nội dung thanh ghi A với nội dung ô nhớ có địa chỉ chứa
trong thanh ghi R0. (Giả sử: (A) = 05H, (R0) = 3BH, (3BH) = 9AH).

Lệnh inc trong vi xử lý

4. Định địa chỉ tức thời (Immediate Addressing):

  • Được dùng để truy xuất một hằng số (giá trị biết trước) thay vì là một biến (giá trị không biết trước) như các kiểu định địa chỉ trên. Lưu ý rằng, trước dữ liệu tức thời cần phải có dấu “#”.
  • Chế độ định địa chỉ tức thời có thể dùng để nạp dữ liệu vào mọi ô nhớ và thanh ghi bất kỳ ( đối với thanh ghi 8 bit: #00H – #0FFH, đối với thanh ghi 16 bit: #0000H – #0FFFFH ).
  • Số byte của lệnh: 2 byte.
  • Cấu trúc lệnh:

Ví dụ: ADD A, #9AH ⇒ Lệnh cộng nội dung thanh ghi A với giá trị 9AH. (Giả sử: (A) = 05H).

Lệnh inc trong vi xử lý

5. Định địa chỉ tương đối (Relative Addressing):

  • Được sử dụng cho các lệnh nhảy.
  • Địa chỉ tương đối (hay offset) là một giá trị 8 bit có dấu.
  • Tầm nhảy giới hạn là: -128 byte … 127 byte từ vị trí của lệnh tiếp theo sau lệnh nhảy.
  • Số byte của lệnh: 2 byte.
  • Cấu trúc lệnh:
    Lệnh inc trong vi xử lý

Ví dụ 1:  SJMP AAA  ⇒ Lệnh nhảy đến nhãn AAA (Giả sử: nhãn AAA đặt trước lệnh ở địa chỉ
0107H, lệnh SJMP nằm trong bộ nhớ tại địa chỉ 0100H và 0101H).

⇒ Mã lệnh:    

Lệnh inc trong vi xử lý

⇒Mô tả lệnh: xem hình 3.5.2.1

Ví dụ 2:  SJMP AAA  ⇒ Lệnh nhảy đến nhãn AAA (Giả sử: nhãn AAA đặt trước lệnh ở địa chỉ
203BH, lệnh SJMP nằm trong bộ nhớ tại địa chỉ 2040H và 2041H).
⇒Mã lệnh:

Lệnh inc trong vi xử lý

⇒Mô tả lệnh: xem hình 3.2.5.2.

Lệnh inc trong vi xử lý

6. Định địa chỉ tuyệt đối (Absolute Addressing):

  • Được sử dụng cho các lệnh ACALL và AJMP.
  • Địa chỉ tuyệt đối là một giá trị 11 bit.
  • Tầm nhảy giới hạn là: trong cùng trang 2K hiện hành(trang 2K chứa lệnh nhảy).
  • Số byte của lệnh: 2 byte.
  • Cấu trúc lệnh: 
    Lệnh inc trong vi xử lý

Ví dụ:  AJMP AAA  ⇒ Lệnh nhảy đến nhãn AAA (Giả sử: nhãn AAA đặt trước lệnh ở địa chỉ
0F46H, lệnh AJMP nằm trong bộ nhớ tại địa chỉ 0900H và 0901H).

⇒ Mã lệnh:

Lệnh inc trong vi xử lý

⇒ Mô tả lệnh:

Lệnh inc trong vi xử lý

7. Định địa chỉ dài (Long Addressing):

  • Được sử dụng cho các lệnh LCALL và LJMP.
  • Địa chỉ dài là một giá trị 16 bit.
  • Tầm nhảy giới hạn là: toàn bộ không gian nhớ 64K.
  • Số byte của lệnh: 3 byte.
  • Cấu trúc lệnh: 
    Lệnh inc trong vi xử lý

Ví dụ:  LJMP AAA ⇒ Lệnh nhảy ñến nhãn AAA (Giả sử: nhãn AAA đặt trước lệnh ở địa chỉ
A209H, lệnh LJMP nằm trong bộ nhớ tại địa chỉ 0100H, 0101H và 0102H).

⇒Mã lệnh: 

Lệnh inc trong vi xử lý

⇒Mô tả lệnh:

Lệnh inc trong vi xử lý

8. Định địa chỉ chỉ số (Indexed Addressing):

  • Được dùng trong các ứng dụng cần tạo các bảng nhảy hay các bảng tìm kiếm. Kiểu định địa chỉ này dùng một thanh ghi nền (PC hay DPTR) kết hợp với một offset(A) để tạo thành dạng địa chỉ hiệu dụng cho lệnh.
  • Số byte của lệnh: 1 byte.
  • Cấu trúc lệnh:
    Lệnh inc trong vi xử lý

Ví dụ: JMP @A+DPTR ⇒ Lệnh nhảy gián tiếp.

Chia sẻ:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)

Related

  • TAGS
  • lập trình 8051
  • tập lệnh 8051
  • vđk 08051

CHIA SẺ

Facebook

Twitter

  • tweet

Bài viết trướcTẬP LỆNH CỦA 8051 PHẦN 2

Bài kếChống trộm xe máy Modul Sim 900A

Lệnh inc trong vi xử lý

admin

Lệnh inc trong vi xử lý

VI ĐIỀU KHIỂN 8051

PWM động cơ sử dụng 89C51

Lệnh inc trong vi xử lý

VI ĐIỀU KHIỂN 8051

Cảnh báo nhiệt độ DS18B20 + AT89C2051

Lệnh inc trong vi xử lý

VI ĐIỀU KHIỂN 8051

CHƯƠNG 2: TÓM TẮT PHẦN CỨNG (PHẦN 3)

0 BÌNH LUẬN

Leave a Reply

Làm mạch điện tử theo yêu cầu

MỚI NHẤT

Lệnh inc trong vi xử lý

Phủ đồng trong Altium

admin -

17 Tháng Mười Hai, 2015

Lệnh inc trong vi xử lý
Lệnh inc trong vi xử lý

TỔNG QUAN VỀ CẤU TRÚC VÀ CHỨC NĂNG HỌ MSP430

15 Tháng Mười Hai, 2015


Warning: A non-numeric value encountered in /home/rdvietco/public_html/wp-content/themes/Newspaper/includes/wp_booster/td_block.php on line 257

PHẢI ĐỌC

Bài 4: Các mạch cơ bản

admin -

11 Tháng Một, 2016

Phím tắt trong Altium Designer

admin -

17 Tháng Mười Hai, 2015

Điều khiển 24 LED đơn ATMega16.

admin -

19 Tháng Mười Hai, 2015

Làm mạch điện tử theo yêu cầu

MỚI NHẤT

Lệnh inc trong vi xử lý

Phần mềm vẽ mạch điện – OrCad 9.2 và 10.5 Full

admin -

18 Tháng Mười Hai, 2015

Lệnh inc trong vi xử lý

Bài 3: Vi mạch số họ TTL

11 Tháng Một, 2016

Lệnh inc trong vi xử lý

Đếm sản phẩm cảm biến hồng ngoại hiển thị lcd16x2.

15 Tháng Mười Hai, 2015


Warning: A non-numeric value encountered in /home/rdvietco/public_html/wp-content/themes/Newspaper/includes/wp_booster/td_block.php on line 257

PHẢI ĐỌC

Phần mềm vẽ mạch điện – OrCad 9.2 và 10.5 Full

admin -

18 Tháng Mười Hai, 2015

Một số thủ thuật khi vẽ mạch với Altium

admin -

15 Tháng Mười Hai, 2015

Cách lắp tụ chống sét vào mạch

admin -

11 Tháng Một, 2016