⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intcaptr.asm

📁 HT系列掌机部分功能测试程序(含源码)
💻 ASM
字号:
      .MODEL SMALL C

      public  _oldInt10
      public  _Int10
      public  _bPointer
      extrn   _filename: byte
      extrn   _TimeStamp: near


      .DATA

_oldInt10   DD ?
_bPointer   DW ?
charBuffer  DB 255 dup(?)

      .CODE

_Int10:
   sti
   push ax
   push bx
   push cx
   push dx
   push si
   push di
   push es
   push ds
   push bp
   mov  bp, @DATA
   mov  ds, bp
   mov  bp, sp

   cmp  ah, 0Eh
   je   is0Eh
   cmp  ah, 09h
   jne  bypass
is0Eh:
   mov  bx, _bPointer
   mov  ds:[charBuffer+bx], al
   inc  _bPointer
   cmp  bx,255
   je   flushOut
   cmp  al, 0Dh
   jne  bypass

flushOut:
   mov   al, 00000001B;  open file for write only
   mov   dx, offset _filename
   mov   ah, 3Dh
   int   21h
   jnc   fileOpened
   mov   ah, 3Ch
   mov   cx, 0h
   int   21h
   jnc   fileOpened
   jmp   bypass
fileOpened:
   mov   bx, ax
   mov   al, 2
   mov   ah, 42h
   xor   cx, cx
   xor   dx, dx
   int   21h
   jc    closeFile

   mov  ah, 40h
   mov  cx, _bPointer
   mov  dx, offset charBuffer
   int  21h
closeFile:
    mov  ah, 3Eh
    int  21h
    mov  _bPointer, 0
    call  _TimeStamp
    jmp   bypass

bypass:
   pushf
   push cs
   push offset returnAddr
   cli
   push  _oldInt10
   mov   ax, [bp+10h]
   mov   bx, [bp+0Eh]
   mov   cx, [bp+0Ch]
   mov   dx, [bp+0Ah]
   mov   si, [bp+08h]
   mov   di, [bp+06h]
   mov   es, [bp+04h]
   mov   ds, [bp+02h]
   mov   bp, [bp]
   retf

returnAddr:
   add   sp, 12h
   iret

   end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -