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 lệnh: CJNE <dest-byte>, <src-byte>, rel
Chức 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 lệnh Số
byte
Số
chu kỳ
Mã lệnh Hoạt độ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í dụ 1: 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 HỌC KỸ THUẬT VI ĐIỀU KHIỂN
KHOA ĐIỆN –ĐIỆN TỬ - ĐHSPKT-HY_12/2004 Trang 73