鱼C论坛

 找回密码
 立即注册
查看: 1545|回复: 0

这程序有问题吗,实验16习题

[复制链接]
发表于 2014-4-19 15:28:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;编写子程序实现功能1,清屏  2,设置前景色 3,设置背景色 4,向上滚动一行
assume cs:code
code segment

start: mov ax,cs
           mov ds,ax
           mov si,offset int7
           mov ax,0
           mov es,ax
           mov di,200h
          
           mov cx,offset int7ch-offset int7
           cld
           rep movsb
          
           mov ax,0
           mov es,ax
           mov word ptr es:[7ch*4],200h
           mov word ptr es:[7ch*4+2],0
          
           mov ah,2    ;ah传递执行子程序的序号  0:清屏   1:设置前景色   2:设置背景色   3:向上滚动一行
           mov al,2    ;al存储颜色       
           int 7ch
                mov ax,4c00h
                int 21h
                ORG 200H
               
        int7:jmp short s0
    a dw fun1,fun2,fun3,fun4
        s0:push bx
           cmp ah,3
           ja s5
           mov bl,ah
           mov bh,0
           add bx,bx
           call word ptr a[bx]
           s5:pop bx
              nop
                  iret                  
   fun1:push bx     ;    清屏
                push es
                push cx
                mov bx,0b800h
                mov es,bx
                mov bx,0
                mov cx,2000
          s:mov byte ptr es:[bx],' '
            add bx,2
                loop s
                pop cx
                pop es
                pop bx
                ret
               
   fun2:push bx     ;   设置前景色
                push es
                push cx
                mov bx,0b800h
                mov es,bx
                mov bx,1
                mov cx,2000
         s1:and byte ptr es:[bx],11111000b
            or es:[bx],al
                add bx,2
                loop s1
                pop cx
                pop es
                pop bx
                ret
               
  fun3:        push bx     ;   设置背景色
                push es
                push cx
                shl al,1
                shl al,1
                shl al,1
                shl al,1
               
                mov bx,0b800h
                mov es,bx
                mov bx,1
                mov cx,2000
         s2:and byte ptr es:[bx],10001111b
            or es:[bx],al
                add bx,2
                loop s2
                pop cx
                pop es
                pop bx
                ret
               
  fun4: push di     ;向上滚动一行
                push es
                push cx
                push si
                push ds
                mov di,0b800h
            mov es,di
                mov ds,di
                mov di,0
                mov si,160
                mov cx,24
        s3: push cx
            mov cx,160
            cld
            rep movsb
            pop cx
            loop s3
          
            mov si,0
            mov cx,80
         s4:mov byte ptr es:[160*24+si],' '
            add si,2
            loop s4
          
                pop ds
                pop di
                pop cx
                pop es
                pop bx
                ret
int7ch:nop
code ends
end start


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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