Giáo trình Kỹ thuật vi xử lý - Nguyễn Trung Đồng

Tóm tắt Giáo trình Kỹ thuật vi xử lý - Nguyễn Trung Đồng: ...1 CPU bị treo 1 0 0 nạp mã chương trình vào hàng nhận lệnh 1 0 1 đọc bộ nhớ 1 1 0 ghi vào bộ nhớ 1 1 1 trạng thái thụ động RQ/GT0 , RQ/GT1: Tín hiệu phục vụ việc chuyển mạch BUS cục bộ (Local BUS) giữa các đơn vị làm chủ BUS (BUS master). BUS cục bộ là BUS giữa các đơn vị xử lý (không phải là B...), và dùng để giao tiếp với các thiết bị ngoại vi hoặc làm cổng vào/ra hoặc làm các lối vào cho mạch định thời thứ ba. Port 2 (các chân từ 21 đến 28) có hai công dụng, hoặc làm nhiệm vụ vào/ra hoặc là byte địa chỉ cao của bus địa chỉ 16-bít cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thi...của ngắt đang được phục vụ sẽ được đặt xuống 0. Bằng các cách nói trên hệ thống ngắt cứng có thể tiếp tục phục vụ yêu cầu ngắt này ở những lần tiếp theo. Có ghép tầng ? ICW3 ICW4 PIC 8259 Sẵn sàng làm việc Có ICW4 ? Không Không Có (SNGL = 0) Có (IC4 = 1 Î ICW1) (SNGL = 1) ICW1 ICW2 ...

