Các chê đoơ định địa chư

Một phần của tài liệu Thiết kế thi công và viết chương trình điều khiển mạch thực hành cho Z80 CPU.DOC (Trang 26 - 29)

Haău hêt các leơnh Z80 hốt đoơng tređn dữ lieơu trong thanh ghi CPU, boơ nhớ ngoài, hay coơng I/O. Các chê đoơ định địa chư chư ra cách mà địa chư cụa dữ lieơu được táo ra trong moêi leơnh là như thê nào. Phaăn dưới cho moơt tóm taĩt sơ lược cho các lối định địa chư dùng trong Z80 :

Định địa chư tức thời :

Trong cách định địa chư này byte theo sau mã leơnh trong boơ nhớ chứa toán háng thực. Mã leơnh 1 hay 2 byte

Toán háng D7 D0

Ví dú: náp thanh ghi tích lũy với haỉng sô, ở đađy haỉng sô là byte ngay sau mã leơnh.

Định địa chư tức thời mở roơng :

Cách định địa chư này là sự mở roơng cụa cách định địa chư tức thời trong đó hai byte theo sau mã leơnh là các toán háng.

Mã leơnh 1 hay 2 byte Toán háng Vị trí thâp Toán háng Vị trí cao

Ví dú: load caịp thanh ghi HL ( thanh ghi 16 bit ) với 16 bit dữ lieơu ( 2 byte ).

Định địa chư trang khođng :

Z80 có leơnh 1 byte đaịc bieơt Call đeơ nhạy tới vị trí bât kỳ trong 8 vị trí trong trang khođng cụa boơ nhớ. Leơnh này đaịt PC tới địa chư hieơu quạ trong trang khođng. Sự tieơn dúng cụa leơnh này là chư caăn moơt byte đơn và 1 địa chư 16 bit xác định vị trí chương trình con, do đó tiêt kieơm được boơ nhớ.

Mã leơnh 1 byte

B7 B0 Địa chư có giá trị là ( B5 B4 B3 000) 2

Định địa chư tương đôi :

Định địa chư tương đôi dùng moơt byte dữ lieơu theo sau mã leơnh đeơ xác định đoơ dời từ chương trình hieơn tái tới nơi mà chương trình Jump có theơ xạy ra. Đoơ dời được thực hieơn baỉng cách coơng sô bù hai vào địa chư cụa mã leơnh:

Mã leơnh Jump relative (1 byte mã leơnh )

Toán háng Coơng thay sô bù 2 8 bit tới địa chư ( A+2)

Sự tieơn lợi cụa định địa chư tương đôi là nó cho phép nhạy tới vị trí gaăn đó mà chư caăn hai byte boơ nhớ. Do đó, những leơnh này có theơ giạm thieơu nhu caău boơ nhớ. Đoơ dời có theơ từ +127 đên -128 từ địa chư A+2. Vì vaơy toơng đoơ dời cụa leơnh nhạy tương đôi là +129 đên -126.

Định địa chư mở roơng :

Định địa chư mở roơng cung câp hai byte (16 bit) địa chư trong câu trúc leơnh. Dữ lieơu có theơ là địa chư đích chương trình có theơ nhạy tới hoaịc nó có theơ là địa chư cụa toán háng.

Mã leơnh 1 hay 2 byte

Địa chư thâp đên toán háng thâp Địa chư cao đên toán háng cao

Định địa chư mở roơng dùng nhạy từ vị trí này tới vị trí khác trong boơ nhớ hay náp và chứa dữ lieơu trong vị trí boơ nhớ bât kỳ. Khi định địa chư mở roơng được dùng đeơ xác định địa chư nguoăn hay đích cụa toán háng, ký hieơu (nn) sẽ được dùng đeơ chư ra noơi dung boơ nhớ tái nn, nn là địa chư 16 bit được chư ra trong câu trúc leơnh. Đieău này có nghĩa là hai byte boơ nhớ nn được dùng như là con trỏ chư đên vị trí boơ nhớ. Dâu ngoaịc có nghĩa là giá trị trong chúng được dùng như là con trỏ chư đên vị trí boơ nhớ. Ví dú (1200) chư noơi dung cụa boơ nhớ tái vị trí 1200.

Định địa chư chư sô :

Trong lối định địa chư này, byte dữ lieơu theo sau mã leơnh chứa đoơ dời được coơng với noơi dung cụa thanh ghi chư sô (Mã leơnh xác định thanh ghi chư múc được dùng ) đeơ táo ra con trỏ tới boơ nhớ.

