Tập lệnh vi xử lý 8085/8088

- Mã gợi nhớ giúp cho người sử dụng biết hoạt động của lệnh. Mã gợi nhớ thường là

các chữ tiếng anh viết tắt như : MOV là lệnh chuyển, ADD là lệnh cộng, AND là lệnh

và luận lý, JMP là lệnh nhảy . . .

- Toán hạng đích giữ kết quả (nếu có yêu cầu) sau khi thi hành lệnh. Toán hạng đích

có thể là thanh ghi hay bộ nhớ.

- Toán hạng nguồn có thể là thanh ghi, bộ nhớ hay một số tức thời.

- Toán hạng thanh ghi là các thanh ghi của vi xử lý 86 gồm các thanh ghi tổng quát (8

bit lẫn 16 bit) và các thanh ghi đoạn đã biết

pdf24 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 391 | Lượt tải: 1download
Tóm tắt nội dung Tập lệnh vi xử lý 8085/8088, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
OF DF IF SF ZF AF PF CF
Đại học Bách khoa tp.HCM Biên soạn : Nguyễn Xuân Minh 
TẬP LỆNH 8086/8088 Tổ chức và cấu trúc máy tính Tr.45
- Dạng lệnh trở về có toán hạng immed8 dùng cho các chương trình con có sử dụng 
thông số trong chồng. Khi đó, toán hạng nguồn immed8 sẽ được cộng vào thanh 
ghi SP để chỉnh lại vị trí đỉnh chồng sau khi gọi chương trình con, tránh thất thoát 
bộ nhớ dùng cho chồng. 
6.4 Lệnh nhảy có điều kiện : 
- Dạng lệnh : Jcond shortlabel 
- Giải thích : Nếu thỏa điều kiện thì nhảy tương đối 
IP ← địa chỉ lệnh kế + độ dời (mở rộng dấu 16 bit) 
ngược lại không làm gì cả (qua lệnh kế). 
- Tác động cờ : 
- Lệnh nhảy có điều kiện dùng trạng thái các cờ để làm điều kiện. 
- Sau đây là bảng mã lệnh nhảy có điều kiện cùng với điều kiện nhảy. 
Mã lệnh Giải thích Điều kiện 
JE/JZ Nhảy nếu bằng/không ZF = 1 
JL/JNGE Nhảy nếu nhỏ hơn/không lớn hơn hoặc bằng (SF xor OF) = 1 
JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng /không lớn hơn ((SF xor OF) or ZF) = 1 
JB/JNAE/JC Nhảy nếu dưới /không trên hoặc bằng/nhớ CF = 1 
JBE/JNA Nhảy nếu dưới hoặc bằng /không trên (CF or ZF) = 1 
JP/JPE Nhảy nếu kiểm tra / kiểm tra chẳn PF = 1 
JO Nhảy nếu tràn OF = 1 
JS Nhảy nếu dấu SF = 1 
JNE/JNZ Nhảy nếu không bằng/khác không ZF = 0 
JNL/JGE Nhảy nếu không nhỏ hơn/lớn hơn hoặc bằng (SF xor OF) = 0 
JNLE/JG Nhảy nếu không nhỏ hơn hoặc bằng /lớn hơn ((SF xor OF) or ZF) = 0 
JNB/JAE/JNC Nhảy nếu không dưới /trên hoặc bằng/không nhớ CF = 0 
JNBE/JA Nhảy nếu không dưới hoặc bằng /trên (CF or ZF) = 0 
JNP/JPO Nhảy nếu không kiểm tra / kiểm tra lẻ PF = 0 
JNO Nhảy nếu không tràn OF = 0 
JNS Nhảy nếu không dấu SF = 0 
- Ví dụ : MOV CX,3 ; thực hiện một vòng lặp làm 3 lần. 
MOV AX,0 
Nhan: ADD AX,12 
DEC CX 
JNZ Nhan ; nhảy đến lệnh tại vị trí “Nhan” nếu CX ≠ 0. 
MOV [3000h],AX 
6.5 Lệnh LOOP : 
♣ Dạng lệnh 1 : LOOP shortlabel 
- Giải thích : giảm CX, lặp vòng (nhảy) nếu CX ≠ 0 
IP ← địa chỉ lệnh kế + dộ dời (mở rộng dấu 16 bit) 
- Tác động cờ : 
- Lập vòng không điều kiện. CX giữ số lần lặp. Rất tiện dụng trong việc tạo ra các 
vòng lặp. Chẳng hạn như ví dụ trong phần lệnh nhảy có điều kiện có thể viết lại 
gọn hơn như sau : 
MOV CX,3 
MOV AX,0 
Nhan: ADD AX,12 
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
Biên soạn : Nguyễn Xuân Minh Đại học Bách khoa tp.HCM 
Tr.46 Tổ chức và cấu trúc máy tính TẬP LỆNH 8086/8088
LOOP Nhan 
MOV [3000h],AX 
- Một trong những ứng dụng phổ biến của lệnh lặp vòng là tạo ra các vòng làm trễ. 
- Ví dụ : MOV CX,10 
Nhan: LOOP Nhan ; vòng lặp làm 10 lần lệnh LOOP 
MOV CX,0 
Nhan: LOOP Nhan ; vòng lặp làm 65536 lần lệnh LOOP 
♣ Dạng lệnh 2 : LOOPE/LOOPZ shortlabel 
- Giải thích : giảm CX, lặp vòng (nhảy) nếu CX ≠ 0 và ZF = 1 
IP ← địa chỉ lệnh kế + dộ dời (mở rộng dấu 16 bit) 
- Tác động cờ : 
- Lập vòng nếu bằng / nếu không. Hai điều kiện CX ≠ 0 và ZF = 1 phải thỏa đồng 
thời thì lệnh mới lặp vòng. Nếu không, không làm gì cả (qua lệnh kế). 
- Đôi khi người ta xét các điều kiện để không lặp còn gọi là điều kiện thoát khỏi 
vòng lặp : CX = 0 hay ZF = 0. Có thể xem đó là các nguyên nhân gây ra kết thúc 
vòng lặp. 
♣ Dạng lệnh 3 : LOOPNE/LOOPNZ shortlabel 
- Giải thích : giảm CX, lặp vòng (nhảy) nếu CX ≠ 0 và ZF = 0 
IP ← địa chỉ lệnh kế + dộ dời (mở rộng dấu 16 bit) 
- Tác động cờ : 
- Lâp vÎng näu khéng bÙng / näu kh¾c khéng. Hai ½iåu kièn CX ≠ 0 và ZF = 0 
phải thỏa đồng thời thì lệnh mới lặp vòng. Nếu không, không làm gì cả (qua lệnh 
kế). 
- Đôi khi người ta xét các điều kiện để không lặp còn gọi là điều kiện thoát khỏi 
vòng lặp : CX = 0 hay ZF = 1. Có thể xem đó là các nguyên nhân gây ra kết thúc 
vòng lặp. 
6.6 Lệnh JCXZ : 
- Dạng lệnh : JCXZ shortlabel 
- Giải thích : Nếu CX = 0 thì 
IP ← địa chỉ lệnh kế + dộ dời (mở rộng dấu 16 bit) 
- Tác động cờ : 
- Nhảy nếu CX=0. Thường dùng sau LOOPE, LOOPNE, REPE, REPNE để xác 
định nguyên nhân kết thúc vòng lặp. 
- Ví dụ : REPE CMPSB ; so sánh 2 chuỗi 
JCXZ nhan 
( đoạn chương trình xử lý cho trường hợp chuỗi khác nhau) 
nhan: ( đoạn chương trình xử lý cho trường hợp chuỗi giống nhau) 
6.7 Lệnh INT : 
- Dạng lệnh : INT immed8 
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
Đại học Bách khoa tp.HCM Biên soạn : Nguyễn Xuân Minh 
TẬP LỆNH 8086/8088 Tổ chức và cấu trúc máy tính Tr.47
INT 3 
- Giải thích : PUSHF 
PUSH CS 
PUSH IP 
CS ← [(số ngắt * 4)+3, (số ngắt * 4)+2] 
IP ← [(số ngắt * 4)+1, (số ngắt * 4)] 
- Tác động cờ : 
- Ngắt quãng mềm. Thực chất của lệnh ngắt quãng là gọi đến một chương trình con 
đặc biệt gọi là chương trình phục vụ ngắt quãng. 
- Cách thực hiện lệnh ngắt quãng chính là cách gọi xa gián tiếp qua bộ nhớ 32 bit. 
- Số ngắt 1 byte immed8 cung cấp trong lệnh chính là số thứ tự của chương trình 
con phục vụ ngắt quãng. Nhờ vậy nên mặc dù lệnh ngắt quãng là lệnh gọi xa 
nhưng lại rất ngắn. 
- Bảng nhảy trong trường hợp này được gọi là bảng vector ngắt quãng. Vị trí của 
vector ngắt quãng được xác định bằng cách lấy số ngắt nhân 4. Kết quả này có thể 
xem là địa chỉ vật lý cũng được hoặc là địa chỉ offset lấy theo segment 0000 cũng 
được. 
- Điểm khác biệt giữa lệnh ngắt quãng và lệnh gọi xa là thao tác cất thanh ghi trạng 
thái (cờ) vào chồng PUSHF. Chính vì thế nên chương trình con phục vụ ngắt 
quãng phải được kết thúc bằng một lệnh trở về khác là IRET. 
- Các chương trình con phục vụ ngắt quãng thường được dùng cho các chương trình 
hệ thống (hệ điều hành, chương trình giao tiếp với các thiết bị, các chương trình 
con sử dụng thường xuyên, ...) hơn là dùng cho chương trình của người sử dụng. 
- Số ngắt cũng theo qui ước của hệ thống như sau : 
00h ÷ 07h : ngắt hệ thống. 
08h ÷ 0Fh, 70h ÷ 77h : ngắt cứng. 
Còn lại : ngắt mềm. 
- Một số ngắt thông dụng : 
INT 10h : màn hình. 
INT 13h : đĩa. 
INT 14h : thông tin liên lạc. 
INT 16h : bàn phím. 
INT 17h : máy in 
INT 21h : các phục vụ của MS-DOS. 
INT 20h : kết thúc chương trình, trở về DOS. 
- Mỗi chương trình con phục vụ ngắt quãng có thể thực hiện nhiều chức năng bên 
trong nghĩa là các phục vụ được chia nhỏ ra nữa. Ví dụ ngắt phục vụ màn hình có 
chức năng chọn chế độ màn hình, chức năng định vị điểm nháy (cursor), chức 
năng xuất ký tự ra màn hình, chức năng đồ họa, . . . 
- Thông số của chương trình phục vụ ngắt quãng thường được truyền thông qua các 
thanh ghi đầu vào (input) và k?t qu? thi hành chương trình con sẽ giữ trong các 
thanh ghi đầu ra (output). 
- Ví dụ : dùng ngắt 17h, chức năng 0 để xuất ký tự ra máy in. 
Input : AH = số chức năng (trong trường hợp này là 0). 
AL = ký tự cần in (mã ASCII). 
DX = số thứ tự máy in (0=LPT1, 1=LPT2, . . .) 
Output : AL = trạng thái 
Bit Ý nghĩa (nếu = 1) 
OF DF IF SF ZF AF PF CF
 0
