Tài liệu Thiết kế mạch quang báo kết hợp KIT VXL và máy tính, chương 9 docx

15 370 0
Tài liệu Thiết kế mạch quang báo kết hợp KIT VXL và máy tính, chương 9 docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG 9: THIẾT KẾ PHẦN MỀM A.THIẾT KẾ PHẦN MỀM Z80: IV.1.Tập lệnh Z80: Tập lệnh bao gồm các chỉ thò để cho vi xử lý thực hiện các hoạt động chính xác. Lệnh dữ liệu là các con số nhò phân đưa vào CPU theo Bus dữ liệu đưa vào vùng nhớ để có sự khác nhau duy nhất là vi xử lý cất lệnh vào thanh ghi cơ cấu giải mã còn dữ liệu thì đưa đến thanh ghi dữ liệu hay ALU. Máy tính nhận lệnh đưa vào dưới dạng lệnh nhò phân, dạng này gây khó khăn cho người viết chương trình do vậy người ta thường viết chương trình dưới dạng gợi nhớ sau đó chuyển sang nhò phân để đưa vào CPU. Ở dạng gợi nhớ được chia làm hai phần : - Mã công tác ( operation code ): cho biết thao tác phải thực hiện. - Tác tố ( operand ): được viết sau mã công tác cho biết trò số liệu cần xử lý. Các bộ vi xử lý khác nhau thì các tập lệnh cũng khác nhau. Tập lệnh của CPU Z80 có khoảng 158 lệnh chia thành 4 nhóm lệnh chính: - Nhóm lệnh xử lí dữ liệu. - Nhóm lệnh truyền dữ liệu. - Nhóm lệnh kiểm soát chương trình. - Nhóm lệnh kiểm soát trạng thái. IV.1.1. Các phương pháp đònh vò đòa chỉ. IV.1.1.1. Mục đích. Có nhiều phương pháp chỉ ra đòa chỉ thanh ghi hay bộ nhớ mà lệnh sẽ sử dụng người ta chọn trong các phương pháp này tùy theo mục đích sau: - Dùng lệnh với điạ chỉ càng ngắn càng tốt để giảm yêu cầu về dung lượng bộ nhớ cũng như thời gian truy xuất - Để vùng truy xuất bộ nhớ với số byte càng lớn càng tốt - Muốn có thể thay đổi giá trò đòa chỉ thực sự mà không làm thay đổi lệnh . - Muốn đònh vò càng nhanh càng tốt . - Phương pháp đònh vò càng đơn giản càng tốt . IV.1.1.2. Các phương pháp đònh vò đòa chỉ. Các phương pháp đònh vò thường dùng là: - Đònh vò trực tiếp . - Đònh vò gián tiếp. - Đònh vò tức thời. - Đònh vò chỉ số. - Đònh vò tương đối. - Đònh vò trực tiếp thanh ghi. - Đònh vò gián tiếp thanh ghi. - Đònh vò ngăn xếp. Người ta thường dùng một hay phối hợp các kiểu đònh vò trên IV.1.1.3. Đònh vò đòa chỉ của Z80. a> Đònh vò tức thời. Trong phương pháp đònh vò này, byte theo sau OP CODE trong bộ nhớ chính là tác tố. - OP CODE 1-2 byte - OPRAND D7- D0 Một ví dụ của lệnh loại này là lệnh đưa một hằng số vào thanh ghi tích lũy, hằng số này là byte theo sau OPCODE. b> Đònh vò tức thời mở rộng. Kiểu đònh vò này tương tự như trên những byte theo sau OPCODE là tác tố. - OP CODE 1-2 byte - OPERAND nữa thấp - OPERAND nữa cao Ví dụ lệnh của loại này đưa vào cặp thanh ghi HL 16 bit dữ liệu c> Đònh vò trong ô bổ chính. Z80 có một byte đặt biệt là Call. Lệnh Call đặt thanh ghi PC đến một đòa chỉ ở trang O. Lệnh này cho phép theo sau nó là một đòa chỉ 16 bit chỉ tới một vùng nhớ nào đó . d>Đònh vò tương đối. Kiểu đònh vò này cho phép dòch chuyển 1 tầm đòa chỉ là –128-127 từ đòa chỉ A+2 . 8 bit theo sau OPCODE là đòa chỉ A . e> Đònh vò trực tiếp. Chỉ đến nội dung của ô nhớ (nn) f> Đònh vò chỉ số. Dùng hai thanh ghi IX IY mỗi thanh ghi 16 bit. g> Đònh vò trực tiếp thanh ghi. Sử dụng trực tiếp các thanh ghi trong CPU như A, B, C, D, E, H, L. h> Đònh vò hiểu ngầm. Dùng thanh ghi tích luỹ ACC như là nơi chứa kết quả của phép tính số học. i> Đònh vò gián tiếp thanh ghi. Sử dụng cặp thanh ghi (HL) , (BC), ( IX +d),(IY+d) j> Đònh vò bit. Trong các lệnh SET, RESET, BIT.Cho phép CPU kiểm soát đến từng bit trong ô nhớ chỉ đònh . k> Đònh vò ngăn xếp. Dùng thanh ghi con trỏ ngăn xếp SP. l> Kết hợp các phương pháp đònh vò. Nhiều lệnh có hơn một tác tố, chẳng hạn như lệnh số hay lệnh dòch chuyển dữ liệu .Trong trường này có hai phương pháp được đònh vò sử dụng . IV.1.2.Nhóm lệnh truyền dữ liệu. IV.1.2.1. Lệnh truyền bộ nhớ thanh ghi. Lệnh Load di chuyển bộ nhớ bên trong giữa các thanh ghi của CPU hay giữa thanh ghi bộ nhớ. Tất cả các lệnh này đều phải chỉ ra nguồn đích toán hạng nguồn không thay đổi bởi lệnh LOAD. Ngôn ngữ gợi nhớ cho loại lệnh này là LD, cú pháp lệnh như sau: LD DEST, SOURCE Các kiểu đònh vò cho toán hạng nguồn đích là tùy ý.Trong kiểu đònh vò trực tiếp hay tức thời mở rộng (lệnh có hai byte dữ liệu ngoài mã lệnh ) byte thấp đi trước, byte cao đi sau. Một số các qui ước để dể nhớ như sau : r: Các thanh ghi A,B,C,D,E,H,L. S: Các thanh ghi A,B,C,D,E,H,L,(HL),(IX+d),(IY+d) dd: BC,DE, HL, SP dd”:BC,DE,HL,nn qq: AF,BC,DE,DP ii: IX,IY IV.1.2.1.1.Nhóm lệnh truyền 8 bit. a> LD S’,S: lệnh nạp vào S’ với thanh ghi S. b> LDA,(dd’): nạp vào thanh ghi A với nội dung ô nhớ có đòa chỉ nội dung trong thanh ghi dd’. c> LD(dd’), A: nạp vào ô nhớ có đòa chỉ là nội dung của thanh ghi dd’với nội dung của thanh ghi A. d> LD A,I :A-I. e> LD I,A :A-I. f> LD A,R : A-R. g> LDR,A : A-R. IV.1.2.1.2. Nhóm lệnh truyền 16 bit. a> LD dd nn: Đưa trực tiếp dữ liệu 16 bit nn vào thanh ghi dd . b> LD dd (nn): đưa nội dung của ô nhớ có đòa chỉ ô nhớ có đòa chỉ nn vào thanh ghi dd. c> LD (nn), dd: nạp nội dung của thanh ghi dd vào ô nhớ có đòa chỉ nn. d> LD ii, nn : đưa trực tiếp 16 bit dữ liệu nn vào ii. e> LD ii (nn) : đưa nội dung của ô nhớ có đòa chỉ nn vào ii. f>EX DE,HL : Hóan đổi thanh ghi HL với thanh ghi DE. g> EX AF,AF’: hoán đổi thanh ghi AF ‘với thanh ghi AF. h> EX X : hoán đổi một lúc nội dung của 3 thanh ghi BC  BC’ DE  DE’ HL  HL’ i> EX (SP),HL: hoán đổi nội dung của 2 thanh ghi HL H( = ) SP +1 L (= ) SP j> EX ( SP)< ii: hoán đổi nội dung ii(L) (=) SP +1 ii(H) (=) SP IV.1.2.2. Lệnh vào ra. a> IN A, (n): nội dung của cổng có đòa chỉ n (8 bit) được nạp vào thanh ghi A. b>IN r , (C) : nội dung của cổng có đòa chỉ C được nạp vào thanh ghi R. c>OUT(n) , A: xuất nội dung thanh ghi A đưa ra cổng có đòa chỉ n. d>OUT (C), R: xuất nội dung có thanh ghi R ra cổng có đòa chỉ C IV.1.2.3. Lệnh ngăn xếp. a> LD SP, HL: nạp nội dung của ô nhớ chỉ ra bởi thanh ghi HL vào ngăn xếp. b>LD SP, ii: nạp nội dung của ô nhớ chỉ ra bởi ii vào ngăn xếp . c>PUSH qq: chuyển dữ liệu qq vào ngăn xếp. Đầu tiên nội dung của ngăn xếp giảm đi 1(SP-1) byte cao của cặp thanh ghi được đưa vào thanh ô nhớ có đòa chỉ là nội dung cua SP. Nội dung của SP lại giảm thêm một (SP- 2) byte thấp của cặp thanh ghi được đưa vào ô nhớ có đòa chỉ là nội dung của SP. d>PUSH ii: chuyển dữ liệu từ thanh ghi vào ngăn xếp. e>POP qq: chuyển dữ liệu vào ngăn xếp ra thanh ghi qq, dữ liệu của ô nhớ trong ngăn xếp có đòa chỉ chứa trong SP được chuyển vào nữa thấp của thanh ghi, sau đó nội dung của ngăn xếp tăng lên 1. f>POP ii : chuyển dữ liệu từ ngăn xếp ra thanh ghi ii. g>IND : nạp nội dung của ô nhớ chỉ ra bởi thanh ghi C vàô nhớ chỉ ra bởi thanh ghi HL, thanh ghi HL là B giảm 1. IV.1.2.4. Lệnh truyền khối. a> LDI : dòch chuyển nội dung có ô nhớ có nội dung là HL và ô nhớ có đòa chỉ là DE,tăng các thanh ghi HL DE lên 1. Giảm thanh ghi PC xuống 1. b> LDIL : là lệnh LDI được lập cho đến khi nào thanh ghi PC bằng không. c> LDD : dòch chuyển nội dung của ô nhớ có đòa chỉ HL vào ô hớ có đòa chỉ là DE ,nội dung của các thanh ghi DE và HL , PC giảm 1. d>LDDR: là lệnh LDD được lặp lại cho đến khi nào thanh ghi PC bằng không. e> INI: Dòch chuyển nội dung ô nhớ chỉ ra bởi thanh ghi C vào ô nhớ đòa chỉ có nội dung của HL ,thanh ghi HL tăng 1, thanh ghi B giảm 1. f> INIR: là lệnh INI lập đến khi B bằng không. g> INDR: là lệnh IND lập đến khi B bằng không. h> OUTI: nạp nội dung ô nhớ chỉ ra bởi HL vào ô nhớ chỉ ra bởi C,HL giảm 1,B giảm 1. i> OTIR: là lệnh OUTI cho dến khi B bằng không. j> OUTD: nạp nội dung ô nhớ chỉ ra bởi HL vào ô nhớ chỉ ra bởi C. Nội dung của HL B giảm 1. k> OTDR: là lệnh OUTD lập đến khi B bằng không. IV.1.3.Nhóm lệnh xử lí dữ liệu. IV.1.3.1. Lệnh số học luận lí 8 bit a> ADD A,S: lệnh cộng dữ liệu trong thanh ghi S với thanh ghi A ,không chú ý đến số nhớ, dữ liệu kết quả được chứa tại A . b> ADC A,S : Cộng dữ liệu trong thanh ghi S với thanh ghi A cộng luôn số nhớ ,tất cả chứa trong A. c> SUB A,S : lấy nội dung của thanh ghi A trừ đi thanh ghi S, không lưu ý đến số nhớ. d> SBC A,S : lệnh trừ có lưu ý đến số nhớ,với dữ liệu trong thanh ghi A ,kết quả chứa tại A. e> ORS : thực hiện phép ( OR) giữa dữ liệu trong thanh ghi A với dữ liệu trong thanh ghi C kết quả chứa tại A. f> XOR S : thực hiện phép XOR giữa nội dung trong thanh ghi S với nội dung trong thanh ghi A, kết quả chứa tại A. g> INCS : tăng nội dung thanh ghi S lên 1. h>DECS : giảm nội dung trong thanh ghi S xuống 1. IV.1.3.2. Lệnh số học 16 bit. a> ADD, HL,dd: cộng dữ liệu trong thanh ghi dd với dữ liệu trong thanh ghi HL, kết quả chứa tại thanh ghi HL, không lưu ý đến số nhớ. b> ADC HL,dd : cộng dữ liệu trong thanh ghi dd với dữ liệu trong thanh ghi HL luôn cả số nhớ, kết quả chứa tại HL. c> SBC HL,dd : lấy dữ liệu trong thanh ghi HL trừ đi dữ liệu trong thanh ghi dd trừ luôn số nhớ, kết quả tại thanh ghi HL. d> ADD IX,pp : cộng dữ liệu trong thanh ghi IX với dữ liệu trong thanh ghi pp kết quả chứa tại thanh ghi IX. e> ADD IY,pp: cộng dữ liệu trong thanh ghi IY với dữ liệu trong thanh ghi pp kết qủa chứa tại thanh ghi IY. f> INC dd : tăng nội dung của thanh ghi dd lên 1. g> DEC dd: giảm nội dung của thanh ghi dd xuống 1. h> INC ii : tăng nội dung của cặp thanh ghi ii lên 1. i>DEC ii : giảm nội dung của cặp thanh ghi xuống 1. IV.1.3.3. Lệnh quay vòng dòch. a> RRD : đẩy dữ liệu thanh ghi A về phía phải 1 bit, bit O đưa vào CY. b> RLA : đẩy dữ liệu trong thanh ghi A về phía trái 1 bit, bit thứ 7 đưa vào CY. c> RRCA : đẩy dữ liệu trong thanh ghi A bit 0 đưa vào CY .Dữ liệu của Cy vào bit thứ 7. d> RLCA : đẩy dữ liệu trong thanh ghi A về phía trái 1 bit,bit thứ 7 đưa vào Cy dữ liệu từ Cy đưa vào bit 0. e> RRS : đẩy dữ liệu vào thanh ghi S vào phía phải 1 bit, bit bo đưa vào Cy. f> RLS : đẩy dữ liệu trong thanh ghi S về phía trái 1 bit ,bit b7 vào Cy. g> RRCS : đẩy dữ liệu trong thanh ghi S về phía phải 1 bit, bit b 0 vào Cy dữ liệu từ Cy vào b7. h> RLCS : đẩy dữ liệu trong thanh ghi S về phía trái 1 bit, bit b7 vào Cy, dữ liệu từ Cy vào bit b 0 . i> SLAS : dữ liệu trong thanh ghi S dòch trái 1 bit, bit b7 bảo toàn bit b0 bò xóa. j> SRAS : dữ liệu trong thanh ghi S dòch phải 1 bit bit b 0 bảo toàn bit b 7 bò xóa. k> SRLS : dữ liệu trong thanh ghi S dòch phải 4 bit các bit trống bò xóa. [...]... thanh ghi S, kết quả tác động đến các cờ Trạng thái không ảnh hưởng đến thanh ghi A b> CPI : thực hiện phép so sánh giữa nội dung của thanh ghi A với nội dung chứa trong thanh ghi HL , kết quả không ảnh hưởng đến nội dung trong thanh ghi A, đồng thời thực hiện tăng nội dung thanh ghi HL lên 1 Kết quả được đưa vào thanh ghi HL thực hiện phép trừ nội dung thanh ghi B đi 1 kết quả chứa lại vào B c> CPIR...l> RLD : dòch 4 bit thấp dữ liệu trong thanh ghi A đưa vào nữa thấp dữ liệu chứa trong ô nhớ chỉ ra bởi thanh ghi HL ,4 bit thấp dòch lên cao ,4 bit cao đưa vào nữa thấp của thanh ghi A m> RRD: dòch 4 bit thấp dữ liệu trong thanh ghi A vào nữa cao của dữ liệu nằm trong ô nhớ chỉ ra bởi thanh ghi HL, 4 bit cao của ô nhớ dòch xuống nữa thấp, 4 bit thấp đưa lại vào thanh ghi A IV.1.3.4 Lệnh so sánh... Ret từ chương trình phục vụ ngắt INT n> RSTP : +Gán ngăn xếp SP-1 cho byte cao của đòa chỉ kế tiếp + Gán ngăn xếp SP-2 cho byte thấp của đòa chỉ + Nhập 0 vào byte cao của đòa chỉ kế tiếp + Nhập p vào byte thấp của đòa chỉ kế tiếp IV.1.5.Nhóm lệnh kiểm soát CPU kiểm tra bit IV.1.5.1.Lệnh kiểm soát CPU a> DAA : chỉnh BCD cho phép + b> CPT : nghòch đảo bộ tích lũy biến đổi bit 0 thành bit 1 ngược... của đòa chỉ kế tiếp d> JR cc,e : nếu thỏa mãn cờ trạng thái thì nhảy sang đòa chỉ kế tiếp + e nếu không thì tiếp tục e> JP (HL) : nhảy sang đòa chỉ là nội dung của thanh ghi HL f> JP (ii) :nhảy sang đòa chỉ là nội dung của thanh ghi ii g> DJNZ: được nạp B- 1 vào B, với 2 khả năng : + nếu B =0 tiếp tục + nếu B = 0 nhảy sang đòa chỉ kế tiếp + e h>CALL nn : cắt byte cao của đòa chỉ kế tiếp vào ngăn xếp... SP –1 Cất byte thấp của đòa chỉ kế tiếp SP – 2 gán cho đòa chỉ kế tiếp i> CALL cc, nn : nếu thỏa mãn cờ trạng thái cc thì thực hiện nếu không thì tiếp tục j> RET : gán ngăn xếp cho byte thấp của đòa chỉ kế tiếp Gán ngăn xếp kế tiếp cho byte cao của đòa chỉ kế tiếp k> RET cc : nếu thỏa mãn cờ trạng thái cc thì thực hiện RET nếu không thì tiếp tục l> RETN : gọi Ret từ chương trình phục vụ ngắn NMI (ngắt... ra bởi thanh ghi HL nội dung của thanh ghi B trở về 0 d> CPB : thực hiện phép trừ giữa nội dung trong thanh ghi A với nội dung của ô nhớ chỉ ra bởi nội dung HL, kết quả không ảnh hưởng đến thanh ghiA đồng thời tăng nội dung HL lên 1 giảm nội dung trong thanh ghi B xuống 1 e> CPDK : thực hiện lệnh CPI cho đến khi thanh ghi A bằng với nội dung ô nhớ chỉ ra bởi thanh ghi HL nội dung thanh ghi... tra bit IV.1.5.1.Lệnh kiểm soát CPU a> DAA : chỉnh BCD cho phép + b> CPT : nghòch đảo bộ tích lũy biến đổi bit 0 thành bit 1 ngược lại c> NEG : che 4 bit thấp thanh ghi A Kết quả ghi vào A d> CCF : lệnh đảo bit CARRY e> SCF : lệnh thiết lập bit Carry ở trạng thái không tác động f> NOP : khi gặp lệnh này CPU không làm gì cả chờ chu kỳ mới g> HALT : lệnh ngừng hoạt động chờ tín hiệu ngắt INT,NMI... IV.1.5.2 Lệnh kiểm tra bit a> BIT b,s : thực hiện phép AND giữa vò trí của bit b với s b> RES b,s : gán không vào vò trí 1 bit nào đó của S c> RST b,s : gán 1 vào 1 vò trí nào đó của S Lưu ý : Ở đây nhóm chỉ trình bày về tác dụng của các lệnh chính trong tập lệnh của Z80 để làm việc thuận tiện tốt hơn chúng ta có thể tham khảo tập lệnh Z80 ... 1 giảm nội dung trong thanh ghi B xuống 1 e> CPDK : thực hiện lệnh CPI cho đến khi thanh ghi A bằng với nội dung ô nhớ chỉ ra bởi thanh ghi HL nội dung thanh ghi B trở về 0 IV.1.4.Lệnh kiểm soát chương trình Ký hiệu cc chỉ các cờ trạng thái, ký hiệu cho các cờ như sau : + NONZERO : (NZ)Z =O + Cờ ZERO (Z) ,Z=1 + NON CARRY (NC) Y= 0 + CARRY (C) C= 0 + PARITY ADD (OP) , P = 0 + PARITY EVEN ( PE) . Lệnh và dữ liệu là các con số nhò phân đưa vào CPU theo Bus dữ liệu và đưa vào vùng nhớ để có sự khác nhau duy nhất là vi xử lý cất lệnh vào thanh ghi và. nhớ,với dữ liệu trong thanh ghi A ,kết quả chứa tại A. e> ORS : thực hiện phép ( OR) giữa dữ liệu trong thanh ghi A với dữ liệu trong thanh ghi C kết quả

Ngày đăng: 21/01/2014, 20:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan