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 ...
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:
- giao_trinh_ky_thuat_vi_xu_ly_nguyen_trung_dong.doc