BIOS中断

来源:互联网 发布:js date parse format 编辑:程序博客网 时间:2024/05/15 23:51

http://course.cug.edu.cn/21cn/%CE%A2%D0%CD%BC%C6%CB%E3%BB%FA%BC%BC%CA%F5/content/masm/chapter4/4-4/4-4-2.htm#

1、INT 17H(打印机I/O调用) 
  INT 17H中断处理程序有三个功能: 
  当AH=0时,把AL中的字符在打印机上打印出来。 
  当AH=1时,把AL中的初始化控制命令送给打印机。 
  当AH=2时,把打印机的状态读至AL寄存器。

D7
D6
D5
D4
D3
D2
D1
D0
确认
有纸
联机
错误
/
/
超时

  寄存器AH中的值决定一个中断处理程序的功能,称其为"功能号"。当AH=0时调用INT 17H中断,称为"INT 17H的0号功能",可以简记为"INT 17H/0
例1
用打印机打印一串字符。 
    MOV BX,OFFSET STRING 
    MOV CX,count 
  L1:MOV DX,0 
    MOV AL,[BX] 
    MOV AH,0 ;调用INT 17H/0, 
    INT 17H ;把AL中的字符在打印机上打印出来 
    INC BX 
    LOOP L1
    STRING DB 'abcduxyz' 
    count EQU $-STRING
2、INT 16H(键盘I/O中断) 
  AH=0:从键盘读入ASCII字符,放在AL中。 
  AH=1:测试有无键被按下。ZF=0,表示按过任意键,并在AL中获 得该键的ASCII码。ZF=1,未按过键。 
  AH=2:读取特殊功能键的状态至AL中。
D7
D6
D5
D4
D3
D2
D1
D0
Ins
CapsLock
NumLock
ScrollLock
Alt
Ctrl
左Shift
右Shift

  例2

      MOV AH,0 
  INT 16H
3、 INT 1AH (BIOS日期、时间中断) 
  AH=0:读当前时钟值到CX、DX中。CX为高位,DX为低位。时钟单位是54.9ms(1/18.2秒)(65536000/1193180)。 
  AH=1:设置当前时钟值。

例3

计算子程序PROCESS执行的时间。 
    STI 
    MOV CX,0 
    MOV DX,0 
    MOV AH,1;设置当前时钟为0。 
    INT 1AH 
    CALL PROCESS 
    MOV AH,0;读当前时钟到CX、DX中。 
    INT 1AH 
  将CX、DX中的四字节数除以18.2,得PROCESS执行的时间秒数。

原创粉丝点击