Bài giảng Vi xử lý & Vi điều khiển - Chương 5: Vi xử lý 8086 (Phần 3) - Duy Phan
Mục tiêu
Hiểu được tập lệnh assemply của vi xử
lý 8086
Biết được các bước lập trình với VXL
8086
Biết được cấu trúc chung của một
chương trình ASM trên 8086
Biết và sử dụng được các cấu trúc
điều khiển cơ bản
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý & Vi điều khiển - Chương 5: Vi xử lý 8086 (Phần 3) - Duy Phan", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Vi xử lý & Vi điều khiển - Chương 5: Vi xử lý 8086 (Phần 3) - Duy Phan
09/2015Duy Phan Chương 5: Vi xử lý 8086-3 2 Họ vi điều khiển 8051Duy Phan Mục tiêu Hiểu được tập lệnh assemply của vi xử lý 8086 Biết được các bước lập trình với VXL 8086 Biết được cấu trúc chung của một chương trình ASM trên 8086 Biết và sử dụng được các cấu trúc điều khiển cơ bản 3 Họ vi điều khiển 8051Duy Phan Nội dung Lập trình hợp ngữ cho bộ vi xử lý 8086 Tập lệnh ASM Cấu trúc chung của chương trình Các cấu trúc điều khiển cơ bản 4 Họ vi điều khiển 8051Duy Phan Các lệnh vận chuyển dữ liệu Các lệnh tính toán số học Các lệnh tính toán logic Các lệnh dịch quay toán hạng Các lệnh nhảy Các lệnh lặp Các lệnh điều khiển, đặc biệt khác Tập lệnh Assemply 5 Họ vi điều khiển 8051Duy Phan 1. MOV Đích, Nguồn Toán hạng Đích và Nguồn có thể định địa chỉ theo nhiều kiểu khác nhau nhưng phải có cùng độ dài và không được phép đồng thời là 2 ô nhớ hoặc hai thanh ghi đoạn VD: MOV AL,AH MOV CX, 50 MOV DL, [SI] Các lệnh vận chuyển dữ liệu 6 Họ vi điều khiển 8051Duy Phan 2. OUT Port, Acc Trong đó Port là địa chỉ cổng, có 8bit. Nếu Acc là AL thì dữ liệu 8 bit được đưa ra ở Port. Nếu Acc là AX thì dữ liệu 16 bit được đưa ra ở Port và Port + 1. Có thể dùng DX để thay thế cho Port -> 0000H < Port <FFFFH VD: OUT 45H, AL MOV DX, 005FH OUT DX, AX Các lệnh vận chuyển dữ liệu (tt) 7 Họ vi điều khiển 8051Duy Phan 3. IN Acc, Port Trong đó Port là địa chỉ cổng, có 8bit. Truyền 1 byte hoặc 1 word từ cổng tới thanh ghi Có thể dùng DX để thay thế cho Port -> 0000H < Port <FFFFH VD: OUT 45H, AL MOV DX, 005FH MOV DX, AX Các lệnh vận chuyển dữ liệu (tt) 8 Họ vi điều khiển 8051Duy Phan 4. POP Đích Lấy 1 từ ở đỉnh ngăn xếp vào thanh ghi 5. PUSH Nguồn Cất 1 từ vào đỉnh ngăn xếp VD: POP DX PUSH BX Các lệnh vận chuyển dữ liệu (tt) 9 Họ vi điều khiển 8051Duy Phan 6/7. ADC/ADD Đích, Nguồn Cộng 2 toán hạng Đích và Nguồn (ADC với cờ CF) kết quả lưu vào đích Các cờ bị thanh đổi: AF, CF, OF, PF, SF, ZF VD: ADC AL, 74H ADC CL,BL ADC DL,[SI] Các lệnh tính toán số học 10 Họ vi điều khiển 8051Duy Phan 8. SUB Đích, Nguồn Toán hạng Đích và Nguồn phải cùng loại dữ liệu và không được đồng thời là hai ô nhớ hoặc thanh ghi đoạn Các cờ bị thanh đổi: AF, CF, OF, PF, SF, ZF VD: SUB AL, 74H SUB CL,BL SUB DL,[SI] Các lệnh tính toán số học (tt) 11 Họ vi điều khiển 8051Duy Phan 9. MUL Nguồn Thực hiện phép nhân không dấu thanh ghi tích lũy với toán hạng nguồn Nếu nguồn là số 16bit thì tích lưu vào DXAX Các cờ bị thanh đổi: CF, OF VD: MUL CX MUL BL Các lệnh tính toán số học (tt) 12 Họ vi điều khiển 8051Duy Phan 10. DIV Nguồn Toán hạng Nguồn là số chia. Nếu Nguồn là 8bit thì phép chia là AX/Nguồn, thương là AL, số dư là AH Nếu Nguồn là 16bit thì phép chia là DXAX/Nguồn, thương là AX và số dư là DX Nếu Nguồn = 0 hoặc thương lớn hơn FFH (FFFFH) thì 8086 thực hiện INT0 VD: MOV AX, 0033H MOV BL, 25 DIV BL Các lệnh tính toán số học (tt) 13 Họ vi điều khiển 8051Duy Phan 11. DEC Đích Trừ toán hạng Đích đi 1 12. INC Đích Tăng toán hạng Đích thêm 1 Các cờ bị thanh đổi: AF, OF, PF, SF, ZF VD: MOV BX, 1200H DEC BX INC BH Các lệnh tính toán số học (tt) 14 Họ vi điều khiển 8051Duy Phan 13. NEG Đích Lấy 0 trừ đi toán hạng Đích, lưu kết quả vào đích Các cờ bị thanh đổi: AF, CF, OF, PF, SF, ZF VD: MOV BX, 1234H NEG BX Các lệnh tính toán số học (tt) 15 Họ vi điều khiển 8051Duy Phan 14. AND Đích, Nguồn AND toán hạng Đích và Nguồn, lưu kết quả vào Đích 15. OR Đích, Nguồn OR toán hạng Đích và Nguồn, lưu kết quả vào Đích Các cờ bị thanh đổi: CF, OF, PF, SF, ZF VD: AND AL, 0FH OR CL, 30H Các lệnh tính toán logic 16 Họ vi điều khiển 8051Duy Phan 16. NOT Đích Đảo giá trị các bit của toán hạng Đích Các cờ bị thanh đổi: không có cờ nào bị thay đổi VD: MOV AL, 53H NOT AL Các lệnh tính toán logic 17 Họ vi điều khiển 8051Duy Phan 17. RCL Đích, CL Quay toán hạng Đích sang trái thông qua cờ CF; CL là số lần quay. Các cờ bị thanh đổi: CF, OF, SF, ZF, PF VD: MOV CL, 5 RCL AL, CL RCL BL, 1 RCL BL, 2 Các lệnh dịch quay toán hạng 18 Họ vi điều khiển 8051Duy Phan 18. RCR Đích, CL Quay toán hạng Đích sang phải thông qua cờ CF; CL là số lần quay. Các cờ bị thanh đổi: CF, OF, SF, ZF, PF VD: MOV CL, 4 RCR AL, CL RCR BL, 1 RCR BL, 2 Các lệnh dịch quay toán hạng (tt) 19 Họ vi điều khiển 8051Duy Phan 19/20. ROL/ROR Đích, CL Quay toán hạng Đích sang trái/ phải; CL là số lần quay. CF = MSB/LSB sau mỗi lần quay Các cờ bị thanh đổi: CF, OF, SF, ZF, PF VD: MOV CL, 4 ROL AL, CL ROR BL, 1 ROR BL, 2 Các lệnh dịch quay toán hạng (tt) 20 Họ vi điều khiển 8051Duy Phan 21/22. SHL/SHR Đích, CL Dịch trài/phải toán hạng Đích; CL là số lần dịch. CF = MSB/LSB sau mỗi lần dịch Bit 0 sẽ đưa vào LSB/MSB Các cờ bị thanh đổi: CF, OF, SF, ZF, PF VD: MOV CL, 4 SHL AL, CL SHR BL, 1 SHR BL, 2 Các lệnh dịch quay toán hạng (tt) 21 Họ vi điều khiển 8051Duy Phan 23. XOR Đích, Nguồn Thực hiện lệnh XOR giữa 2 toán hạng Kết quả = 1 nếu 2 toán hạng đối nhau Kết quả = 0 nếu 2 toán hạng bằng nhau Các cờ bị thanh đổi: CF, OF, SF, ZF, PF, PF VD: XOR AX, AX XOR BX, BX MOV AX, 5857H XOR AX, BX Các lệnh dịch quay toán hạng (tt) 22 Họ vi điều khiển 8051Duy Phan 24. CMP Đích, Nguồn Thực hiện trừ toán hạng Đích cho toán hạng Nguồn như không lưu kết quả Các cờ bị thanh đổi: AF, CF, OF, SF, ZF, PF Các lệnh nhảy So sánh CF ZF Đích = Nguồn 0 1 Đích > Nguồn 0 0 Đích < Nguồn 1 0 23 Họ vi điều khiển 8051Duy Phan 25. JA/JNBE Nhãn Nhảy đến Nhãn nếu CF + ZF = 0 (lớn hơn) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12ABH CMP AX, 12ABH JA HET GIO Các lệnh nhảy (tt) 24 Họ vi điều khiển 8051Duy Phan 26. JAE/JNB/JNC Nhãn Nhảy đến Nhãn nếu CF = 0 (lớn hơn hoặc bằng) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12AAH CMP AX, 12ABH JA E HET GIO Các lệnh nhảy (tt) 25 Họ vi điều khiển 8051Duy Phan 27. JB/JC/JNAE Nhãn Nhảy đến Nhãn nếu CF = 1 (nhỏ hơn) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12ACH CMP AX, 12ABH JB HET GIO Các lệnh nhảy (tt) 26 Họ vi điều khiển 8051Duy Phan 28. JBE/JNA Nhãn Nhảy đến Nhãn nếu CF + ZF = 1 (nhỏ hơn) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12ACH CMP AX, 12ABH JBE HET GIO Các lệnh nhảy (tt) 27 Họ vi điều khiển 8051Duy Phan 29. JE/JZ Nhãn Nhảy đến Nhãn nếu ZF = 1 (bằng nhau) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12ACH CMP AX, 12ABH JE HET GIO Các lệnh nhảy (tt) 28 Họ vi điều khiển 8051Duy Phan 30. JNE/JNZ Nhãn Nhảy đến Nhãn nếu ZF = 0 (bằng nhau) Nhãn nằm trong khoảng -128 đến +127 VD: MOV AX, 12ABH CMP AX, 12ABH JNE HET GIO Các lệnh nhảy (tt) 29 Họ vi điều khiển 8051Duy Phan 31. JMP Nhãn Nhảy đến Nhãn không điều kiện Nhảy ngắn : -128 đến + 127 Nhảy gần: - 32768 đến + 32767 Nhảy xa: đoạn mã khác VD: JMP SHORT HET GIO JMP NEAR HET GIO JMP HET GIO Các lệnh nhảy (tt) 30 Họ vi điều khiển 8051Duy Phan 32. LOOP Nhãn Dùng để lặp lại đoạn chương trình từ Nhãn đến hết lệnh loop Nhãn khi CX #0 Trước khi vào vòng lặp cần phải nạp CX, sau mỗi lần lặp CX giảm 1 Nhãn phải nằm các LOOP tối đa -128 byte VD: MOV AL, 20 MOV CX, 10 LAP: INC AL LOOP LAP Các lệnh lặp Đoạn lệnh này lặp bao nhiêu lần? 31 Họ vi điều khiển 8051Duy Phan 33. LOOPE/LOOPZ Nhãn Dùng để lặp lại đoạn chương trình từ Nhãn đến hết lệnh loop Nhãn khi CX # 0 và ZF = 1 Trước khi vào vòng lặp cần phải nạp CX, sau mỗi lần lặp CX giảm 1 Nhãn phải nằm các LOOP tối đa -128 byte VD: MOV AX, 2015H MOV CX, 30 LAP: DEC AH COMP AL, AH LOOPE LAP Các lệnh lặp (tt) Đoạn lệnh này lặp bao nhiêu lần? 32 Họ vi điều khiển 8051Duy Phan 34. LOOPNE/LOOPNZ Nhãn Dùng để lặp lại đoạn chương trình từ Nhãn đến hết lệnh loop Nhãn khi CX =#0 và ZF = 0 Trước khi vào vòng lặp cần phải nạp CX, sau mỗi lần lặp CX giảm 1 Nhãn phải nằm các LOOP tối đa -128 byte VD: MOV AX, 2015H MOV CX, 30 LAP: DEC AH CMP AL, AH LOOPN E LAP Các lệnh lặp (tt) Đoạn lệnh này lặp bao nhiêu lần? 33 Họ vi điều khiển 8051Duy Phan 35. CALL Nhãn chương trình con Dùng để chuyển hoạt động của vi xử lý từ chương trình chính sang chương trình con VD: ORG 100h ; for COM file. CALL p1 ADD AX, 1 RET ; return to OS. p1 PROC ; procedure declaration. MOV AX, 1234h RET ; return to caller. p1 ENDP Các lệnh điều khiển, đặc biệt khác 34 Họ vi điều khiển 8051Duy Phan 36. INT N Lệnh gọi chương trình con phục vụ ngắt Bảng vector ngắt 1KB từ 00000H đến 003FFH Có 256 ngắt (N từ 00H – FFH) Mỗi vector có 4 byte chứa IP và CS của CT phục vụ ngắt 32 vector đầu dành cho Intel 224 vector tiếp theo dành cho người dùng Các lệnh điều khiển, đặc biệt khác (tt) 35 Họ vi điều khiển 8051Duy Phan Các lệnh điều khiển, đặc biệt khác (tt) 36 Họ vi điều khiển 8051Duy Phan 37. IRET Trở về chương trình chính từ chương trình con phục vụ ngắt Các lệnh điều khiển, đặc biệt khác (tt) 37 Họ vi điều khiển 8051Duy Phan THỰC HIỆN LỆNH INT Cất thanh ghi cờ vào Stack IF = 0 cấm các ngắt khác tác động TF = 0 chạy suốt chương trình ngắt Cất CS và IP vào Stack IP = [N*4], CS = [N*4 + 2] Thực hiện chương trình ngắt Quy trình thực hiện lệnh INT và IRET 38 Họ vi điều khiển 8051Duy Phan THỰC HIỆN LỆNH IRET Lấy IP từ Stack Lấy CS từ Stack Lấy thanh ghi cờ từ Stack Thực hiện chương trình chính trước đó Quy trình thực hiện lệnh INT và IRET 39 Họ vi điều khiển 8051Duy Phan 38. RET / RET N Trở về chương trình chính từ chương trình con RET N dùng để nhảy qua các giá trị của chương trình con trong stack Các lệnh điều khiển, đặc biệt khác (tt) 40 Họ vi điều khiển 8051Duy Phan 39. STC Dùng để thiết lập cờ nhớ CF = 1 40. NOP Không làm gì Tăng nội dung IP và tiêu tốn 3 chu kỳ clock Các lệnh điều khiển, đặc biệt khác (tt) 41 Họ vi điều khiển 8051Duy Phan Cú pháp của chương trình hợp ngữ Dữ liệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ Các bước lập trình 42 Họ vi điều khiển 8051Duy Phan Cú pháp của chương trình hợp ngữ 43 Họ vi điều khiển 8051Duy Phan Hệ số 2: 00110B Hệ số 10: 1234 Hệ số 16: 1EFDH, 0ABCEH Ký tự, chuỗi ký tự: ‘A’, ‘mhd’ Dữ liệu cho chương trình 44 Họ vi điều khiển 8051Duy Phan Biến và hằng 45 Họ vi điều khiển 8051Duy Phan Biến và hằng (tt) 46 Họ vi điều khiển 8051Duy Phan Biến và hằng (tt) 47 Họ vi điều khiển 8051Duy Phan Biến và hằng (tt) 48 Họ vi điều khiển 8051Duy Phan Khai báo quy mô sử dụng bộ nhớ .MODEL kiểu kích thước bộ nhớ Ví dụ: .MODEL Small Khung của một chương trình hợp ngữ 49 Họ vi điều khiển 8051Duy Phan Khai báo đoạn ngăn xếp .Stack kích thước (bytes) Khai báo đoạn dữ liệu .Data Khai báo đoạn mã . Code Khung của một chương trình hợp ngữ (tt) 50 Họ vi điều khiển 8051Duy Phan Khung của một chương trình hợp ngữ (tt) 51 Họ vi điều khiển 8051Duy Phan Khung của một chương trình hợp ngữ (tt) 52 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản If điều kiện then công việc Ví dụ: Gán cho BX giá trị tuyệt đối của AX 53 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản If điều kiện then công việc1 else công việc 2 Ví dụ: Nếu AX<BX thì CX = 0 ngược lại CX =1 54 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản Case Biểu thức Giá trị 1: công việc 1 Giá trị n: công việc n END CASE Ví dụ: Nếu AX<0 thì CX = -1 Nếu AX=0 thì CX = 0 Nếu AX>0 thì CX = 1 55 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản For số lần lặp Do công việc Ví dụ: Hiển thị 1 dòng ký tự $ trên màn hình 56 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản While điều kiện Do công việc Ví dụ: Đếm số ký tự đọc được từ bàn phím đến khi gặp ký tự CR thì thôi 57 Họ vi điều khiển 8051Duy Phan Các cấu trúc điều khiển cơ bản Repeat điều kiện Until công việc Ví dụ: Đọc từ bàn phím cho tới khi gặp ký tự CR thì thôi 58 Họ vi điều khiển 8051Duy Phan Ôn tập Tập lệnh ASM Cấu trúc chung của chương trình Các cấu trúc điều khiển cơ bản 09/2015Duy Phan Kết thúc chương 5-3
File đính kèm:
- bai_giang_vi_xu_ly_vi_dieu_khien_chuong_5_vi_xu_ly_8086_phan.pdf