Giả sử chúng ta có một máy tính có địa chỉ từ 64 bit và chúng ta muốn lập trình nó để xuất ra một ký tự 5x7 được lưu dưới dạng bitmap hình ảnh nhị phân (như cái bên dưới) sang màn hình ánh xạ bộ nhớ.
Vì chúng tôi có 5 x 7 = 35 pixel mỗi ký tự, chúng tôi có thể lưu trữ một ký tự bằng 35 bit trong một từ. Với bit có ý nghĩa ít nhất bắt đầu ở phía bên trái của từ và với mỗi pixel trong ảnh được biểu thị bằng bit thứ n như hình trên, số "3" ở trên sẽ được lưu trữ trong bộ nhớ là: 01110100010000100110000011000101110, sau đó là 29 không sử dụng bit được đặt thành 0.
Đây có phải là cách các ký tự được / được lưu trữ trong các máy tính cũ / hiện đại? Hay họ sử dụng một byte / từ trên mỗi pixel thay thế?
Nếu chúng được lưu trữ theo cách này, thì thói quen trong mã lắp ráp / mã máy (không sử dụng gì nhiều hơn các hướng dẫn cơ bản như bitwise, số học và các hoạt động vận chuyển dữ liệu từ Kiến trúc tập lệnh của máy tính) được sử dụng để chuyển đổi dữ liệu này thành hình ảnh trên Màn hình trông như thế nào? Nó sẽ là một cái gì đó như:
- Lưu trữ tọa độ hiển thị x và y cho pixel hiện tại sẽ được cập nhật trong một thanh ghi nhất định.
- Lưu trữ hai giá trị RGB đã chọn (trong trường hợp này là 0,255,0 cho màu xanh lá cây và 0,0,0 cho màu đen) trong hai thanh ghi riêng biệt khác.
- Có thêm hai thanh ghi hoạt động như các bộ đếm được khởi tạo thành 5 và 7 để theo dõi hàng và cột hiện tại của hình ảnh được hiển thị.
- Kiểm tra nếu thanh ghi cột không bằng 0. Nếu không, kiểm tra xem LSB của bitmap có được đặt thành 1 không, thì AND thanh ghi giá trị RGB tương ứng với thanh ghi tọa độ x và y tùy thuộc vào kết quả, sau đó MOV kết quả đó đến thanh ghi đầu ra hiển thị.
- Giảm thanh ghi bộ đếm hàng lên 1, kiểm tra xem nó có bằng 0. Nếu có, sau đó đặt nó trở lại 5 và tăng tọa độ y lên 1 và giảm bộ đếm cột thêm 1.
- Chuyển thanh ghi giữ bitmap 1 bit sang trái.
- JMP để hướng dẫn 4.
Có cách nào đơn giản hoặc hiệu quả hơn để làm điều này? Dường như thậm chí một thứ gì đó đơn giản như việc hiển thị một ký tự văn bản nhỏ chỉ mất khá nhiều thao tác và sẽ mất khoảng 200 chu kỳ CPU.
Cuối cùng, có bất kỳ cuốn sách hay tài nguyên tốt nào về mã cấp độ máy để hiển thị hình ảnh từ đầu không, vì tôi không thể tìm thấy bất kỳ thứ gì vì chúng che phủ chủ đề cụ thể này hoặc mã được viết bằng ngôn ngữ cấp cao hoặc một ngôn ngữ cấp cao trình biên dịch sử dụng macro, tất cả đều là "gian lận" và không giải thích điều gì về cơ bản đang diễn ra ở mức thấp nhất.