欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

答复

答复

引用:
最初由 HuangZhiHua发布
这是IBM PC或兼容机实现当中的一个功能,记忆中为了让BIOS在测试完内存容量后做模式切换使用的。键盘控制器8042上有一个输出连到了系统的复位!
这几句汇编的意思就是HuangZhiHua所说的意思,楼主将这段汇编直接用几个数字写出来,所有人都晕过去了,其实多定义几个值,这样就非常好理解了。
代码:
  PORT_A             EQU      60H       ; 8042键盘扫描/诊断输出

  STATUS_PORT        EQU      64H       ; 8042状态口

  OUT_BUF_FULL       EQU      01H       ; 0 = + 输出缓冲器满

  INPT_BUF_FULL      EQU      02H       ; 1 = + 输入缓冲器满

  ... ...

  ... ...

  SHUT_CMD           EQU     0FEH       ; 引起停止命令

  ;KEYBOARD STATUS REGISTER

  ; 7 6 5 4 3 2 1 0   Name                Allowable Values

  ; *                 Parity error        0=odd parity(no error),1=even parity

  ;   *               Receive time out    0=no error,1=keyboard did not finish

  ;     *             Transmit time out   0=no error,1=keyboard did not finish

  ;       *           Inhibit switch      0=keyboard inhibited,1=not inhibited

  ;         *         Command/data        0=addressed as port 60H,1=port 64H

  ;           *       System flag         0=reset by power ON,1=Self test OK

  ;             *     Input buffer full   0=empty,1=full

  ;               *   Output buffer full  0=empty,1=full

ooo0:

  in      al, STATUS_PORT   ; 检测输入缓冲器满

  mov     bl, al

  test    bl, OUT_BUF_FULL

  jz      short ooo1        ; 若没有,转ooo1

  in      al, PORT_A        ; 冲清

ooo1:

  test    bl, INPT_BUF_FULL ; 输出缓冲器还满吗?

  jnz     ooo0              ; 再次尝试

  mov     al, SHUT_CMD      ; shutdown cmd

  out     STATUS_PORT, al   ; 返回到实模式

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功