汇编网首页登录博客注册
atel的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  今天一个个性,明天一个个性,原来我没的个性。
  • 『姓名』:张杰                
  • 『性别』:男    『发送消息
  • 个人说明:
  • 详细信息『加为好友』
学习动态
最新留言
好友圈
文章收藏
友情链接

[2008-03-25 14:58] 实验十六

刚开始的时候,把中断例程的安装代码放在了后面,怎么调试都不对,郁闷了好半天。
assume cs:code
code segment
int7ch: jmp short main
 table: dw cls,forecolor,backcolor,roll  
  main: push bx
        cmp ah,3
        ja return
        mov bl,ah
        mov bh,0
        add bx,bx
        call word ptr table[bx]
return: pop bx
        iret

cls: push ax         ;//清空
     push bx 
     push cx
     push ds
     mov ax,0b800h
     mov ds,ax
     mov bx,0
     mov cx,2000
empty: mov byte ptr [bx],' '
       add bx,2
       loop empty
       pop ds
       pop cx
       pop bx
       pop ax
       ret

forecolor: push ax        ;//换前景
           push bx
           push cx
           push ds
           mov bx,0b800h
           mov ds,bx
           mov bx,1
           mov cx,2000
    color: and byte ptr [bx],11111000b
           or [bx],al
           add bx,2
           loop color
           pop ds
           pop cx
           pop bx
           pop ax
           ret

backcolor: push ax         ;//换背景
           push bx
           push cx
           push ds
           mov bx,0b800h
           mov ds,bx
           mov bx,1
           mov cx,2000
  icolor:  push cx
           and byte ptr [bx],10001111b
           mov cl,4
           shl al,cl
           or [bx],al
           shr al,cl ;//少了这句,差点就找不到了.
           add bx,2
           pop cx
           loop icolor
           pop ds
           pop cx
           pop bx
           pop ax
           ret
           
roll: push ax             ;//滚动。
      push cx
      push ds
      push di
      push si
      push es
      mov ax,0b800h
      mov ds,ax           
      mov es,ax
      mov di,0
      mov si,160
      mov cx,160*24
      cld 
      rep movsb
      mov cx,80
      inc si
clear: mov byte ptr es:[si],' '
       add si,2
       loop clear
       pop es
       pop si
       pop di
       pop ds
       pop cx
       pop ax
       ret 
int7chend: nop 
start: mov ax,0
       mov es,ax
       mov di,200h        ;es:di目的地址
       mov ax,cs
       mov ds,ax
       mov si,offset int7ch     ;ds:si源地址
       mov cx,offset int7chend-offset int7ch   ;长度
       cld           ;方向为正
       rep movsb
       mov word ptr es:[4*7ch],0
       mov word ptr es:[4*7ch+2],20h   ;//设置中断向量
       mov ax,4c00h
       int 21h           
code ends
end start
评论次数(2)  |  浏览次数(701)  |  类型(汇编实验) |  收藏此文  | 

[  tomato   发表于  2008-03-26 11:51  ]

当博主实在调试不出来的时候,博主可以一步步跟踪!

[  tomato   发表于  2008-03-26 11:51  ]

当博主实在调试不出来的时候,博主可以一步步跟踪!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码