Lệnh nhảy nếu 2 toán hạng không bằng nhau

Một phần của tài liệu Giáo trình kỹ thuật vi điều khiển (Trang 75 - 76)

i Định địa chỉ gán tếp thông qua R0 hoặc R

3.6.14. Lệnh nhảy nếu 2 toán hạng không bằng nhau

Cú pháp câu lnh: CJNE <dest-byte>, <src-byte>, rel

Chc năng: So sánh giá trị của 2 toán hạng đầu tiên, nếu 2 toán hạng không bằng nhau thì chương trình được rẽ nhánh. Địa chỉ đích rẽ nhánh được tính bằng cách cộng độ lệch tương đối (có dấu) trong byte sau cùng của lệnh với nội dung của PC (sau khi nội dung của PC được tăng đến địa chỉ bắt đầu của lệnh kế tiếp CJNZ). Cờ nhớ (CF) sẽ được thiết lập nếu như giá trị nguyên không dấu của toán hạng đích nhỏ hơn giá trị nguyên không dấu của toán hạng nguồn, ngược lại thì cờ này bị xoá. Lệnh này không làm thay đổi giá trị của các toán hạng

Câu lnh S

byte

S

chu k

Mã lnh Hot động

CJNE A, direct, rel 3 2 10110101 aaaaaaaa eeeeeeee

(PC)<-(PC)+3

Nếu (A) < > (dir.) thì: (PC)<- (PC) + offset

Nếu (A) < (dir.) thì C =1 Ngược lại thì C =1

CJNE A, #data, rel 3 2 10110100 dddddddd eeeeeeee

(PC)<-(PC)+3

Nếu (A) < > #data thì: (PC)<- (PC) + offset Nếu (A) < #data thì C=1 Ngượclại: C =0

CJNE Rn, #data, rel 3 2 10111rrr dddddddd eeeeeeee (PC)<-(PC)+3 Nếu (Rn)< >#data thì:(PC)<- (PC) + offset Nếu (Rn) < #data thì: C =1 Ngượclại: C =0

CJNE @Ri, #data, rel 3 2 1011011i dddddddd eeeeeeee

(PC)<-(PC)+3

Nếu ((Ri))< >#data thì: (PC)<- (PC) + offset Nếu ((Ri)) < #data thì:

C = 1 Ngượclại: C =0

Ví d1: Dịch trái thanh ghi A 7 lần.

MOV MOV

R1,#0 A,#01h

; Đặt giá trị ban đầu cho biến đếm ; Đặt giá trị ban đầu cho A

Lap: RL A ; Dịch trái A

INC R1 ; Tăng biến đếm lên 1 đơn vị

CJNE R1,#7,lap ; Kiểm tra số lần dịch trái A

END ; Kết thúc chương trình

ĐỀ CƯƠNG MÔN HC KTHUT VI ĐIU KHIN

KHOA ĐIN ĐIN TỬ - ĐHSPKT-HY_12/2004 Trang 73

Một phần của tài liệu Giáo trình kỹ thuật vi điều khiển (Trang 75 - 76)

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

(84 trang)