querybio.asm
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:2k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. INCLUDE         model.inc
  2. INCLUDE         fastlynx.inc
  3.     
  4.          .CODE text
  5. @FxQueryBios PROC    USES CX SI ES
  6.                 PUBLIC  @FxQueryBios
  7. ;* void _far _fastcall FxQueryBios(struct FxBiosInfo _near *);
  8.                 int     11H
  9.                 mov     al, ah
  10.                 mov     cl, 6
  11.                 shr     ah, cl          ; Isolate # of printer ports in ah
  12.                 shr     al, 1
  13.                 and     al, 7           ; Isolate # of serial ports in AL
  14.                 cmp     al, 4
  15.                 jbe     save_counts
  16.                 mov     al, 4
  17. save_counts:    mov     dx, ax          ; DH = # serial ports, DL = # printer
  18.                 mov     ax, 40H
  19.                 mov     es, ax
  20.                 xor     si, si
  21.                 xor     cx, cx
  22. serial_loop:    cmp     cl, dl
  23.                 jae     setup_parallel
  24.                 mov     ax, es:[si]
  25.                 or      ax, ax
  26.                 jz      setup_parallel
  27.                 mov     [bx + si].FxBiosInfo.serial_address, ax
  28.                 inc     cl
  29.                 add     si, 2
  30.                 jmp     serial_loop
  31. setup_parallel: xor     si, si
  32. parallel_loop:  cmp     ch, dh
  33.                 jae     store_nums
  34.                 mov     ax, es:[si + 8]
  35.                 or      ax, ax
  36.                 jz      store_nums
  37.                 
  38.                 mov     [bx + si].FxBiosInfo.parallel_address, ax
  39.                 inc     ch
  40.                 add     si, 2
  41.                 jmp     parallel_loop
  42. store_nums:     mov     word ptr [bx].FxBiosInfo.num_serial, cx
  43.                 ret
  44. @FxQueryBios    ENDP
  45.             END