找回密码
 立即注册
查看: 3150|回复: 1

汇编作业 实验15

[复制链接]

78

主题

109

回帖

1023

积分

高级会员

积分
1023

猴年

龙龙实名认证 发表于 2015-6-22 03:15:32 | 显示全部楼层 |阅读模式
  
  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:[9*4]
  pop es:[200H]
  push es:[9*4+2]
  pop es:[202H]
  cli
  mov word ptr es:[9*4], 204H
  mov word ptr es:[9*4+2], 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:[200H]
  ; 使用原来的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:[bx], 'A'
  add bx, 2
  loop s
  int9ret:
  pop es
  pop cx
  pop bx
  pop ax
  iret
  int9end:
  nop
  ; ****************************************
  code ends
  end start

7

主题

215

回帖

959

积分

高级会员

积分
959
nikkitang 发表于 2015-6-27 01:39:08 | 显示全部楼层
每天都来学习,一定会进步的,加油!
回复

使用道具 举报

2

主题

248

回帖

1602

积分

高级会员

积分
1602
nanren91234 发表于 2015-10-2 08:39:14 | 显示全部楼层
66666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|虫虫联盟 ( 备案号:蜀ICP备15018121号-1 )

GMT+8, 2026-4-19 14:45 , Processed in 2.386383 second(s), 26 queries .

Powered by Discuz! X5.0 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表