Biên soạn : Nguyễn Xuân Minh Đại học Bách khoa tp.HCM 
Tr.48 Tổ chức và cấu trúc máy tính TẬP LỆNH 8086/8088
0 Quá thời gian đợi máy in. 
1,2 Không dùng. 
3 Lỗi xuất nhập. 
4 Máy in đang được chọn. 
5 Hết giấy. 
6 Máy in đã nhận ký tự. 
7 Máy in không bận. 
- Như vậy để in ký tự 'A' ra máy in ta viết đoạn chương trình sau : 
MOV AH,0 ; nạp số chức năng. 
MOV AL,041h ; mã ASCII của ký tự 'A'. 
MOV DX,0 ; nạp số thứ tự máy in LPT1. 
INT 17h ; gọi ngắt 17h để in. 
MOV [3000h],AL ; cất trạng thái máy in. 
6.8 Lệnh INTO : 
- Dạng lệnh : INTO 
- Giải thích : PUSHF 
PUSH CS 
PUSH IP 
- Tác động cờ : 
- Ngắt quãng nếu tràn (OF = 1). 
6.9 Lệnh IRET : 
- Dạng lệnh : IRET 
- Giải thích : POP IP 
POP CS 
POPF 
- Tác động cờ : 
- Trở về từ chương trình phục vụ ngắt quãng. 
7. Điều khiển bộ xử lý : 
7.1 Lệnh CLC : 
- Dạng lệnh : CLC 
- Giải thích : CF ← 0 
- Tác động cờ : 
- Xóa cờ nhớ về 0. 
7.2 Lệnh STC : 
- Dạng lệnh : STC 
- Giải thích : CF ← 1 
- Tác động cờ : 
- Lập cờ nhớ lên 1. 
7.3 Lệnh CMC : 
- Dạng lệnh : CMC 
- Giải thích : CF ← bù 1 của CF 
- Tác động cờ : 
OF DF IF SF ZF AF PF CF
 0
