#include <stdio.h> #include <dos.h> void main(void) { /* Pointer to location of Port Addresses */ unsigned int far *ptraddr; /* Address of Port */ unsigned int address; int a; ptraddr = (unsigned int far *)0x00000408; for (a = 0; a < 3; a++) { address = *ptraddr; if (address == 0) printf("No port found for LPT%d
", a+1); else printf("Address assigned to LPT%d is %Xh
", a+1, address); *ptraddr++; } } |
Trương trình C nầy đơn giản là tìm đến điạ chỉ 0000:0408h và dò tìm xem có port nào tồn tại hay không. Nó sẽ dò từ 0000:0408h đến 0000:040Dh để kiểm tra LPT1, LPT2, và LPT3. Bạn nên nhớ mổi base address sẽ có 2 bytes (sizeof(unsigned int) = 2 bytes!). Như tôi mô tả phía trên, Base+1, Base+2...chẳng qua là lối gọi phổ thông trong cách lập trình. Chẳng hạn bạn kiểm tra nhà số 10, 11, 12. Bạn có thể kiểm tra nhà số 10 sau đó nhà số 10 +1 = 11 vân vân... |