2011-12-14 21 views
6

Tôi nhận thấy từ biểu dữ liệu Zilog trên Z80 với nhóm hướng dẫn I/O (IN và OUT), nội dung của các thanh ghi khác nhau thường được đặt trong 8 bit trên cùng của bus địa chỉ (tùy thuộc vào lệnh), với 8 bit thấp hơn chọn một trong số tối đa 256 thiết bị được kết nối về mặt lý thuyết.Địa chỉ I/O 16 bit không được đăng ký trên Z80

Câu hỏi của tôi là điểm làm việc này với 8 bit trên này là gì? Tôi biết một số máy sử dụng điều này trong một cách nào đó liên quan đến việc giảm độ phức tạp giải mã, nhưng chúng có được sử dụng nghiêm túc cho bất kỳ thứ gì không? Tôi muốn thực hiện các hướng dẫn chính xác như Z80 gợi ý, nhưng tôi không thấy điểm trong việc thực hiện hành vi này vì nó không chuẩn. Hành vi này được mô tả là không có giấy tờ, vì vậy trên một 'Hệ thống Master Sega' chẳng hạn, tôi sẽ thoát khỏi điều này? Cảm ơn nhiều.

Kính trọng, Phil Potter

+1

Không có giấy tờ nhưng trên biểu dữ liệu? – chance

+0

Xin lỗi ý tôi là mặc dù hành vi này là bình thường - việc giải quyết các thiết bị I/O chỉ chính thức là 8-bit. – PhilPotter1987

Trả lời

5

Hành vi này là hoàn toàn documented bởi Zilog (trang 269-287).

Tôi đoán rằng một số thiết bị ngoại vi có thể sử dụng các bit trên A8..A15 của bus địa chỉ như một loại tham số 8 bit.

+0

Cảm ơn :-) Tốt hơn khi mô phỏng hành vi này. – PhilPotter1987

+1

Sự phức tạp giải mã giảm được ám chỉ bởi Phil là cách sử dụng phổ biến nhất - sử dụng một dòng địa chỉ trực tiếp khi bật/tắt thiết bị rẻ hơn kết hợp một cách logic và không cảm thấy lãng phí khi có 16 trong số đó. Các bàn phím trên 8bit micros có xu hướng khai thác hành vi này để xử lý một phần địa chỉ cổng như một loại tham số, ngoại trừ việc bạn đang bật hoặc tắt các dòng bàn phím với các dòng địa chỉ (vì vậy nó giống như mặt nạ) và kết quả là lôgic AND của tất cả các dòng bị ảnh hưởng (không có mục đích, chỉ vì hội đồng quản trị là người thu gom mở). – Tommy

2

Một số hệ thống sử dụng 8 bit trên làm địa chỉ và 8 bit dưới làm thông số. CPC Amstrad là ví dụ chính. Điều này làm cho OUT (C), r hầu như chỉ có thể sử dụng được, mặc dù tất nhiên bây giờ nó thực sự hoạt động như OUT (B), r; C thường được sử dụng làm tham số để thuận tiện. Hệ quả là OUT (n), A trở nên gần như hoàn toàn vô dụng, trừ khi bạn muốn gửi 0x34 đến cổng 0x34, v.v.

+1

Amstrad trên thực tế có khá ít [cổng] (http://www.cpcwiki.eu/index.php/I/O_Port_Summary) trong đó tất cả 16 bit phải được sử dụng. –

0

Trên ZX Spectrum bàn phím có thể đọc chỉ bằng cách đọc từ cổng 0xfe khi 8 dòng địa chỉ cao nhất đang chọn một trong 8 nhóm gồm 5 khóa. Ví dụ, nếu bạn muốn quét các phím Q, W, E, RT 8 bit cao của bus địa chỉ phải 0xfb:

ld bc,#fbfe 
    in a,(c)  ; reading from port 0xfe while upper 8 address lines are 0xfb 

Đây là giống hệt nhau như:

ld a,#fb 
    in a,(#fe)  ; reading from port 0xfe while upper 8 address lines are 0xfb 

Một số máy arcade từ những năm 80 giao tiếp với additio phần cứng nal bằng cách xuất hơn 8 bit tại một thời điểm với một lệnh out - các bit bổ sung được đọc từ các dòng địa chỉ trên.

Các vấn đề liên quan