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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
友情链接

[2009-10-19 20:38] 实验16

assume cs:code
code segment
start:
  mov ax, cs
  mov ds, ax
  mov si, offset setscreen
  mov ax, 0h
  mov es, ax
  mov di, 200h
  mov cx, offset setscreenend - offset setscreen
  cld
  rep movsb

  mov word ptr es:[7ch*4], 200h
  mov word ptr es:[7ch*4+2], 0h
  mov ax, 4c00h
  int 21h

setscreen:
  jmp short set
  ;由于中断例程运行时,没有了本程序的开头部分(start:),
  ;此时要注意由于数据标号table、四个子程序sub1,sub2,sub3,sub4
  ;他们代表的地址在编译期间已经由编译器确定的,就是相对于本程序起始地址的偏移量
  ;即相对于start地址的偏移量。所以如果直接使用编译器计算的地址(本章的例子就是这样的)
  ;就会出现错误,为此只有我们自己计算地址才行。
  table dw offset sub1 - offset setscreen + 200h, offset sub2 - offset setscreen + 200h, offset sub3 - offset setscreen + 200h,offset sub4 - offset setscreen + 200h 
set:
  push bx
  cmp ah, 3
  ja sret
  mov bl, ah
  mov bh, 0
  add bx, bx
  call word ptr cs:202h[bx]
sret:
  pop bx
  iret
sub1:
  push bx
  push cx
  push es
  mov bx, 0b800h
  mov es, bx
  mov bx, 0
  mov cx, 2000
sub1s:
  mov byte ptr es:[bx], ' '
  add bx, 2
  loop sub1s
  pop es
  pop cx
  pop bx
  ret

sub2:
  push bx
  push cx
  push es
  mov bx, 0b800h
  mov es, bx
  mov bx, 1
  mov cx, 2000
sub2s:
  mov byte ptr es:[bx], 11111000b
  or es:[bx], al
  add bx, 2
  loop sub2s

  pop es
  pop cx
  pop bx    
  ret

sub3:
  push bx
  push cx
  push es
  mov cl, 4
  shl al, cl
  mov bx, 0b800h
  mov es, bx
  mov bx, 1
  mov cx, 2000
sub3s:
  and byte ptr es:[bx], 10001111b
  or es:[bx], al
  add bx, 2
  loop sub3s
  pop es
  pop cx
  pop bx
  ret
sub4:
  push cx
  push si
  push di
  push es
  push ds

  mov si, 0b800h
  mov es, si
  mov ds, si
  mov si, 160
  mov di, 0
  cld
  mov cx, 24
sub4s:
  push cx
  mov cx, 160
  rep movsb
  pop cx
  loop sub4s

  mov cx, 80
  mov si, 0
sub4s1:
  mov byte ptr [160*24+si], ' '
  add si, 2
  loop sub4s1

  pop ds
  pop es
  pop di
  pop si
  pop cx
  ret
setscreenend:
  nop
code ends
end start
评论次数(3)  |  浏览次数(746)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-10-20 14:15  ]

博主程序中的那部分注释说明非常重要,非常有用,非常有帮助。好啊。

[  游客   发表于  2009-10-20 14:25  ]

程序测试了一下,没什么问题。

[  zwz_good   发表于  2009-10-20 16:23  ]

看到自己的注释能给别人带来帮助,心里非常高兴,也许这就是帮助别人的快乐吧。

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