doc154 trang | Chia sẻ: havih72 | Lượt xem: 233 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Kỹ thuật vi xử lý - Nguyễn Trung Đồng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
it địa chỉ thấp). Hai địa chỉ này được kết hợp lại tạo thành địa chỉ (11 bit) cho phép truy nhập vào dòng mẫu điểm ảnh đầu tiên của ký tự (ký tự A) trong ROM và xuất nó ra thanh ghi dịch ảnh. Từ thanh ghi dịch ảnh, từng bit mẫu ảnh tuần tự được đưa ra màn hình. 
Khi tất cả các bit mẫu ảnh từ thanh ghi dịch được đẩy ra màn hình, CRTC tiếp tục gửi địa chỉ hàng-cột (hàng=0, cột=1) cho bộ nhớ hiển thị và gửi địa chỉ dòng mẫu điểm ảnh (dòng mẫu điểm 0) cho ROM, bộ nhớ hiển thị gửi mã ASCII của ký tự (ký tự B) cho ROM. Dòng mẫu điểm ảnh đầu tiên của ký tự (ký tự B) được xuất ra thanh ghi dịch ảnh. Tương tự như thế các dòng mẫu điểm đầu tiên của tất cả các ký tự trên cùng một hàng màn hình được hiển thị, cho đến ký tự cuối cùng trên hàng.
CRTC tiếp tục gửi địa chỉ hàng-cột (hàng=0, cột=0) đến bộ nhớ hiển thị, nhưng địa chỉ dòng mẫu điểm ảnh bây giờ là 1(dòng mẫu điểm 1) cho ROM. Bộ nhớ hiển thị gửi mã ASCII của ký tự A cho ROM, ROM xuất ra dòng mẫu điểm ảnh 1 của ký tự A. Dòng 1 của ký tự B được xuất ra theo cách tương tự. Các dòng điểm ảnh tiếp theo của ký tự lần lượt được hiển thị lên màn hình cho đến khi tất cả các dòng điểm ảnh của hàng văn bản đầu tiên (hàng 0) được hiển thị trên màn hình. 
Các hàng văn bản tiếp theo cũng được hiển thị theo phương pháp nói trên.
Trên thực tế hoạt động của CRTC phức tạp hơn. CRTC phải có khả năng hiển thị ở chế độ đồ họa. CRTC phải theo dõi thông tin về thuộc tính của ký tự hiển thị, phải tạo ra điểm nháy. CRTC cũng phải tạo ra hai tín hiệu đồng bộ ảnh ngang - dọc và làm tươi màn hình. Tần số làm tươi tối thiểu là 50 Hz.
PHỤ LỤC
PHỤ LỤC A
Bảng tóm tắt hệ lệnh của Trung tâm Vi xử lý họ x86
Từ gợi nhớ
Chức năng
Từ gợi nhớ
Chức năng
Các lệnh họ 80x86
AAA
Chỉnh sau phép cộng 2 số dạng ASCII
CMP
So sánh toán hạng đích và gốc
AAD
Chỉnh hai số mã ASCII trước phép chia
CMPS
So sánh chuỗi Byte hay từ
AAM
Chỉnh sau phép nhân 2 số mã ASCII
CMPSB
So sánh xâu (byte)
AAS
Chỉnh sau phép trừ 2 số mã ASCII
CMPSW
So sánh xâu (từ)
ADC
Cộng có cờ nhớ
CWD
Biến đổi từ thành từ kép
ADD
Cộng 2 toán hạng
DAA
Hiệu chỉnh thập phân sau phép cộng
AND
Và từng bít tương ứng của 2 toán hạng
DAS
Hiệu chỉnh thập phân sau phép trừ
CALL
Gọi chương trình con
DEC
Giảm toán hạng đích đi 1
CBW
Chuyển byte thành từ
DIV
Chia không dấu
CLC
Xoá cờ nhớ
ESC
Thoát
CLD
Xoá cờ hướng
HLT
Treo
CLI
Xoá cờ ngắt
IDIV
Chia số nguyên
CMC
Lấy bù cờ nhớ
IMUL
Nhân số nguyên
IN
Đọc cổng vào ra
JS
Nhảy nếu có cờ dấu
INC
Tăng toán hạng đích lên 1
JZ
Nhảy nếu bằng 0
INT
Gọi ngắt
LAHF
Nạp 8 bit thấp của cờ vào AH
INTO
Ngắt nếu bị tràn
LDS
Nạp ô nhớ từ kép vào thanh ghi đoạn dữ liệu
IRET
Trở về chỗ bị ngắt
LEA
Nạp địa chỉ hiệu dụng
JA
Nhảy nếu ở trên
LES
Nạp con trỏ khi dùng ES
JAE
Nhảy nếu ở trên hoặc bằng
LOCK
Khoá bus
JB
Nhảy nếu thấp hơn
LODS
Nạp xâu
JBE
Nhảy nếu thấp hơn hoặc bằng
LODSB
Nạp xâu (byte)
JC
Nhảy nếu có cờ nhớ
LODSW
Nạp xâu (từ)
JCXZ
Nhảy nếu CX = 0
LOOP
Vòng lặp
JE
Nhảy nếu bằng
LOOPE
Lặp lại trong khi bằng
JG
Nhảy nếu lớn hơn
LOOPNE
Lặp lại khi không bằng
JGE
Nhảy nếu lớn hơn hoặc bằng
LOOPNZ
Lặp khi không bằng 0
JL
Nhảy nếu nhỏ hơn
LOOPZ
Lặp khi bằng 0
JLE
Nhảy nếu nhỏ hơn hoặc bằng
MOV
Chuyển nguồn tới đích
JMP
Nhảy không điều kiện
MOVS
Chuyển xâu
JNA
Nhảy nếu không ở trên
MOVSB
Chuyển xâu (byte)
JNAE
Nhảy nếu không ở trên hoặc bằng
MOVSW
Chuyển xâu (từ)
JNB
Nhảy nếu không ở dưới
MUL
Phép nhân
JNBE
Nhảy nếu không ở dưới hoặc bằng
NEG
Đảo dấu hay lấy bù 2
JNC
Nhảy nếu không có cờ nhớ
NOP
Không hành động 
JNE
Nhảy nếu không bằng
NOT
Đảo dấu (lấy bù 1)
JNG
Nhảy nếu không lớn hơn
OR
Hoặc các bit tương ứng của 2 toán hạng
JNGE
Nhảy nếu không lớn hơn hoặc bằng
OUT
Viết cổng vào/ra
JNL
Nhảy nếu không nhỏ hơn
POP
Hồi phục nộng dung (các thanh ghi, ...)
JNLE
nhảy nếu không nhỏ hơn hoặc bằng
POPF
Hồi phục nội dung các cờ
JNO
Nhảy nếu không tràn 
PUSH
Đẩy nội dung ( thanh ghi, ...) vào ngăn xếp
JNP
Nhảy nếu không có cờ chẵn lẻ
PUSHF
Đẩy nội dung cờ vào ngăn xếp
JNS
Nhảy nếu không có cờ dấu
RCL
Quay trái qua cờ nhớ 
JNZ
Nhảy nếu không bằng 0
RCR
Quay phải qua cờ nhớ
JO
Nhảy nếu có cờ tràn
REP
Lặp lại
JP
Nhảy nếu có cờ chẵn lẻ
REPE
Lặp lại khi bằng
JPE
Nhảy nếu có cờ lẻ chẵn
REPNE
Lặp lại khi không bằng
JPO
Nhảy nếu lẻ lẻ
REPNZ
Lặp lại khi không bằng 0
REPZ
Lặp lại trong khi bằng 0
STC
Đặt cờ nhớ
RET
Trở về
STD
Đặt cờ hướng
ROL
Quay trái
STI
Đặt cờ ngắt
ROR
Quay phải
STOS
Lưu trữ xâu
SAHF
Lưu trữ AH vào byte thấp của cờ
STOSB
Lưu trữ xâu (byte)
SAL
Dịch trái số học
STOSW
Lưu trữ xâu (từ)
SAR
Dịch phải số học
SUB
Phép trừ
SBB
Trừ có mượn
TEST
Kiểm tra ( nhân logic đích với gốc)
SCAS
Quét xâu
WAIT
Đợi 
SCASB
Quét xâu (byte)
XCHG
Tráo đổi
SCANW
Quét xâu (từ)
XLAT
Chuyển đổi bảng
SHL
Dịch trái
XOR
Hoặc tuyệt đối tương ứng 2 số
SHR
Dịch phải
Các lệnh chỉ có trong 80286, 80386 và 80486
ARPL
Chỉnh trường RPL của bộ chọn
LSL
Nạp độ dài đoạn nhớ
BOUND
Kiểm tra biên của trường
LTR
Nạp thanh ghi nhiệm vụ
CLTS
Xoá cờ chuyển nhiệm vụ 
OUTS
Xuất xâu ra cổng vào/ra
ENTER
Tạo khối các thông số để vào CTC
POPA
Phục hồi tất cả các tranh ghi đa năng
INS
Nhập xâu từ cổng vào/ra
PUSHA
Đẩy vào ngăn xếp các thanh ghi đa năng
LAR
Nạp quyền thâm nhập
SGDT
Lưu trữ thanh ghi bảng bộ mô tả toàn cục
LEAVE
RA khỏi CTC (chương trình con)
SIDT
Lưu trữ thanh ghi bảng bộ mô tả ngắt
LGDT
Nạp thanh ghi bảng bộ mô tả toàn cục
SLDT
Lưu trữ thanh ghi bảng bộ mô tả cục bộ
LIDT
Nạp thanh ghi bảng bộ mô tả ngắt
SMSW
Lưu trữ từ trạng thái máy
LLDT
Nạp thanh ghi bảng bộ mô tả cục bộ
STR
Lưu trữ thanh ghi nhiệm vụ
LMSW
Nạp từ trạng thái máy
VERR
Kiểm tra một bộ chọn đoạn để đọc
VERW
Kiểm tra một bộ chọn đoạn để viết
Các lệnh chỉ có tronmg 80386 và 80486
BSF
Quét bit về phía trước
SETL
Đặt byte nếu nhỏ hơn
BSR
Quét bit về phía sau
SETLE
Đặt byte nếu nhỏ hơn hoặc bằng
BT
Kiểm tra bit
SETNA
Đặt byte nếu không ở trên
BTC
Kiểm tra và đảo bit
SETNAE
Đặt byte nếu không ở trên hoặc bằng
BTR
Kiểm tra và xoá bit
SETNB
Đặt byte nếu không ở dưới
BTS
Kiểm tra và đặt bit
SETNBE
Đặt byte nếu không ở dưới hoặc bằng
CDQ
Biến đổi từ kép thành từ kép bốn
SETNC
Đặt byte nếu không nhớ
CMPSD
So sánh xâu (từ kép)
SETNE
Đặt byte nếu không bằng
CWDE
Biến đổi từ thành từ kép trong EAX
SETNG
Đặt byte nếu không lớn hơn
JECXZ
Nhảy nếu ECX bằng 0
SETNGE
Đặt byte nếu không lớn hơn hoặc bằng
LFS
Nạp con trỏ khi dùng FS
SETNL
Đặt byte nếu không nhỏ hơn
LGS
Nạp con trỏ khi dùng GS
SETNLE
Đặt byte nếu không nhỏ hơn hoặc bằng
LSS
Nạp con trỏ khi dùng SS
SETNO
Đặt byte nếu không tràn
LODSD
Nạp xâu (từ kép)
SETNP
Đặt byte nếu không có chẵn lẻ
MOVSD
Chuyển xâu (từ kép)
SETNS
Đặt byte nếu không dấu
MOVSX
Chuyển với Sigh-eXtend
SETNZ
Đặt byte nếu không bằng 0
MOVZX
Chuyển với Zero-eXtend
SETO
Đặt byte nếu tràn
SCASD
Quét xâu (từ kép)
SETP
Đặt byte nếu có chẵn lẻ
SETA
Đặt byte nếu ở trên
SETPE
Đặt byte nếu chẵn lẻ chẵn
SETAE
đặt byte nếu ở trên hoặc bằng
SETPO
Đặt byte nếu có chẵn lẻ lẻ
SETB
Đặt byte nếu ở dưới
SETS
Đặt byte nếu có dấu
SETBE
Đặt byte nếu ở dưới hoặc bằng
SETZ
Đặt byte nếu bằng 0
SETC
Đặt byte nếu có cờ nhớ
SHLD
Dịch trái( từ kép)
SETE
Đặt byte nếu bằng
SHRD
Dịch phải (từ kép)
SETG
Đặt byte nếu lớn hơn
STOSD
Lưu trữ xâu (từ kép)
SETGE
ĐẶt byte nếu lớn hơn hoặc bằng
Các lệnh chỉ có trong 80486
BSWAP
Hoán chuyển byte
INVLPG
Vô hiệu hoá TLB (cho chế độ trang)
CMPXCHG
So sánh và tráo đổi
WBINVD
Ghi trở lại bộ nhớ chính vào nhớ ngầm
INVD
Vô hiệu hoá bộ nhớ ngầm
XADD
Hoán chuyển và cộng
PHỤ LỤC B
Bảng luỹ thừa 2n
2n
n
2-n
1
0
1
2
1
0.5
4
2
0.25
8
3
0.125
16
4
0.0625
32
5
0.03125
64
6
0.015625
128
7
0.0078125
256
8
0.00390625
512
9
0.001953125
1,024
10
0.000976563
2,048
11
0.0004882815
4,096
12
0.00024414125
8,192
13
0.000122070625
16,384
14
0.000061035156
32,768
15
0.000030517578
65,536
16
0.000015258789
131,072
17
0.000007629395
262,144
18
0.000003814697
524,288
19
0.000001907349
1,048,576
20
0.000000953674
2,097,152
21
0.000000476837
4,194,304
22
0.000000238419
8,388,608
23
0.000000119209
16,777,216
24
0.000000059605
33,554,432
25
0.000000029802
67,108,864
26
0.000000014901
134,217,728
27
0.000000007451
268,435,456
28
0.000000003725
536,870,912
29
0.000000001863
1,073,741,824
30
0.000000000931
2,147,483,648
31
0.000000000466
4,294,967,296
32
0.000000000233
Từ 2-14 là giá trị đã làm tròn lấy 10 số sau dấu phẩyPHỤ LỤC C
Bảng mã ASCII
 | Dec 0 16 32 48 64 80 96 112
 ROW | Bin 000 001 010 011 100 101 110 111
