FOR I = 0 TO 7
 PRINT CHR$(PEEK(&HFFF5 + I));
 NEXT
 PRINT
 DEF SEG
 Tôi có thể lấy tất cả thông tin của BIOS, ví dụ như ngày sản xuất, nhà sản xuất, ngày giờ hệ thống... theo cách trên được không? Xin hướng dẫn.
 " />
  • Thứ Ba, 18/09/2007 10:28 (GMT+7)

    Code viết bằng QBasic 4.5

    Câu hỏi :
    Tôi có đoạn code viết bằng QBasic 4.5 sau:
     DEF SEG = &HF000
     PRINT "Date of the Rom Bios: ";
     FOR I = 0 TO 7
     PRINT CHR$(PEEK(&HFFF5 + I));
     NEXT
     PRINT
     DEF SEG
     Tôi có thể lấy tất cả thông tin của BIOS, ví dụ như ngày sản xuất, nhà sản xuất, ngày giờ hệ thống... theo cách trên được không? Xin hướng dẫn.
     

    Trả lời :

    QBasic *.* là trình thông dịch ngôn ngữ Basic của Microsoft và chỉ chạy trên nền MSDOS, nó hoạt động ở chế độ bộ nhớ thật (real-mode) và cung cấp các lệnh cho phép người lập trình truy xuất trực tiếp vào từng ô nhớ của bộ nhớ thật (ROM hay RAM) thông qua địa chỉ theo dạng segment: offset. Thí dụ đoạn chương trình trong câu hỏi của bạn sẽ truy xuất 8 ô nhớ liên tiếp từ địa chỉ ROM F000:FFF5 đến F000:FFFC, 8 ô nhớ này chứa chuỗi miêu tả ngày viết chương trình ROM BIOS của máy. Việc truy xuất trực tiếp vào các ô nhớ xác định của ROM BIOS không có tính tổng quát cao vì hiện có nhiều hãng viết ROM BIOS, mỗi hãng có thể qui định vị trí cụ thể để chứa các thông tin về BIOS của mình khác nhau.

     Hiện nay, MSDOS hầu như đã chết, người dùng thường dùng Windows và lập trình ứng dụng của mình trên Windows. Thí dụ như muốn lập trình bằng Basic, người dùng sẽ dùng môi trường VB. Ứng dụng VB chỉ chạy được trên Windows, nó hoạt động ở chế độ bộ nhớ ảo (virtual mode). Trong chế độ bộ nhớ ảo, mỗi ứng dụng sẽ chỉ thấy không gian luận lý riêng của ứng dụng (thường rất lớn, trên Windows là 4GB maximum). Dĩ nhiên, chương trình chạy ở chế độ bộ nhớ ảo sẽ không thể truy xuất trực tiếp ô nhớ RAM hay ROM thông qua địa chỉ thật của ô nhớ đó. Để cho phép ứng dụng truy xuất thông tin của hệ thống một cách an toàn, tổng quát và tin cậy, Windows đã cung cấp một số hàm API Windows phục vụ cho việc truy xuất này. Bạn có thể đọc tài liệu sử dụng hàm GetSystemInfo() và các hàm liên quan trong CD MSDN của Microsoft để biết chi tiết, cụ thể về các hàm truy xuất thông tin của hệ thống.

    Chuyên mục: Lập trình