Bài giảng Vi xử lý-Vi điều khiển - Chương 5: Vi xử lý 8086 - Phan Đình Duy (Phần 3)

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

pdf 59 trang phuongnguyen 6580
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 - Phan Đình Duy (Phần 3)", để 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 - Phan Đình Duy (Phần 3)

Bài giảng Vi xử lý-Vi điều khiển - Chương 5: Vi xử lý 8086 - Phan Đình Duy (Phần 3)
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:

  • pdfbai_giang_vi_xu_ly_vi_dieu_khien_chuong_5_vi_xu_ly_8086_phan.pdf