Dec Bin Hex | Hex 0 10 20 30 40 50 60 70
-------------+------------------------------------------------------
 0 0000 0 | NUL DLE SP 0 @ P ` p
 |
 1 0001 1 | SOH XON ! 1 A Q a q 
 |
 2 0010 2 | STX DC2 " 2 B R b r
 |
 3 0011 3 | ETX XOFF # 3 C S c s
 |
 4 0100 4 | EOT DC4 $ 4 D T d t
 |
 5 0101 5 | ENQ NAK % 5 E U e u
 |
 6 0110 6 | ACK SYN & 6 F V f v
 |
 7 0111 7 | BEL ETB ' 7 G W g w
 |
 8 1000 8 | BS CAN ( 8 H X h x
 |
 9 1001 9 | HT EM ) 9 I Y i y
 |
 10 1010 A | LF SUB * : J Z j z
 |
 11 1011 B | VT ESC + ; K [ k {
 |
 12 1100 C | FF FS , < L \ l |
 |
 13 1101 D | CR GS - = M ] m }
 |
 14 1110 E | SO RS . > N ^ n ~
 |
 15 1111 F | SI US / ? O _ o DEL
PHỤ LỤC D
CÁC NHÓM LỆNH CỦA µC8051
1. Tạo vòng lặp và lệnh nhảy:
a. Tạo vòng lặp 
- Quá trình lặp lại chuỗi lệnh với một số lần nhất định gọi là vòng lặp.
Vòng lặp trong 8051 được thực hiện bằng lệnh “DJNZ thanh ghi, nhãn“
Để tổ chức vòng lặp lồng nhau cần sử dụng 2 thanh ghi để lưu số đếm.
b. Lệnh nhảy 
Lệnh nhảy có điều kiện 
Lệnh 
 Ý Nghĩa
JZ
Nhảy nếu A=0
JNZ
Nhảy nếu A khác 0
DJNZ
Giảm và nhảy nếu A khác 0
CJNE A,byte
Nhảy nếu A khác byte
CJNE re,#data
Nhảy nếu byte khác data
JC
Nhảy nếu CY=1
JNC
Nhảy nếu CY=0
JB
Nhảy nếu bit=1
JNB
Nhảy nếu bit=0
JBC
Nhảy nếu bit=1 và xoá nó
Lệnh nhảy không điều kiện :
Lệnh nhảy dài : 
Là lệnh 3 byte. Byte đầu là mã lệnh, 2 byte còn lại là địa chỉ 16 bit của đích. Địa chỉ đích 2 byte cho phép lệnh có thể nhảy đến bất kỳ vị trí nhớ nào trong không gian nhớ 0000 đến FFFF
Lệnh nhảy ngắn : 
Lệnh nhảy ngắn là lệnh 2 byte. Byte đầu tiên là mã lệnh, byte thứ 2 là địa chỉ tương đối của địa chỉ đích. Địa chỉ đích tương đối có nghĩa là so với giá trị của bộ đếm chương trình.
2. Lệnh gọi Call 
 Lệnh call dùng để gọi chương trình con
Lệnh gọi dài Lcall (longcall) :
 Đây là lệnh 3 byte. Byte đầu là mã lệnh, 2 byte còn lại là địa chỉ của chương trình con đích. sau khi thực hiện xong 1 chương trình con, để 8051 biết được chỗ quay trở về thì địa chỉ của lệnh đứng ngay sau lệnh gọi Lcall sẽ được tự đông cất vào ngăn xếp.
Lệnh gọi tuyệt đối Acall :
 Lệnh Acall là lệnh 2 byte, địa chỉ đích của chương trình con phải nằm trong khoảng 2 Kbyte địa chỉ vì chỉ có 11 bit của 2 byte được dùng để xác định địa chỉ. Thực tế một số biến thể 8051 chỉ có 1 Kbyte ROM trên chip. Trong những trường hợp đó, sử dụng lệnh Acall có thể tiết kiệm được một số byte bộ nhớ của không gian ROM chương trình so với lệnh Lcall.
3. Nhóm lệnh cơ bản của 8051:
Tập lệnh của 8051 được chia thành 5 nhóm: 
- Số học. 
- Luận lý. 
- Chuyển dữ liệu. 
- Chuyển điều khiển.
- Rẽ nhánh.
Các chi tiết thiết lập lệnh:
Rn
Thanh ghi R0 đến R7 của bank thanh ghi được chọn. 
Data
 8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ liệu trong (0-127) hoặc các thanh ghi chức năng đặc biệt. 
@Ri
8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ gián tiếp qua thanh ghi R0 hoặc R1. 
#data 
Hằng 8 bit chức trong câu lệnh. 
#data 16
Hằng 16 bit chứa trong câu lệnh. 
Addr16 
16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP. 
Addr11 
11 bit địa chỉ đích được dùng trong lệnh LCALL và AJMP. 
Rel 
Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệnh nhảy có điều kiện. 
Bit 
Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các thanh ghi chức năng đặc biệt.
a. Nhóm lệnh xử lý số học: 
ADD A,Rn 
(1byte 1 chu kỳ máy) : cộng nội dung thanh ghi Rn vào thanh ghi A. 
ADD A,data 
(21): Cộng trực tiếp 1 byte vào thanh ghi A. 
ADD A,@Ri 
(11): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai báo trong Ri vào thanh ghi A.
ADD A,#data
(21): Cộng dữ liệu tức thời vào A.
ADD A,Rn 
(11): Cộng thanh ghi và cờ nhớ vào A. 
ADD A,data 
(21): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A. 
ADDC A,@Ri 
(11): Cộng gián tiếp nội dung RAM và cờ nhớ vào A. 
ADDC A,#data 
(21): Cộng dữ liệu tức thời và cờ nhớ vào A. 
SUBB A,Rn 
(11): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ nhớ. 
SUBB A,data 
(21): Trừ trực tiếp A cho một số và cờ nhớ. 
SUBB A,@Ri 
(11): Trừ gián tiếp A cho một số và cờ nhớ. 
SUBB A,#data 
(21): Trừ nội dung A cho một số tức thời và cờ nhớ. 
INC A 
(11): Tăng nội dung thanh ghi A lên 1. 
INC Rn 
(11): Tăng nội dung thanh ghi Rn lên 1. 
INC data 
(21): Tăng dữ liệu trực tiếp lên 1. 
INC @Ri 
(11): Tăng gián tiếp nội dung vùng RAM lên 1. 
DEC A 
(11): Giảm nội dung thanh ghi A xuống 1. 
DEC Rn 
(11): Giảm nội dung thanh ghi Rn xuống 1. 
DEC data 
(21): Giảm dữ liệu trực tiếp xuống 1 
DEC @Ri 
(11): Giảm gián tiếp nội dung vùng RAM xuống 1. 
INC DPTR 
(12): Tăng nội dng con trỏ dữ liệu lên 1. 
MUL AB 
(14): Nhân nội dung thanh ghi A với nội dung thanh ghi B. 
DIV AB 
(14): Chia nội dung thanh ghi A cho nội dung thanh ghi B. 
DA A 
(11): hiệu chỉnh thập phân thanh ghi A. 
b. Nhóm lệnh luận lý: 
ANL A,Rn 
(11): AND nội dung thanh ghi A với nội dung thanh ghi Rn. 
ANL A,data
(21): AND nội dung thanh ghi A với dữ liệu trực tiếp. 
ANL A,@Ri
(11): AND nội dung thanh ghi A với dữ liệu gián tiếp trong RAM. 
ANL A,#data 
(21): AND nội dung thanh ghi với dữ liệu tức thời. 
ANL data,A
(21): AND một dữ liệu trực tiếp với A. 
ANL data,#data 
(32): AND một dữ liệu trực tiếp với A một dữ liệu tức thời. 
ANL C,bit
(22): AND cờ nhớ với 1 bit trực tiếp. 
ANL C,/bit 
(22): AND cờ nhớ với bù 1 bit trực tiếp. 
ORL A,Rn
(11): OR thanh ghi A với thanh ghi Rn. 
ORL A,data
(21): OR thanh ghi A với một dữ liệu trực tiếp. 
ORL A,@Ri 
(11): OR thanh ghi A với một dữ liệu gián tiếp. 
ORL A,#data 
(21): OR thanh ghi A với một dữ liệu tức thời. 
ORL data,A
(21): OR một dữ liệu trực tiếp với thanh ghi A. 
ORL data,#data
(31) :OR một dữ liệu trực tiếp với một dữ liệu tức thời. 
ORL C,bit
(22): OR cờ nhớ với một bit trực tiếp. 
ORL C,/bit 
(22): OR cờ nhớ với bù của một bit trực tiếp. 
XRL A,Rn
(11): XOR thanh ghi A với thanh ghi Rn. 
XRL A,data
(21): XOR thanh ghi A với mộ dữ liệu trực tiếp. 
XRL A,@Ri 
(11): XOR thanh ghi A với một dữ liệu gián tiếp. 
XRL A,#data 
(21): XOR thanh ghi A với mộ dữ liệu tức thời. 
XRL data,A 
(21): XOR một dữ liệu trực tiếp với thanh ghi A. 
XRL data,#data 
(31): XOR một dữ liệu trực tiếp với một dữ liệu tức thời. 
SETB C 
(11): Đặt cờ nhớ.
SETB bit 
(21): Đặt một bit trực tiếp.
CLR A 
(11): Xóa thanh ghi A.
CLR C 
(11): Xóa cờ nhớ.
CPL A 
(11): Bù nội dung thanh ghi A.
CPL C 
(11): Bù cờ nhớ. 
CPL bit 
(21): Bù một bit trực tiếp.
RL A 
(11): Quay trái nội dung thanh ghi A. 
RLC A 
(11): Quay trái nội dung thanh ghi A qua cờ nhớ.
RR A 
(11): Quay phải nội dung thanh ghi A. 
RRC A 
(11): Quay phải nội dung thanh ghi A qua cờ nhớ.
SWAP 
(11): Quay trái nội dung thanh ghi A 1 nibble (1/2byte). 
c. Nhóm lệnh chuyển dữ liệu:
MOV A,Rn
(11):Chuyển nội dung thanh ghi Rn vào thanh ghi A. 
MOV A,data
(21): Chuyển dữ liệu trực tiếp vào thanh ghi A. 
MOV A,@Ri 
(11): Chuyển dữ liệu gián tiếp vào thanh ghi A. 
MOV A,#data 
(21): Chuyển dữ liệu tức thời vào thanh ghi A. 
MOV Rn,data
(22): Chuyển dữ liệu trực tiếp vào thanh ghi Rn. 
MOV Rn,#data 
(21): Chuyển dữ liệu tức thời vào thanh ghi Rn. 
MOV data,A
(21): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp. 
MOV data,Rn
(22): Chuyển nội dung thanh ghi Rn vào một dữ liệu trực tiếp. 
MOV data,data
(32): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp. 
MOV data,@Ri 
(22): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp. 
MOV data,#data 
(32): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp. 
MOV @Ri,A
 (11): Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp. 
MOV @Ri,data 
(22): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp. 
MOV @Ri,#data 
(21): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp. 
MOV DPTR,#data
(32): Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu. 
MOV C,bit
(21): Chuyển một bit trực tiếp vào cờ nhớ. 
MOV bit,C
 (22): Chuyển cờ nhớ vào một bit trực tiếp. 
MOV A,@A+DPTR
(12): Chuyển byte bộ nhớ chương trình có địa chỉ là@A+DPRTvào thanh ghi A. 
MOVC A,@A+PC
(12): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+PC vào thanh ghi A. 
MOVX A,@Ri
(12): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A. 
MOVX A,@DPTR
(12): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A. 
MOVX @Ri,A
(12): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ). 
MOVX @DPTR,A
(12): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ). 
PUSH data 
(22): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP. 
POP data 
(22): Chuyển dữ liệu trực tiếp vào ngăn xếp và giảm SP.
XCH A,Rn
(11): Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A. 
XCH A,data
(21): Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp. 
XCH A,@Ri 
(11): Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp. 
XCHD A,@R 
(11): Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN của dữ liệu gián tiếp. 
d. Nhóm lệnh chuyền điều khiển: 
ACALL addr11 
(22): Gọi chương trình con dùng địa chì tuyệt đối. 
LCALL addr16 
(32): Gọi chương trình con dùng địa chỉ dài. 
RET 
(12): Trở về từ lệnh gọi chương trình con. 
RETI 
(12): Trở về từ lệnh gọi ngắt. 
AJMP addr11 
(22): Nhảy tuyệt đối. 
LJMP addr16 
(32): Nhảy dài. 
SJMP rel 
(22):Nhảy ngắn. 
JMP @A+DPTR 
(12): Nhảy gián tiếp từ con trỏ dữ liệu. 
JZ rel 
(22): Nhảy nếu A=0. 
JNZ rel 
(22): Nhảy nếu A không bằng 0. 
JC rel 
(22): Nhảy nếu cờ nhớ được đặt. 
JNC rel 
(22): Nhảy nếu cờ nhớ không được đặt. 
JB bit,rel
 (32): Nhảy tương đối nếu bit trực tiếp được đặt.
JNB bit,rel
(32):Nhảy tương đối nếu bit trực tiếp không được đặt.
JBC bit,rel
 (32): Nhảy tương đối nếu bit trực tiếp được đặt, rồi xóa bit.
CJNE A,data,rel
(32): So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng.
CJNE A,#data,rel
(32): So sánh dữ liệu tức thời với A và nhảy nếu không bằng.
CJNE Rn,#data,rel
(32): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và nhảy nếu không bằng.
CJNE @Ri,#data,rel
(32): So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu không bằng.
DJNZ Rn,rel 
(22): Giảm thanh ghi Rn và nhảy nếu không bằng. 
DJNZ data
(32): Giảm dữ liệu trực tiếp và nhảy nếu không bằng. 
TÀI LIỆU THAM KHẢO
[ 1 ]	Nguyễn Tăng Cường, Phan Quốc Khánh: Cấu trúc và lập trình họ Vi điều khiển 8051. NXB KH&KT hà Nội-2004 
[ 2 ]	Vũ Chấn Hưng: Giáo trình Kiến trúc máy tính NXB Giao thông vận tải - Hà Nội 2002
[ 3 ]	Văn Thế Minh: Kỹ thuật Vi xử lý – NXB Thống kê – Hà Nội 1983
[ 4 ] 	Phòng Kỹ thuật số - Viện Khoa học Tính toán và Điều khiển: Kỹ thuật Vi xử lý - Nhà Xuất bản Thống kê – Hà Nội 1983
[ 5 ] 	Alan Clements: Principles of Computer Hardware – PWS-KENT
Publishing Company – Boston 1992
[ 6 ]	Intel® Corporation: Component Data Catalog 1982
[ 7 ]	David Hergert, Nancy Thibeault: PC Architecture from Assembly Language To C. Prentice-Hall, Inc. 1997
[ 8 ]	Christopher L. Morgan and Mitchell Waite: 8086/8088 16-bit Micrro-Processor Primer – McGraw-Hill, Inc. 1982
[ 9 ] 	V.M. Rooney: Microprocessors and Microcomputers - McMilan Publishing Company – New York 1983
[ 10 ]	James L., Turley: Advanced 80386 programming techniques - Osborne Mc Graw-Hill 1988

File đính kèm:

  • docgiao_trinh_ky_thuat_vi_xu_ly_nguyen_trung_dong.doc