A.THIÊT KÊ PHAĂN MEĂM Z80: IV.1.Taơp leơnh Z80:

Một phần của tài liệu Quang báo dùng vi xử lý z80 (Trang 54 - 64)

THIÊT KÊ PHAĂN MEĂM

A.THIÊT KÊ PHAĂN MEĂM Z80: IV.1.Taơp leơnh Z80:

IV.1.Taơp leơnh Z80:

Taơp leơnh bao goăm các chư thị đeơ cho vi xử lý thực hieơn các hốt đoơng chính xác. Leơnh và dữ lieơu là các con sô nhị phađn đưa vào CPU theo Bus dữ lieơu và đưa vào vùng nhớ đeơ có sự khác nhau duy nhât là vi xử lý cât leơnh vào thanh ghi và cơ câu giại mã còn dữ lieơu thì đưa đên thanh ghi dữ lieơu hay ALU. Máy tính nhaơn leơnh đưa vào dưới dáng leơnh nhị phađn, dáng này gađy khó khaín cho người viêt chương trình do vaơy người ta thường viêt chương trình dưới dáng gợi nhớ sau đó chuyeơn sang nhị phađn đeơ đưa vào CPU. Ở dáng gợi nhớ được chia làm hai phaăn :

- Mã cođng tác ( operation code ): cho biêt thao tác phại thực hieơn.

- Tác tô ( operand ): được viêt sau mã cođng tác cho biêt trị sô lieơu caăn xử lý. Các boơ vi xử lý khác nhau thì các taơp leơnh cũng khác nhau. Taơp leơnh cụa CPU Z80 có khoạng 158 leơnh chia thành 4 nhóm leơnh chính:

- Nhóm leơnh xử lí dữ lieơu. - Nhóm leơnh truyeăn dữ lieơu.

- Nhóm leơnh kieơm soát chương trình. - Nhóm leơnh kieơ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ó nhieău phương pháp chư ra địa chư thanh ghi hay boơ nhớ mà leơ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 leơnh với điá chư càng ngaĩn càng tôt đeơ giạm yeđu caău veă dung lượng boơ nhớ cũng như thời gian truy xuât

- Đeơ vùng truy xuât boơ nhớ với sô byte càng lớn càng tôt

- Muôn có theơ thay đoơi giá trị địa chư thực sự mà khođng làm thay đoơi leơ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 .

Moơt ví dú cụa leơnh lối này là leơnh đưa moơt haỉng sô vào thanh ghi tích lũy, haỉng sô này là byte theo sau OPCODE.

b> Định vị tức thời mở roơng.

Kieơu định vị này tương tự như tređ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ú leơnh cụa lối này đưa vào caịp thanh ghi HL 16 bit dữ lieơu

c> Định vị trong ođ boơ chính.

Z80 có moơt byte đaịt bieơt là Call. Leơnh Call đaịt thanh ghi PC đên moơt địa chư ở trang O. Leơnh này cho phép theo sau nó là moơt địa chư 16 bit chư tới moơt vùng nhớ nào đó .

d>Định vị tương đôi.

Kieơu định vị này cho phép dịch chuyeơn 1 taă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 noơi dung cụa ođ nhớ (nn)

f> Định vị chư sô.

Dùng hai thanh ghi IX và IY moê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ị hieơu ngaă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 caịp thanh ghi (HL) , (BC), ( IX +d),(IY+d)

j> Định vị bit.

Trong các leơnh SET, RESET, BIT.Cho phép CPU kieơm soát đên từng bit trong ođ nhớ chư định .

k> Định vị ngaín xêp.

Dùng thanh ghi con trỏ ngaín xêp SP.

l> Kêt hợp các phương pháp định vị.

Nhieău leơnh có hơn moơt tác tô, chẳng hán như leơnh sô hay leơnh dịch chuyeơn dữ lieơu .Trong trường này có hai phương pháp được định vị sử dúng .

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 leơnh truyeăn 8 bit.

