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

我的博客

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

[2010-09-09 00:47] 实验16

assume cs:code 
        
code segment
start:  mov ax,cs
        mov ds,ax
        mov si,offset do0
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset do0end-offset do0
        cld
        rep movsb
        jmp set
        table        dw offset sub1,seg sub1,offset sub2,seg sub2,offset sub3,seg sub3,offset sub4,seg sub4            ;不能放在这里,会被其他数据替换,必须放在中断中
set:    mov ax,0
        mov es,ax
        cli        
        mov word ptr es:[4*7ch+2],0
        mov word ptr es:[4*7ch],200h
        sti
        mov ax,202h
        int 7ch
        mov ax,4c00h
        int 21h

do0:        push bx        
        cmp ah, 3 
        ja sret 
        mov bl, ah 
        mov bh, 0 
        add bx, bx 
        add bx, bx 
                        
        call dword ptr ds:table[bx] 
sret:        pop bx 
        iret         
        
sub1:        push ax
        push bx
        push cx
        push es
        mov ax,0b800h
        mov es,ax
        mov bx,0
        mov cx,2000
s1:        mov byte ptr es:[bx],' '
        add bx,2
        loop s1
        pop es
        pop cx
        pop bx
        pop ax
        retf

sub2:        push ax
        push bx
        push cx
        push dx
        push es
        cmp al,7
        ja fh
        mov dl,al
        mov ax,0b800h
        mov es,ax
        mov bx,1
        mov cx,2000
s2:        and byte ptr es:[bx],11111000b
        or byte ptr es:[bx],dl        
        add bx,2
        loop s2
fh:        pop es
        pop dx
        pop cx
        pop bx
        pop ax
        retf        
sub3:        push ax
        push bx
        push cx
        push dx
        push es
        cmp al,7
        ja fh1        
        mov cl,4
        shl al,cl
        mov dl,al
        mov ax,0b800h
        mov es,ax
        mov bx,1
        mov cx,2000
s3:        and byte ptr es:[bx],10001111b
        or byte ptr es:[bx],dl        
        add bx,2
        loop s3
fh1:        pop es
        pop dx
        pop cx
        pop bx
        pop ax
        
        retf
sub4:        push ax
        push si
        push di
        push es        
        push cx
        push ds
        mov ax,0b800h
        mov es,ax
        mov di,0
        mov ds,ax
        mov si,160
        mov cx,160*24
        cld 
        rep movsb
        mov cx,80
s4:        mov byte ptr es:[di],' '
        add di,2
        loop s4
        pop ds
        pop cx
        pop es
        pop di
        pop si
        pop ax
        retf                                 
do0end:        nop
code ends
end start
评论次数(0)  |  浏览次数(937)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码