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

我的博客

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

[2008-10-24 21:49] 实验16

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
       mov ax,code
       mov ds,ax
       mov si,offset setscreen
       mov ax,0
       mov es,ax
       mov di,200h
       mov cx,offset screedend-offset setscreen
       cld
       rep movsb

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

       mov ax,4c00h
       int 21h

setscreen: jmp short set1               ;设置直接定址表
        table dw offset sub1-offset setscreen+offset setscreen, offset sub2-offset setscreen+offset setscreen, offset sub3-offset setscreen+offset setscreen, offset sub4-offset setscreen+offset setscreen                             ;取得位移
                 
  set1:   push bx
            cmp ah,3
            ja set2
            mov bl,ah
            mov bh,0
            add bx,bx                                                    
            call word ptr table.202h[bx]
  set2:   pop bx
            iret                      
sub1: push bx
       push cx
       push es
       mov cx,0b800h
       mov es,cx
       mov bx,0
       mov cx,2000
subs1: mov byte ptr es:[bx],' '
       add bx,2
       loop subs1
       pop es
       pop cx
       pop bx
       ret

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

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

sub4:  push si
       push es
       push ds
       push di
       push cx
       mov si,0b800h
       mov es,si
       mov ds,si
       mov si,160
       mov di,0
       cld
       mov cx,24
subs4: push cx
       mov cx,160
       rep movsb
       pop cx
       loop subs4
       mov si,0
       mov cx,80
subs41:mov byte ptr es:[160*24+si],' '
       add si,2
       loop subs41
       pop cx
       pop di
       pop ds
       pop es
       pop si
       ret

screedend: nop

           mov ax,4c00h
           int 21h
code ends
end start
评论次数(1)  |  浏览次数(447)  |  类型(汇编作业) |  收藏此文  | 

[  jcw2008   发表于  2008-10-24 23:20  ]

好像有地方不对吧,不知博主有没有写调用7ch号中断的程序检查过结果?

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