a> LD S’,S: leơnh náp vào S’ với thanh ghi S.

b> LDA,(dd’): náp vào thanh ghi A với noơi dung ođ nhớ có địa chư và noơi dung trong thanh ghi dd’.

c> LD(dd’), A: náp vào ođ nhớ có địa chư là noơi dung cụa thanh ghi dd’với noơ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 leơnh truyeăn 16 bit.

a> LD dd nn: Đưa trực tiêp dữ lieơu 16 bit nn vào thanh ghi dd .

b> LD dd (nn): đưa noơi dung cụa ođ nhớ có địa chư ođ nhớ có địa chư nn vào thanh ghi dd.

c> LD (nn), dd: náp noơi dung cụa thanh ghi dd vào ođ nhớ có địa chư nn.

d> LD ii, nn : đưa trực tiêp 16 bit dữ lieơu nn vào ii.

e> LD ii (nn) : đưa noơi dung cụa ođ nhớ có địa chư nn vào ii.

f>EX DE,HL : Hóan đoơi thanh ghi HL với thanh ghi DE.

g> EX AF,AF’: hoán đoơi thanh ghi AF ‘với thanh ghi AF.

h> EX X : hoán đoơi moơt lúc noơi dung cụa 3 thanh ghi BC ⇔ BC’

DE ⇔ DE’ HL ⇔ HL’

i> EX (SP),HL: hoán đoơi noơi dung cụa 2 thanh ghi HL H( = ) SP +1

c>PUSH qq: chuyeơn dữ lieơu qq vào ngaín xêp. Đaău tieđn noơi dung cụa ngaín xêp giạm đi 1(SP-1) byte cao cụa caịp thanh ghi được đưa vào thanh ođ nhớ có địa chư là noơi dung cua SP. Noơi dung cụa SP lái giạm theđm moơt (SP-2) byte thâp cụa caịp thanh ghi được đưa vào ođ nhớ có địa chư là noơi dung cụa SP.

d>PUSH ii: chuyeơn dữ lieơu từ thanh ghi vào ngaín xêp.

e>POP qq: chuyeơn dữ lieơu vào ngaín xêp ra thanh ghi qq, dữ lieơu cụa ođ nhớ trong ngaín xêp có địa chư chứa trong SP được chuyeơn vào nữa thâp cụa thanh ghi, sau đó noơi dung cụa ngaín xêp taíng leđn 1.

f>POP ii : chuyeơn dữ lieơu từ ngaín xêp ra thanh ghi ii.

g>IND : náp noơi dung cụa ođ nhớ chư ra bởi thanh ghi C vàođ nhớ chư ra bởi thanh ghi HL, thanh ghi HL là B giạm 1.

IV.1.2.4. Leơnh truyeăn khôi.

a> LDI : dịch chuyeơn noơi dung có ođ nhớ có noơi dung là HL và ođ nhớ có địa chư là DE,taíng các thanh ghi HL và DE leđn 1. Giạm thanh ghi PC xuông 1.

b> LDIL : là leơnh LDI và được laơp cho đên khi nào thanh ghi PC baỉng khođng.

c> LDD : dịch chuyeơn noơi dung cụa ođ nhớ có địa chư HL vào ođ hớ có địa chư là DE ,noơi dung cụa các thanh ghi DE và HL , PC giạm 1.

d>LDDR: là leơnh LDD và được laịp lái cho đên khi nào thanh ghi PC baỉng khođng.

e> INI: Dịch chuyeơn noơi dung ođ nhớ chư ra bởi thanh ghi C vào ođ nhớ địa chư có noơi dung cụa HL ,thanh ghi HL taíng 1, thanh ghi B giạm 1.

f> INIR: là leơnh INI laơp đên khi B baỉng khođng.

g> INDR: là leơnh IND laơp đên khi B baỉng khođng.

