Hình 9.13. cách chứa ï thông tin trong bộ nhớ TAM đệm hình
Các máy tính cá nhân của IBM hoặc các máy tính tương thích thường không có sẵn khả năng đồ hoạ gắn trên bảng mẹ .Người ta phải lựa chọn để cắm vào bảng mẹ một vi mạch phối ghép ( vỉ điều khiển màn hình ) với khả năng hiển thị ở chếđộ văn bản / độ hoạ thích hợp và chọn loại màn hình phù hợp với bộđiều khiển đó . Do vậy tên một bộ điều khiển màn hình cũng dùng để gọi luôn các loại màn hình tương thích đi kèm với nó . CAG Văn bản 80x25 4/16 số PC.XT.AT p.g thấp 160x100 4/16 số PC.XT.AT p.g vừa 320x200 4/16 số PC.XT.AT p.g cao 640x200 2(đen , trắng) số PC.XT.AT Bộ phối ghép Chế độ Độ phân giải Màu / bộ màu Loại tín hiệu Có trong máy Thanh ghi bảng màu
xxRIGIBIRGB 0 5 15 Đến màn hình RBGI RI.GI.BI.R.BG I B G R Mặt 1 D0 Mặt B D1 Mặt G D2 Mặt R D3 Điểm 1 Điểm 0 Bộ nhớ đệm hình D7 D0
Hercules một màu 720x348 2 số PC.XT.AT màu 720x348 16/64 số PC.XT.AT EGA 640x350 16/64 số PC.XT.AT MCGA p.g vừa 320x200 256 tương tự PS2-25.80 p.g cao 640x480 2 tương tự PS2-25.80 VGA 11H 640x480 2 tương tự PS2-50.80 12H 640x480 16/256K tương tự PS2-50.80 13H 640x200 256/256K tương tự PS2-50.80 Super VGA 640x480 256/256K tương tự PS2-50.80 8514/A 1024x768 256/256K tương tự PS2-50.80
Hình 9.14 : Các loại phối ghép màn hình chính cho máy IBM
VỈ CGA CỦA IBM
Vỉ phối ghép màn hình màu đồ hoạ ( color grahíc a dapter : CGA ) một thời là một loại vỉ phối ghép màn hình rất thông dụng , nó có thể điều khiển màn hình làm việc ở chếđộ văn bản cũng như chếđộ đồ hoạ . Hạt nhân của vỉ CGA vẫn là vi mạch chuyên dụng CRTC này cung cấp các tín hiệu địa chỉ cho RAM đệm để làm tươi màn hình , tín hiệu để quét dòng điểm của ma trận điểm trong ROM tạo chữ , các tín hiệu đồng bộ dòng và đồng bộ mành và một số tín hiệu khác . Vỉ CGA có thểđiều khiển màn hình với các đầu vào RBG tách biệt hoặc cung cấp tín hiệu hình tổng hợp được điều chế cao tần cho các loại màn hình màu tổng hợp .
Trong vỉ CGA có bộ nhớ RAM đệm hình với dung lượng 16 KB và được bắt đầu từ địa chỉ OB800H . Ở chế độ văn bản , màn hình hiện được 80x25 ký tự theo ma trận điểm 8x8 , mỗi ký tự cần 2 byte liên tiếp để chứa mã và thuộc tính giống như ở bộ điều khiển cho màn hình một màu ( xem hình 9.10a , trên hình 9.10b các bit b2b1b0 tươngứng với các màu RGB cho chữ và b6b5b4 tươngứng với các màu RGB cho nền ) . Để hiện thị ký tự ta có thểđịnh nghĩa được 8 màu nền và 16 màu chữ theo tổ hợp với các bit thuộc tính ( xem hình 9.12 ) . Bit BL = 1 là hiện chữ nhấp nháy . I = 1 là để hiện chữ với cường độ sáng lớn hơn . Như vậy , để lưu giữ thông tin của 1 trang màn hình văn bản ta dùng hết 4 KB bộ nhớ và với 16 KB RAM đệm hình có trên vỉ CGA ta có thể lưu giữđược 4 trang văn bản .
Khi làm việc ở chế độđồ hoạ , tín hiệu từ RAM đệm được đưa trực tiếp đến các thanh ghi dịch đểđưa đến điều khiển riêng biệt mỗi súng điện tử . Vỉ CGA có thể làm việc ở 3 mức độ phân giải : thấp ( 160x100 điểm , 4 màu trong bảng 16 màu ) ,trung bình ( 320x200 điểm , 4 màu trong bảng 16 màu ) và cao ( 640x200 điểm , 2 màu đen và trắng ).
VỈ EGA CỦA IBM
Vi phối ghép đồ hoạ cải tiến ( enhanced graphics adapter : EGA ) có bên trong bộ điều khiển màn hình giống như mạch CRTC 6845 nên nó cho phép lập trình để định nghĩa ra tất cả các chế độ làm việc ở vỉ CGA , ngoài ra còn định nghĩa được một số chếđộ đặc biệt khác . Vỉ EGA sử dụng cách bố trí bộ nhớđệm theo kiểu mặt điểm ảnh và các thanh ghi bảng màu ( xem hình 9.13b). Trên hình 9.13 biẻu hiện chếđộ hiện thị 640x350 điểm và 16 màu trong bnảg màu gồm 64 màu . Bộ nhớ DRAM đệm được xắp xếp thành 4 mặt điểm , mỗi mặt chứa 1 bit mô tả thông tin về màu của 1 điểm . Một nhóm 4 bit đọc được từ 4 mặt , mỗi mặt chứa 1 bit trong 16 thanh ghi 8 bit của bảng màu . Chỉ có 6 bit thấp của thanh ghi mới được dùng để đưa ra điều khiển màn hình . Tổ hợp của 6 bit này tạo ra các màu của bảng 64 màu , đó là các màu trên thực tế hiện thị theo các giá trị cụ thể có trong 16 thanh ghi trong bảng màu .
BỘ MCGA CỦA IBM
Bộ phối ghép MCGA ( multicolor graphics array ) của IBM được cấy ngay trên bảng mẹ của máy PS/2-25 hoặc PS/2-30 cho phép lập trình để hiện thị trong tất cả các chếđộ của vỉ EGA và một số chếđộ khác . Ví dụ , ta có thể lập trình để có chếđộ hiện thị 320x200 điểm với 256 màu hoặc 640x480 điểm trắng đen .
VỈ VGA CỦA IBM
Ttrong vỉ phối ghép VAG( video gate array) cũng có bộ CRTC cho phép lập trình để chọn ra các giá trị thích hợp cho tần sốđiểm , số dòng quét mành , tần số quét mành , số dòng quét trội. Vỉ VGA có thể thực hiện được tất cả các chếđộ hiện thị của các vi CGA và EGA cùng nhiều chếđộ riêng biệt khác .
Ví dụ : vỉ VGA với 8 bit để mã hoá màu cho 1 điểm ảnh có thể điều khiển hiện thị 256 màu trong 1 bnảg màu gồm 262.144 ( 256 K ) màu . Để làm được như vậy , bộ nhớ của vỉ VGA được tổ chức thành 4 mặt , mỗi mặt chứa 8 bit mã hoá màu cho 1 điểm .Đầu ra 1 vỉ VGA là tín hiệu tương tự cho các màu RGB . Có 3 bộ DAC 6 bit được nối vào 6 bít tương ứng cho mỗi màu của 1 trong 256 thanh ghi màu 18 bít (hình 9.15a). Các thanh ghi màu này được chọn nhờ nội dung 4 bít thấp của thanh ghi bản màu, 4 bít cao của byte mã hóa màu cho 1 điểm chọn ra các thanh ghi bản màu còn 4 bít thấp của nó được dùng để chỉ ra địa chỉ phần cao của các thanh ghi màu (địa chỉ của một vùng các thanh ghi màu). Như vậy, với 64 mức màu cho 1 màu thì ta có bản màu gồm 64 x 64 x 64 = 256K màu.
Trên hình 9.15b là một ví dụ về chếđộ hiện thị 640 x 400 điểm 16 màu. Mỗi điểm ánh được mã hóa bằng 4 bít để tạo 4 mặt điểm, 4 bít này chọn ra được 1 trong 16 thanh ghi bản màu. Thanh ghi chếđộ chỉ cho phép 4 bit thấp của thanh ghi bản màu chọn ra 1 thanh ghi màu trong nhóm màu, 4 bít thấp của
thanh ghi chọn màu sẽ chọn 1 trong 16 nhóm màu. Như vậy, ta có thể chuyển rất nhanh giữa các nhóm 14 màu này.
* Lập trình cho các vĩ phối ghép màn hình
Các vĩ phối ghép màn hình về mặt lập trình là tương đương với các cổng có địa chỉ xác định. Vì vậy đểđiều khiển màn hình làm việc ta chỉ cần ghi các thông số cần thiết vào các thanh ghi điều khiển, thanh ghi bảng màu ... là xong . Trong thực tế có nhiều cách lập trình đểđiều khiển màn hình làm việc, trong đó có 2 cách thông dụng nhất :
+ Dùng các lệnh hợp ngữđể gi các thông số cần thiết vào các thanh ghi điều khiển của vỉ khối ghép đểđiều khiển chếđộ hiện thị và ghi trực tiếp kí tự cần hiện thị vào RAM đệm để thay đổi nội dung. Đây là cách đểđạt được chế độ hiện thị nhanh nhất.
+ Dùng các dịch vụ của ngắt INT 10H của BIOS nếu làm việc với các máy kiểu IBM . Cách này thường chậm hơn cách trên nhưng có lợi là ta có thể sử dụng các dịch vụ có sẵn của BIOS và vì vậy có thể trao đổi chương trình giữa các máy.
Ví dụ :
Để minh họa cho việc lập trình cho màn hình dùng hợp ngữ bằng cách ghi trực tiếp vào vùng RAM đệm hiện thị, ta lấy một ví dụ hiện thị một màn hình 80 cột và 25 hàng kí tự “S” (tức là 80 x 25 = 2000 kí tự “S” ) với màu tía trên nền xanh da trời
Thân của chương trình nói trên viết dưới dạng thủ tục có thể như sau :
D4-D7 Bốn mặt của Bốn mặt của bộ nhớ RAM đệm hình D0-D3 Thanh ghi Bảng màu
Thanh ghi của 18bit R G B 0 15 31 240 a) Hiện 320x200 điểm với 256 màu Thanh ghi Bảng màu
Thanh ghi của 18bit 0 15 31 240 4 mặt của bộ nhớ Ram đệm hình 255 DAC 6 255 DAC 6 Bit 0 15 D0 - D3 4 Nhóm 0 Nhóm 2 Nhóm15
Disp Proc
MOV AX,OB800H; Cho DS chỉ vào vùng RAM đệm MOV DS, AX
MOV CX, 2000 ; Số kí tự phải hiện
MOV DI, 0 ; Hiện từ kí tự tại góc trái cao HIEN :MOV {DI , 3524h ; S tía trên nền trời xanh !!!
ADD DI,2 : Hiện kí tự tiếp LOOP HIEN ; Cho đến hết MOV AH, 4CH ; về DOS INT 21H
Disp Endp