OF DF IF SF ZF AF PF CF
 1
OF DF IF SF ZF AF PF CF
 ×
OF DF IF SF ZF AF PF CF
 × ×
OF DF IF SF ZF AF PF CF
× × × × × × × ×
Đại học Bách khoa tp.HCM Biên soạn : Nguyễn Xuân Minh 
TẬP LỆNH 8086/8088 Tổ chức và cấu trúc máy tính Tr.49
- Lấy bù cờ nhớ. 
7.4 Lệnh NOP : 
- Dạng lệnh : NOP 
- Giải thích : không làm gì cả 
- Tác động cờ : 
- Không làm gì cả. Dùng để tạo ra các khoảng làm trễ ngắn. 
7.5 Lệnh CLD : 
- Dạng lệnh : CLD 
- Giải thích : DF ← 0 
- Tác động cờ : 
- Xóa cờ định hướng về 0. Xử lý tăng địa chỉ trong các lệnh xử lý chuỗi. 
7.6 Lệnh STD : 
- Dạng lệnh : STD 
- Giải thích : DF ← 1 
- Tác động cờ : 
- Lập cờ định hướng lên 1. Xử lý giảm địa chỉ trong các lệnh xử lý chuỗi. 
7.7 Lệnh CLI : 
- Dạng lệnh : CLI 
- Giải thích : IF ← 0 
- Tác động cờ : 
- Xóa cờ ngắt quãng về 0. Cấm ngắt quãng cứng. 
7.8 Lệnh STI : 
- Dạng lệnh : STI 
- Giải thích : IF ← 1 
- Tác động cờ : 
- Lập cờ ngắt quãng lên 1. Cho phép ngắt quãng cứng. 
7.9 Lệnh HLT : 
- Dạng lệnh : HLT 
- Giải thích : CPU vào trạng thái dừng. 
- Tác động cờ : 
- Dừng CPU, chờ một ngắt quãng cứng xảy ra (INTR hay NMI). 
7.10 Lệnh WAIT : 
- Dạng lệnh : WAIT 
- Giải thích : CPU vào trạng thái đợi. 
- Tác động cờ : 
OF DF IF SF ZF AF PF CF
 0