h> OUTI: náp noơi dung ođ nhớ chư ra bởi HL vào ođ nhớ chư ra bởi C,HL giạm 1,B giạm 1.

i> OTIR: là leơnh OUTI cho dên khi B baỉng khođng.

j> OUTD: náp noơi dung ođ nhớ chư ra bởi HL vào ođ nhớ chư ra bởi C. Noơi dung cụa HL và B giạm 1.

k> OTDR: là leơnh OUTD laơp đên khi B baỉng khođng.

IV.1.3.Nhóm leơnh xử lí dữ lieơu. IV.1.3.1. Leơnh sô hĩc và luaơn lí 8 bit

h>DECS : giạm noơi dung trong thanh ghi S xuông 1.

IV.1.3.2. Leơnh sô hĩc 16 bit.

a> ADD, HL,dd: coơng dữ lieơu trong thanh ghi dd với dữ lieơu trong thanh ghi HL, kêt quạ chứa tái thanh ghi HL, khođng lưu ý đên sô nhớ.

b> ADC HL,dd : coơng dữ lieơu trong thanh ghi dd với dữ lieơu trong thanh ghi HL và luođn cạ sô nhớ, kêt quạ chứa tái HL.

c> SBC HL,dd : lây dữ lieơu trong thanh ghi HL trừ đi dữ lieơu trong thanh ghi dd và trừ luođn sô nhớ, kêt quạ tái thanh ghi HL.

d> ADD IX,pp : coơng dữ lieơu trong thanh ghi IX với dữ lieơu trong thanh ghi pp kêt quạ chứa tái thanh ghi IX.

e> ADD IY,pp: coơng dữ lieơu trong thanh ghi IY với dữ lieơu trong thanh ghi pp kêt qụa chứa tái thanh ghi IY.

f> INC dd : taíng noơi dung cụa thanh ghi dd leđn 1.

g> DEC dd: giạm noơi dung cụa thanh ghi dd xuông 1.

h> INC ii : taíng noơi dung cụa caịp thanh ghi ii leđn 1.

i>DEC ii : giạm noơi dung cụa caịp thanh ghi xuông 1.

IV.1.3.3. Leơnh quay vòng dịch.

a> RRD : đaơy dữ lieơu thanh ghi A veă phía phại 1 bit, bit O đưa vào CY.

b> RLA : đaơy dữ lieơu trong thanh ghi A veă phía trái 1 bit, bit thứ 7 đưa vào CY.

c> RRCA : đaơy dữ lieơu trong thanh ghi A bit 0 đưa vào CY .Dữ lieơu cụa Cy vào bit thứ 7.

f> RLS : đaơy dữ lieơu trong thanh ghi S veă phía trái 1 bit ,bit b7 vào Cy.

g> RRCS : đaơy dữ lieơu trong thanh ghi S veă phía phại 1 bit, bit b0 vào Cy và dữ lieơu từ Cy vào b7.

h> RLCS : đaơy dữ lieơu trong thanh ghi S veă phía trái 1 bit, bit b7 vào Cy, dữ lieơu từ Cy vào bit b0.

i> SLAS : dữ lieơ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ữ lieơu trong thanh ghi S dịch phại 1 bit bit b0 bạo toàn bit b7 bị xóa.

m> RRD: dịch 4 bit thâp dữ lieơu trong thanh ghi A vào nữa cao cụa dữ lieơu naỉm trong ođ nhớ chư ra bởi thanh ghi HL, 4 bit cao cụa ođ 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. Leơnh so sánh

a> CPS : thực hieơn phép so sánh giữa noơi dung trong thanh ghi A với noơi dung trong thanh ghi S, kêt quạ tác đoơng đên các cờ. Tráng thái khođng ạnh hưởng đên thanh ghi A.

