龙龙 发表于 2015-6-22 03:15:32

汇编作业 实验15

  
  assume cs:code, ss:stack
  stack segment
  db 128 dup(0)
  stack ends
  code segment
  start:
  mov ax, stack
  mov ss, ax
  mov sp, 128
  push cs
  pop ds
  mov si, offset int9      ; ds:si指向源地址
  mov ax, 0
  mov es, ax
  mov di, 204H         ; es:di指向目的地址
  mov cx, offset int9end-offset int9 ; 传输长度
  cld            ; 传输方向为正
  rep movsb
  push es:
  pop es:
  push es:
  pop es:
  cli
  mov word ptr es:, 204H
  mov word ptr es:, 0
  sti
  mov ax, 4c00H
  int 21H
  ; ****************************************
  ; 新的int 9中断历程
  ; 在DOS下, 按下A键后, 除非不松开, 否则显示满屏幕的A, 其它情况正常处理
  int9:
  push ax
  push bx
  push cx
  push es
  in al, 60H      ; 从键盘读取输入字符
  pushf
  call dword ptr cs:
  ; 使用原来的int 9中断处理一般字符
  cmp al, 9EH   ; 判断按下A键后是否松开
  jne int9ret
  mov ax, 0b800H
  mov es, ax
  mov bx, 0       ; es:bx为显示区首地址
  mov cx, 2000      ; 满屏可显示2000个字符
  s:
  mov byte ptr es:, 'A'
  add bx, 2
  loop s
  int9ret:
  pop es
  pop cx
  pop bx
  pop ax
  iret
  int9end:
  nop
  ; ****************************************
  code ends
  end start

nikkitang 发表于 2015-6-27 01:39:08

每天都来学习,一定会进步的,加油!

nanren91234 发表于 2015-10-2 08:39:14

66666666666666
页: [1]
查看完整版本: 汇编作业 实验15