OF DF IF SF ZF AF PF CF
 0
OF DF IF SF ZF AF PF CF
 1
OF DF IF SF ZF AF PF CF
 0
OF DF IF SF ZF AF PF CF
 1
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
Biên soạn : Nguyễn Xuân Minh Đại học Bách khoa tp.HCM 
Tr.50 Tổ chức và cấu trúc máy tính TẬP LỆNH 8086/8088
- CPU vào trạng thái đợi cho đến khi ngỏ TEST tác động. 
7.11 Tiếp đầu lệnh LOCK : 
- Dạng lệnh : LOCK lệnh 
- Giải thích : Khóa các tuyến trong khi thi hành lệnh theo sau. 
- Tác động cờ : 
- Khóa các tuyến khi thi hành lệnh theo sau. Không cho phép các vi xử lý khác yêu 
cầu tuyến (chẳng hạn DMA). 
7.12 Lệnh ESC : 
- Dạng lệnh : ESC immed,reg 
ESC immed,mem 
- Giải thích : đưa lệnh ra tuyến dữ liệu. 
- Tác động cờ : 
- Phát ra một lệnh cho vi mạch đồng xử lý 8087. 
- Ví dụ : ESC 6,AL 
ESC 4,[2000h] 
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF

File đính kèm:

  • pdftap_lenh_vi_xu_ly_80858088.pdf