b> CPI : thực hieơn phép so sánh giữa noơi dung cụa thanh ghi A với noơi dung chứa trong thanh ghi HL , kêt quạ khođng ạnh hưởng đên noơi dung trong thanh ghi A, đoăng thời thực hieơn taíng noơi dung thanh ghi HL leđn 1. Kêt quạ được đưa vào thanh ghi HL và thực hieơn phép trừ noơi dung thanh ghi B đi 1 kêt quạ chứa lái vào B.

c> CPIR : là leơnh so sánh CPI cho đên khi noơi dung trong thanh ghi A baỉng với noơi dung cụa ođ nhớ chư ra bởi thanh ghi HL và noơi dung cụa thanh ghi B trở veă 0

d> CPB : thực hieơn phép trừ giữa noơi dung trong thanh ghi A với noơi dung cụa ođ nhớ chư ra bởi noơi dung HL, kêt quạ khođng ạnh hưởng đên thanh ghiA và đoăng thời taíng noơi dung HL leđn 1 và giạm noơi dung trong thanh ghi B xuông 1.

e> CPDK : thực hieơn leơnh CPI cho đên khi thanh ghi A baỉng với noơi dung ođ nhớ chư ra bởi thanh ghi HL và noơi dung thanh ghi B trở veă 0.

khođng thì tiêp túc.

e> JP (HL) : nhạy sang địa chư là noơi dung cụa thanh ghi HL.

f> JP (ii) :nhạy sang địa chư là noơi dung cụa thanh ghi ii.

g> DJNZ: được náp B- 1 vào B, với 2 khạ naí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 : caĩt byte cao cụa địa chư kê tiêp vào ngaí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 hieơn nêu khođng thì tiêp túc.

j> RET : gán ngaín xêp cho byte thâp cụa địa chư kê tiêp. Gán ngaí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 hieơn RET nêu khođng thì tiêp túc.

l> RETN : gĩi Ret từ chương trình phúc vú ngaĩn NMI (ngaĩt khođng maịt ná).

m> RETI : gĩi Ret từ chương trình phúc vú ngaĩt INT.

n> RSTP :

+Gán ngaín xêp SP-1 cho byte cao cụa địa chư kê tiêp. + Gán ngaín xêp SP-2 cho byte thâp cụa địa chư.

+ Nhaơp 0 vào byte cao cụa địa chư kê tiêp. + Nhaơp p vào byte thâp cụa địa chư kê tiêp.

IV.1.5.Nhóm leơnh kieơm soát CPU và kieơm tra bit. IV.1.5.1.Leơnh kieơm soát CPU.

a> DAA : chưnh BCD cho phép +.

b> CPT : nghịch đạo boơ tích lũy biên đoơi bit 0 thành bit 1 và ngược lái.

c> NEG : che 4 bit thâp và thanh ghi A. Kêt quạ ghi vào A.

d> CCF : leơnh đạo bit CARRY.

e> SCF : leơnh thiêt laơp bit Carry ở tráng thái khođng tác đoơng.

f> NOP : khi gaịp leơnh này CPU khođng làm gì cạ chờ chu kỳ mới.

g> HALT : leơnh ngừng hốt đoơng chờ tín hieơu ngaĩt .INT,NMI hay RESET.

h> DI : tât cạ ngaĩt đôi với INT.

IV.2.1.Giới thieơu.

Ở các phaăn trước đã trình bày cơ sở lý thuyêt và câu trúc phaăn cứng cụa KIT Z80. Phaăn cứng cụa KIT Z80 cũng như mĩi phaăn cứng cụa các heơ thông máy tính khác đeău khođng theơ hốt đoơng được nêu như khođng có phaăn meăm đieău khieơn. Phaăn meăm đieău khieơn là moơt taơp hợp các leơnh chư ra các thao tác mà CPU phại thực hieơn. Phaăn meăm đieău khieơn CPU được chia thành hai lối chính :

+Phaăn meăm heơ thông :

Được náp vào ROM, được CPU đĩc tới ngay từ lúc mới câp đieơn. Phaăn meăm này đieău khieơn xử lý các thao tác như nhaơp, xuât dữ lieơu. Phaăn meăm này được viêt baỉng ngođn ngữ ASEMBLE và được dịch ra mã máy tương ứng với CPU-Z80.

+Phaăn meăm sử dúng :

Là phaăn meăm cụa người sử dúng náp vào được lưu trữ trong ROM hoaịc RAM, hay đĩa đeơ đieău khieơn CPU thực hieơn các thao tác mà người sử dúng yeđu caău. Phaăn meăm này có theơ viêt baỉng ngođn ngữ ASEMBLE, hay ngođn ngữ câp cao như : C, BASIC, PASCAL, FORTRAN.

Nói chung ngođn ngữ máy tính có nhieău lối nhưng khođng theơ đieău khieơn trực tiêp CPU được. CPU chư có theơ tiêp thu trực tiêp ngođn ngữ máy mà thođi. Do vaơy các chương trình đieău khieơn được viêt baỉng ngođn ngữ ASEMBLE hay ngođn ngữ câp cao đeău phại dịch ra ngođn ngữ máy. Cođng vieơc này có theơ tiên hành baỉng tay hay sử dúng hay sử dúng moơt chương trình bieđn dịch.

IV.2.2.Cách thức laơp trình.

Trong vieơc laơp trình cũng như cho chương trình cháy, đeău phại có moơt qui trình. Các bước caăn thiêt cho vieơc viêt moơt chương trình cháy như sau.

- Naĩm vững noơi dung và ý nghiã cụa chương trình. - Hốch định lưu đoă cụa chương trình.

- Viêt chương trình.

- ASEMBLE baỉng tay chương trình đã được viêt. - Náp chương trình vào boơ nhớ.

- Kieơm tra lái các dữ lieơu đưa vào đã dùng hay khođng. - Cho chương trình cháy.

- Giám định kêt qụa.

IV.2.3.Chức naíng cụa chương trình heơ thông.

- Nêu phím được nhân là phím sô thì CPU sẽ tiên hành thay đoơi điá chư hoaịc thay đoơi noơi dung cụa moêi ođ nhớ.

- Nêu là phím chức naíng thì CPU sẽ thực hieơn các chức naíng này được đaịt cho phím đó. Các chức naíng cụa phím như sau.

+Phím ↑: gĩi chương trình thi hành chương trình cụa người sữ dúng ngoài ra nó còn dùng đeơ taíng điá chư hieơn hành leđn 1.

+Phím ↓ : náp vào noơi dung hieơn thị được đưa vào boơ nhớ. Ngoài ra nó còn có chức naíng này giạm điá chư hieơn hành xuông 1.

+Phím Esc : Reset toàn boơ heơ thông

c>Quạn lý boơ nhớ.

Chương trình heơ thông sẽ giúp CPU truy xuât chính xác từng vùng nhớ tuỳ theo yeđu caău cụa người sử dúng. CPU có theơ thực hieơn được các thao tác tređn boơ nhớ là

-Đĩc dữ lieơu từ ROM và RAM. -Viêt dữ lieơu vào RAM.

d> Quạn lý các thiêt bị ngối vi.

Chương trình heơ thông giúp CPU truy xuât đên các thiêt bị ngối vị khác thođng qua CARD giao tiêp. Cođng vieơc này giúp phát huy tác dúng to lớn cụa CPU.

IV.2.4.Phađn tích chương trình heơ thông.

Mođït heơ thông vi xử lý muôn hốt đoơng được caăn phại có chương trình nguoăn đeơ khởi táo heơ thông, chương trình này phại phù hợp với thiêt kê phaăn cứng, vieơc thiêt kê

Một phần của tài liệu Quang báo dùng vi xử lý z80 (Trang 54 - 64)