Mã leơnh 2 byte mã leơnh Mã leơnh 2 byte mã leơnh

Sự thay Địa chư tređn thanh ghi chư múc đeơ táo pointer đên boơ nhớ

Ví dú cụa leơnh chư múc là load noơi dung cụa vị trí boơ nhớ ( thanh ghi chư múc + đoơ dời ) vào trong thanh ghi tích lũy. Đoơ dời là sô bù hai có dâu. Định địa chư có chư sô đơn giạn hóa chương trình dùng bạng dữ lieơu có thanh ghi chư múc chư đên đaău bạng. Hai thanh ghi chư múc được cung câp vì lý do thường caăn hai hay nhieău bạng. Hai thanh ghi chư múc trong Z80 là IX và IY. Đeơ định địa chư chư múc ta dùng ( IX + d ) hay ( IY + d ). Ở đađy d là đoơ dời naỉm sau mã leơnh. Dâu ngoaịc chư ra raỉng giá trị được dùng như là con chỏ chư đên boơ nhớ ngoài.

Định địa chư thanh ghi :

Nhieău mã leơnh cụa Z80 chư rõ thanh ghi nào được dùng. Ví dú load dữ lieơu trong thanh ghi B sang thanh ghi C.

Định địa chư ngaăm định :

Định địa chư ngaăm định là ám chư đên các phép toán mà mã leơnh tự đoơng ngaăm định moơt hay nhieău thanh ghi CPU như là nơi chứa các toán háng. Ví dú như taơp các phép toán sô hĩc thanh ghi tích lũy luođn được ngaăm định là nơi chứa kêt quạ.

Định địa chư gián tiêp thanh ghi :

Lối định địa chư này caăn caịp thanh ghi 16 bit ( như là HL ) đeơ chư tới vị trí bât kỳ trong boơ nhớ. Lối leơnh này rât mánh và nó được dùng trong 1 khoạng roơng các ứng dúng .

Ví dú load thanh ghi tích lũy với dữ lieơu trong boơ nhớ được trỏ bởi noơi dung thanh ghi HL Định địa chư chư múc là moơt theơ cụa định địa chư thanh ghi gián tiêp, khác nhau ở choê đoơ dời được coơng theđm trong định địa chư chư múc. Định địa chư thanh ghi gián tiêp cho phép truy xuât boơ nhớ tức thời đơn giạn nhưng hữu hieơu. Leơnh tìm và truyeăn khôi trong Z80 là lối mở roơng cụa định địa chư này, ở đó thanh ghi được taíng, giạm và so sánh moơt cách tự đoơng, Ký hieơu cho biêt vieơc định địa chư thanh ghi gián tiêp là dâu ngoaịc đơn bao quanh teđn thanh ghi (được dùng như là pointer). Ví dú ký hieơu (HL) chư raỉng noơi dung thanh ghi HL được dùng như là moơt pointer chư tới ođ nhớ. Thođng thường định địa chư gián tiêp thanh ghi dùng đeơ xác định các toán háng 16 bit. Trong trường hợp này, noơi dung thanh ghi chư đên byte thâp hơn cụa toán háng trong khi noơi dung thanh ghi coơng 1 chư đên byte cao cụa toán háng.

Định địa chư bit :

Z80 chứa moơt lượng lớn taơp các leơnh lieđn quan đên bit: set, reset và test. Những leơnh này cho phép bât kỳ vị trí boơ nhớ nào hoaịc thanh ghi CPU sử dúng phép toán bit thođng qua 1 trong 3 chê đoơ định địa chư trước đó ( thanh ghi, thanh ghi gián tiêp và chư múc ). 3 bit trong mã leơnh chư rõ thanh ghi nào được dùng.

Sự kêt hợp các chê đoơ định địa chư:

28 Mã leơnh 1 hay 2 byte

Nhieău leơnh dài hơn moơt toán háng ( như là leơnh sô hĩc hay load ). Trong trường hợp này hai kieơu định địa chư có theơ được tiên hành. Ví dú, load có theơ dùng định địa chư tức thời đeơ xác định nguoăn và định địa chư thanh ghi gián tiêp hay định địa chư chư múc đeơ xác định đích.

Một phần của tài liệu Thiết kế thi công và viết chương trình điều khiển mạch thực hành cho Z80 CPU.DOC (Trang 26 - 29)

Tải bản đầy đủ (DOC)

(148 trang)
w