1 1 0 0 1 1 0 1 8 bit thấp 8 bit cao 1 1 0 0 1 1 0 1 8 bit thấp 8 bit cao Chương 8: NHÓM LỆNH GỌI 1. Lệnh gọi không điều kiện: + Cú pháp: CAAL ADDR + Mã đối tượng: + Ý nghóa: vi xử lý sẽ thực hiện chương trình tại đòa chỉ ADDR sau đó sẽ trở về chương trình chính khi gặp lệnh trở về. + Lệnh này chiếm 3 byte, số chu kỳ clock =18. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh gọi khi Z=0: + Cú pháp: CNZ ADDR + Mã đối tượng: + Ý nghóa: vi xử lý sẽ thực hiện chương trình tại ADDR khi bit Z=0, ngay sau khi thực hiện lệnh ảnh hưởng đến bit Z của thanh ghi trạng thái. Sau đó sẽ trở về chương trình chính khi gặp lệnh trở về. + Lệnh này chiếm 3 byte, số chu kỳ clock =9/18. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. ( Tương tự cho các lệnh khác). 3. Lệnh gọi khi bit Z=1: + Cú pháp: CZ ADDR 4. Lệnh gọi khi bit C=0: + Cú pháp: CNC ADDR 5. Lệnh gọi khi bit C=1: + Cú pháp: CC ADDR 6. Lệnh gọi khi bit P=0: + Cú pháp: CPO ADDR 7. Lệnh gọi khi bit P=1: + Cú pháp: CPE ADDR 8. Lệnh gọi khi bit S=0: + Cú pháp: CP ADDR 9. Lệnh gọi khi bit S=1: + Cú pháp: CM ADDR XVII. NHÓM LỆNH TRỞ VỀ TỪ CHƯƠNG TRÌNH CON: 1. Lệnh RET không điều kiện: + Cú pháp: RET + Mã đối tượng: + Ý nghóa: lệnh này sẻ kết thúc chương trình con, vi xử lý sẽ trở lại chương trình chính tiếp tục phần chương trình còn lại. + Lệnh này chiếm 1 byte, số chu kỳ xung clock=10. + Thanh ghi trạng thái không đổi. 2. Lệnh trở về khi Z=0: + Cú pháp: RNZ + Mã đối tượng: + Ý nghóa: lệnh này sẽ kết thúc chương trình con khi bit Z=0, vi xử lý sẽ trở lại chương trình chính tiếp tục phần chương trình còn lại, nếu không thỏa điều kiên chương trình con sẽ thực hiện các lệnh tiếp theo. + Lệnh này chiếm 1 byte, số chu kỳ clock=6/12. 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 + Thanh ghi trạng thái không thay đổi. ( Tương tự cho các lệnh khác). 3. Lệnh trở về khi Z=1: + Cú pháp: RZ 4. Lệnh trở về khi C=0: + Cú pháp: RNC 5. Lệnh trở về khi C=1: + Cú pháp: RC 6. Lệnh trở về khi P=0: + Cú pháp: RPO 7. Lệnh trở về khi P=1: + Cú pháp: RPE 8. Lệnh trở về khi S=0: + Cú pháp: RP 9. Lệnh trở về khi S=1: + Cú pháp: RM XVIII. NHÓM LỆNH DI CHUYỂN CẶP THANH GHI 1. Lệnh trao đổi nội dung 2 cặp thanh ghi: + Cú pháp : XCHG + Mã đối tượng: + Ý nghóa: nội dung cặp thanh ghi HL và DE được trao đổi cho nhau. Thanh ghi H trao đổi với D thanh ghi L trao đổi với E. + Lệnh này chiếm 1 byte, số chu kỳ xung clock = 4. + Thanh ghi trạng thái không thay đổi. ( Tương tự cho các lệnh khác ). 2. Lệnh trao đổi nội dung cặp thanh ghi với ô nhớ: + Cú pháp : XTHG 1 1 1 0 1 0 1 1 Bảng tra các thanh ghi: Register ddd or sss B 000 C 001 D 010 E 011 H 100 L 101 M 110 A 111 Bảng 2.1 3. Lệnh di chuyển nội dung cặp thanh ghi: + Cú pháp : SPHL 4. Lệnh nạp cặp thanh ghi PC : + Cú pháp : PCHL XIX. NHÓM LỆNH XUẤT NHẬP 1. Lệnh nhập dữ liệu từ port: + Cú pháp:IN port-addr + Mã đối tượng: + Ý nghóa: nhập nội dung của có đòa chỉ port-addr vào thanh ghi A. Đòa chỉ port-addr có độ dài 1 byte. + Lệnh này chiếm 2 byte, số chu kỳ xung clock = 10. + Thanh ghi trang thái không thay đổi. (Tương tự cho các lệnh khác). 2. Lệnh xuất dữ liệu ra port: + Cú pháp: OUT port-addr 3. Lệnh cho phép ngắt: + Cú pháp: EI 4. Lệnh không cho phép ngắt: + Cú pháp: DI 5. Lệnh read interrupt mask: + Cú pháp: RIM 6. Lệnh set interrupt mask: + Cú pháp: SIM XX. NHÓM LỆNH ĐẶC BIỆT: 1. Lệnh nghòch đảo nội dung thanh ghi A: 1 1 0 1 1 0 1 1 port - addr + Cú pháp:CMA 2. Lệnh đặt bit carry: + Cú pháp:STC 3. Lệnh nghòch đảo bit carry: + Cú pháp:CMC 4. Lệnh điều chỉnh thập phân: + Cú pháp:DAA 5. Lệnh nop: + Cú pháp:NOP 6. Lệnh dừng: + Cú pháp:HLT XXI. VÍ DỤ MINH HỌA TẬP LỆNH: Chương trình nhấp nháy chuỗi "-HÀ-NỘI-" trên 8 led: Org 7108h ;đòa chỉ bắt đầu nhập mã chuổi Db, 40h, 76h, 77h, 40h, 37h, 3fh, 30h, 40, ;khai báo mã của chuỗi Org 6200h Vd1: lxi h, 7108h ;nạp đòa chỉ quản lý dữ liệu vào thanh ghiHL Mvi c, 08h ;làm biến đếm cho chương trình hiển thò Vd2: mov a, m ;lấy dữ liệu Sta 0a000h ;gởi ra led hiển thò Inr l ;tăng lên 1 để lấy byte tiếp theo Dcr c ;giảm biến đếm Jnz vd2 ;nhảy về vd2 khi chưa gởi đủ 8 byte Mvi a, 01h ;nạp thời hằng delay1 giây Call 0310h ;gọi chương trình con delay Mvi c, 08h ;làm biến điếm cho chương trình xóa Mvi a, 00h ;nạp 00 vào A Vd3 sta 0a000h ;gởi ra led để xóa Dcr c ;giảm biến đếm Jnz vd3 ;quay lại vd3 nếu chưa xóa đủ 8 led Mvi 0, 01h ;nạp thời hằng delay Call 0310h ;gọi chương trình delay Jmp vd1 ;quay lại làm lại chu kỳ kế. . 1 8 bit thấp 8 bit cao 1 1 0 0 1 1 0 1 8 bit thấp 8 bit cao Chương 8: NHÓM LỆNH GỌI 1. Lệnh gọi không điều kiện: + Cú pháp: CAAL ADDR + Mã đối tượng: + Ý nghóa: vi xử lý sẽ thực hiện chương. vd2 khi chưa gởi đủ 8 byte Mvi a, 01h ;nạp thời hằng delay1 giây Call 0310h ;gọi chương trình con delay Mvi c, 08h ;làm biến điếm cho chương trình xóa Mvi a, 00h ;nạp 00 vào A Vd3 sta 0a000h. tượng: + Ý nghóa: lệnh này sẽ kết thúc chương trình con khi bit Z=0, vi xử lý sẽ trở lại chương trình chính tiếp tục phần chương trình còn lại, nếu không thỏa điều kiên chương trình con sẽ thực