Giáo trình Cấu trúc máy tính và Hợp ngữ - Nguyễn Mạnh Hoàng
1. Ngôn ngữ, cấp máy và máy ảo (Language, level and
virtual machine)
1.1. Giới thiệu
Máy tính số (Digital computer) là máy giải quyết các vấn đề bằng cách thực hiện
các chỉ thị do con người cung cấp. Chuỗi các chỉ thị này gọi là chương trình (program).
Các mạch điện tử trong một máy tính số sẽ thực hiện một số giới hạn các chỉ thị đơn giản
cho trước. Tập hợp các chỉ thị này gọi là tập lệnh của máy tính. Tất cả các chương trình
muốn thực thi đều phải được biến đổi sang tập lệnh trước khi được thi hành. Các lệnh cơ
bản là:
- Cộng 2 số.
- So sánh với 0.
- Di chuyển dữ liệu.
Tập lệnh của máy tính tạo thành một ngôn ngữ giúp con người có thể tác động lên
máy tính, ngôn ngữ này gọi là ngôn ngữ máy (machine language). Tuy nhiên, hầu hết các
ngôn ngữ máy đều đơn giản nên để thực hiện một yêu cầu nào đó, người thiết kế phải
thực hiện một công việc phức tạp. Đó là chuyển các yêu cầu này thành các chỉ thị có chứa
trong tập lệnh của máy. Vấn đề này có thể giải quyết bằng cách thiết kế một tập lệnh mới
thích hợp cho con người hơn tập lệnh đã cài đặt sẵn trong máy (built-in). Ngôn ngữ máy
sẽ được gọi là ngôn ngữ cấp 1 (L1) và ngôn ngữ vừa được hình thành gọi là ngôn ngữ cấp
2 (L2).
Một phương pháp thực thi chương trình L2 là chuyển một lệnh trong L2 bằng một
chuỗi các lệnh tương đương trong L1. Kết quả là sẽ tạo thành một chương trình L1 và
máy tính sẽ thực hiện chương trình tương đương L1 thay vì thực hiện chương trình L2.
Kỹ thuật này gọi là biên dịch (compile). Cách khác là một lệnh trong chương trình L2 sẽ
được xem như dữ liệu ngõ vào của chương trình L1 và toàn bộ chương trình L2 sẽ được
thực thi tuần tự. Kỹ thuật này gọi là thông dịch (interprete), nó không yêu cầu tạo ra một
chương trình mới trong L1.
Biên dịch và thông dịch đều thực hiện chương trình L2 thông qua tập lệnh trong
chương trình L1. Chúng khác nhau ở chỗ là khi biên dịch thì toàn bộ chương trình L2 sẽ
được chuyển thành chuỗi lệnh L1 rồi sau đó mới được thực thi còn đối với phương pháp
thông dịch thì sẽ thực thi từng lệnh trong L2. Để thuận tiện hơn, ta giả sử tồn tại một máy
tính sử dụng ngôn ngữ máy là L2, ta gọi máy tính này là máy ảo (virtual machine).
vào AL. Chú ý rằng 4 bit tại 4 lớp đại diện cho 1 điểm ảnh nên trong kiểu hiện 16 EGA có độ phân giải cao nhất mỗi dòng cần 80byte (640 điểm ảnh / 8 điểm ảnh trên 1 byte); mỗi trang màn hình gồm 32 KB. Địa chỉ byte của điểm ảnh ở dòng i, cột j trang k (i=0- 349, j=0-639, k=0-1) là: Address (i,j,k) = A0000h + 8000h*k + 50h*j + int (i/8). Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 133 Với board VGA, các chế độ hiện văn bản từ 0 đến 3 và 7 cũng như các chế độ đồ họa từ 4 đến 6 và 13 đến 16 của CGA. EGA và MDA đều chạy được trên nó. Trong chế độ văn bản, mã ký tự được lưu trữ trong lớp nhớ 0 cùng với thuộc tính trong lớp 1 của RAM video VGA. Quá trình chuyển hóa địa chỉ cũng giống như EGA nhưng khác ở chổ nó vẫn đảm bảo chế độ văn bản 7 với độ phân giải 720x400, ma trận điểm ảnh 9x16. Trong chế độ đồ họa 4 ÷ 6 và 13 ÷19 , mọi tổ chức, cấu trúc cũng như cách tính địa chỉ tương tự như CGA và EGA. VGA được tăng cường 3 kiểu hiện hình mới từ 17 đến 19. Kiểu 17 tương thích với board đồ họa của máy PS/2 kiểu 30 là MCGA (multi colour graphics array). Các điểm ảnh chỉ gổm 1 bit (2 màu) được định vị chỉ trên lớp 0. Thí dụ, trong VGA kiểu 17 với 80 byte trên 1 dòng (640 điểm ảnh / 8 điểm ảnh trên 1 byte). Mỗi trang màn hình gồm 40 KB. Địa chỉ của byte ở dòng i, cột j ( i= 0-479), j=0-639) như sau: Address (i,j) = A0000h+50h*j+int (i/8) Kiểu 18, 4 bit của điểm ảnh được phân trong 4 lớp nhớ như ở EGA. Trong kiểu VGA phân giải cao với 16 màu khác nhau, 80 byte trên 1 dòng (640 điểm ảnh / 8 điểm ảnh trên 1 byte), mỗi trang màn hình gồm 40 KB (A0000h byte); địa chỉ của mỗi byte ở dòng i, cột j (i=0-479; j = 0-639) bằng: Address (i,j) = A0000h + 50h*j + int (i/8). Kiểu 19 với 256 màu cho 1 điểm ảnh thì RAM video lại được tổ chức rất đơn giản như 1 dãy tuyến tính, trong đó 1 byte tương ứng với 1 điểm ảnh. Giá trị của byte phân định màu của điểm ảnh. Kiểu này đòi hỏi 320 byte (140h) trên 1 dòng (320 điểm ảnh / 1 điểm ảnh trên 1 byte). Một trang màn hình gồm 64 KB (10000h) nhưng chỉ có 64000 byte được sử dụng. Địa chỉ của điểm ảnh trong dòng i, cột j (i = 0-199, j=0-319) là: Address (i,j) = A0000h + 140h*j + i 4.2.4. Bus cục bộ và chip xử lý đồ họa Để tăng tốc độ hiện đồ họa có 2 giải pháp: - Dùng bus cục bộ 32 bit để tránh hiện tượng nghẽn cổ chai (bottleneck) do bus ISA chỉ có 16 bit và tốc độ hạn chế (8.33Mhz); điều này cho phép 1 lượng thông tin nhiều hơn được trao đổi giữa CPU và board mạch trong 1 đơn vị thời gian. - Dùng chip xử lý đồ họa với BIOS riêng trên board mạch điều khiển monitor. Chip này sẽ làm hầu hết các công việc trừ một ít lệnh và thông số mô tả nội dung phần màn hình cần hiện là được cấp từ CPU. Thí dụ cần vẽ 1 hình chữ nhật với màu nào đó, board chỉ cần vài thông số ban đầu từ CPU như tọa độ của 2 góc và giá tri màu là đủ. Cách giải quyết như vậy rất có lợi khi PC chạy trong chế độ đa nhiệm. Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 134 2. Giao tiếp song song 2.1. Cấu trúc cổng song song Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ liệu bao gồm 5 chế độ hoạt động: - Chế độ tương thích (compatibility). - Chế độ nibble. - Chế độ byte. - Chế độ EPP (Enhanced Parallel Port). - Chế độ ECP (Extended Capabilities Port). 3 chế độ đầu tiên sử dụng port song song chuẩn (SPP – Standard Parallel Port) trong khi đó chế độ 4, 5 cần thêm phần cứng để cho phép hoạt động ở tốc độ cao hơn. Sơ đồ chân của máy in như sau: Chân Tín hiệu Mô tả 1 STR (Out) Mức tín hiệu thấp, truyền dữ liệu tới máy in 2 D0 Bit dữ liệu 0 3 D1 Bit dữ liệu 1 4 D2 Bit dữ liệu 2 5 D3 Bit dữ liệu 3 6 D4 Bit dữ liệu 4 7 D5 Bit dữ liệu 5 8 D6 Bit dữ liệu 6 9 D7 Bit dữ liệu 7 10 ACK (In) Mức thấp: máy in đã nhận 1 ký tự và có khả năng nhận nữa 11 BUSY (In) Mức cao: ký tự đã được nhận; bộ đệm máy in đầy; khởi động máy in; máy in ở trạng thái off- line. 12 PAPER EMPTY (In) Mức cao: hết giấy 13 SELECT (In) Mức cao: máy in ở trạng thái online 14 AUTOFEED (Out) Tự động xuống dòng; mức thấp: máy in xuống dòng tự động 15 ERROR (In) Mức thấp: hết giấy; máy in ở offline; lỗi máy in 16 INIT (Out) Mức thấp: khởi động máy in 17 SELECTIN (Out) Mức thấp: chọn máy in 18-25 GROUND 0V Cổng song song có ba thanh ghi có thể truyền dữ liệu và điều khiển máy in. Địa chỉ cơ sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4 được lưu trữ trong vùng dữ liệu của BIOS. Thanh ghi dữ liệu được định vị ở offset 00h, thanh ghi trang thái ở 01h, và thanh ghi điều khiển ở 02h. Thông thường, địa chỉ Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 135 cơ sở của LPT1 là 378h, LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h hoặc 279h và địa chỉ thanh ghi điều khiển là 37Ah hoặc 27Ah. Tuy nhiên trong một số trường hợp, địa chỉ của cổng song song có thể khác do quá trình khởi động của BIOS. BIOS sẽ lưu trữ các địa chỉ này như sau: Địa chỉ Chức năng 0000h:0408h Địa chỉ cơ sở của LPT1 0000h:040Ah Địa chỉ cơ sở của LPT2 0000h:040Ch Địa chỉ cơ sở của LPT3 Định dạng các thanh ghi như sau: Thanh ghi dữ liệu (hai chiều): 7 6 5 4 3 2 1 0 Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0 Chân số 9 8 7 6 5 4 3 2 Thanh ghi trạng thái máy in (chỉ đọc): 7 6 5 4 3 2 1 0 Tín hiệu máy in BUSY ACK PAPER EMPTY SELECT ERROR IRQ x x Số chân cắm 11 10 12 13 15 - - - Thanh ghi điều khiển máy in: 7 6 5 4 3 2 1 0 Tín hiệu máy in x x DIR IRQ Enable SELECTIN INIT AUTOFEED STROBE Số chân cắm - - - - 17 16 14 1 x: không sử dụng IRQ Enable: yêu cầu ngắt cứng; 1 = cho phép; 0 = không cho phép Chú ý rằng chân BUSY được nối với cổng đảo trước khi đưa vào thanh ghi trạng thái, các bit SELECTIN , AUTOFEED và STROBE được đưa qua cổng đảo trước khi đưa ra các chân của cổng máy in. Thông thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn PC nhiều nên các đường ACK , BUSY và STR được sử dụng cho kỹ thuật bắt tay. Khởi đầu, PC đặt dữ liệu lên bus sau đó kích hoạt đường STR xuống mức thấp để thông tin cho máy in biết rằng dữ liệu đã ổn định trên bus. Khi máy in xử lý xong dữ Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 136 liệu, nó sẽ trả lại tín hiệu ACK xuống mức thấp để ghi nhận. PC đợi cho đến khi đường BUSY từ máy in xuống thấp (máy in không bận) thì sẽ đưa tiếp dữ liệu lên bus. 2.2. Giao tiếp với thiết bị ngoại vi 2.2.1. Giao tiếp với máy tính Quá trình giao tiếp với cổng song song dùng 2 chế độ: chế độ chuẩn SPP và chế độ mở rộng. Việc giao tiếp ở chế độ chuẩn mô tả như sau: 13 13 25 25 12 12 24 24 11 11 23 23 10 10 22 22 9 9 21 21 8 8 20 20 7 7 19 19 6 6 18 18 5 5 17 17 4 4 16 16 3 3 15 15 2 2 14 14 1 1 Hình 5.15 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ chuẩn Sơ đồ chân kết nối mô tả như sau: PC1 PC2 Chức năng Chân Chân Chức năng D0 2 15 ERROR D1 3 13 SELECT D2 4 12 PAPER EMPTY D3 5 10 ACK D4 6 11 BUSY BUSY 11 6 D4 ACK 10 5 D3 PAPER EMPTY 12 4 D2 SELECT 13 3 D1 ERROR 15 2 D0 GND 25 25 GND Ngoài ra, việc kết nối giữa 2 máy tính sử dụng cổng song song có thể dùng chế độ mở rộng, chế độ này cho phép giao tiếp với tốc độ cao hơn. Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 137 13 13 25 25 12 12 24 24 11 11 23 23 10 10 22 22 9 9 21 21 8 8 20 20 7 7 19 19 6 6 18 18 5 5 17 17 4 4 16 16 3 3 15 15 2 2 14 14 1 1 rộng Hình 5.16 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ mở Sơ đồ chân kết nối mô tả như sau: PC1 PC2 Chức năng Chân Chân Chức năng D0 2 2 D0 D1 3 3 D1 D2 4 4 D2 D3 5 5 D3 D4 6 6 D4 D5 7 7 D5 D6 8 8 D6 D7 9 9 D7 SELECT 13 17 SELECTIN BUSY 11 16 INIT ACK 10 1 STROBE SELECTIN 17 13 SELECT INIT 16 11 BUSY STROBE 1 10 ACK 2.2.2. Giao tiếp thiết bị khác Quá trình giao tiếp với các thiết bị ngoại vi có thể thực hiện thông qua chế độ chuẩn. Để đọc dữ liệu, có thể dùng một IC ghép kênh 2Æ1 74LS257 và dùng 4 bit trạng thái của cổng song song còn xuất dữ liệu thì sử dụng 8 đường dữ liệu D0 – D7. Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 138 9 Q6 3B Q2 D6 74LS06 9 8 1 STROBE 14 2 3 2 10K1 9 15 4 D0 D1 Q0 5 8 Q13 7 16 8 D2 6 7 6 4 13 D3 17 14 D4 D5 Q3 12 Q4 15Q5 5 VCC 4 5 18 6 19 7 20 8 21 9 22 10 ACK 23 11 PAPER EMPTY 24 12 SELECT 17 16 18 19 D7 Q7 11 CLK 1 OE 74LS374 74LS257 4 2 3 2 1 SW0-7 2 3 10K 9 25 74LS06 13 7 1Y 9 2Y 4Y 1A 5 2A 11 4A 3 2B 5 Q0 6 Q1 12 Q3 15 Q4 Q6 D0 4 D1 7 D3 13 D4 14 D6 8 7 5 VCC 4 2 1 AUTO FEED 3 4 10 19 13 Q7 4B 1 D7 18 11 CLK SELECT IN 74LS06 5 6 A/B 15 G OE 1 74LS374 Hình 5.17 – Mạch giao tiếp đơn giản thông qua cổng máy in Giao diện: Hình 5.18 – Giao diện của chương trình giao tiếp với cổng máy in Chương trình giao tiếp trên VB sử dụng thư viện liên kết động để trao đổi dữ liệu với cổng máy in. Thư viện IO.DLL bao gồm các hàm sau: - Hàm PortOut: xuất 1 byte ra cổng Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Port: địa chỉ cổng, Data: dữ liệu xuất - Hàm PortWordOut: xuất 1 word ra cổng Tài liệu Cấu trúc máy tính và Hợp ngữ Tổ chức vào / ra GV: Nguyễn Mạnh Hoàng Trang 139 Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) - Hàm PortDWordOut: xuất 1 double word ra cổng Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long) - Hàm PortIn: nhập 1 byte từ cổng, trả về giá trị nhập Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte - Hàm PortWordIn: nhập 1 word từ cổng Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer - Hàm PortDWordIn: nhập 1 double word từ cổng Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
File đính kèm:
- cau truc may tinh va hop ngu.pdf