`
duzc2
  • 浏览: 59623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
收藏列表
标题 标签 来源
利用修改显示页面功能实现动画 编辑
    ; masm main.asm;  
      
    ; link main;  
      
       
      
       
      
    STACK SEGMENT PARA STACK  
     DB 256 DUP (0)  
    STACK ENDS  
      
    DATA SEGMENT PUBLIC  
     point dw 0b800h  
     COLOR DB 11011000B  
     MASKS DB 11000000b  
           DB 00110000B  
           DB 00001100B  
           DB 00000011B  
     COUNT DW 24  
     COORD DB 103  
           DW 154  
           DB 103  
           DW 155  
           DB 103  
           DW 156  
           DB 103  
           DW 157  
           DB 103  
           DW 158  
           DB 103  
           DW 159  
           DB 103  
           DW 160  
           DB 103  
           DW 161  
           DB 103  
           DW 162  
           DB 103  
           DW 163  
           DB 103  
           DW 164  
           DB 103  
           DW 165  
           DB 103  
           DW 166  
           DB 102  
           DW 155  
           DB 101  
           DW 165  
           DB 101  
           DW 156  
           DB 101  
           DW 164  
           DB 100  
           DW 157  
           DB 100  
           DW 163  
           DB 99  
           DW 158  
           DB 99  
           DW 162  
           DB 98  
           DW 159  
           DB 98  
           DW 161  
           DB 97  
           DW 160  
    EIGHTY DB 80  
    DATA ENDS  
    CODE SEGMENT PUBLIC  
     START PROC FAR  
       ASSUME CS:CODE, DS:DATA , SS:STACK  
         PUSH DS  
         MOV AX,0  
         PUSH AX  
         MOV AX,DATA;  
         MOV DS,AX  
         MOV Ax,4  
         INT 10H  
         mov dx,3d4h  
         MOV DX,3D9H  
         MOV AL,09H  
         OUT DX,AL  
         mov bx,point  
         call chgdm  
         MOV AX,0b8feh  
         MOV ES,AX  
         MOV CX,COUNT  
         MOV BX,OFFSET COORD  
    MAIN:MOV AL,[BX]  
         INC BX  
         MOV DX,[BX]  
         ADD BX,2  
         CALL DRAW  
         LOOP MAIN  
    move:mov cx,0dh  
         mov dx,3300h  
         mov ah,86h  
         int 15h  
         add point,010h  
         cmp point,0bb30h  
         je exit  
         mov bx,point  
         call chgdm;  
         jmp move  
    exit:mov cx,3dh  
         mov dx,3300h  
         mov ah,86h  
         int 15h  
         mov ax,2  
         int 10h  
         ret  
     start endp  
     DRAW PROC NEAR  
         SHR AL,1  
         JC ODD  
         MOV DI,0  
         JMP SHORT COMMON  
     ODD:MOV DI,2000H  
    COMMON:MUL EIGHTY  
         ADD DI,AX  
         MOV SI,DX  
         SHR DX,1  
         SHR DX,1  
         ADD DI,DX  
         AND SI,03H  
         MOV AL,[MASKS+SI]  
         MOV DH,COLOR  
         AND DH,AL  
         not al  
         mov ah,es:[di]  
         and ah,al  
         OR AH,DH  
         MOV ES:[DI],AH  
         RET  
     DRAW ENDP  
     chgdm proc near ;DM segment in bx  
         push dx  
         push ax  
         mov dx,3d4h  
         mov al,12  
         out dx,al  
         inc dx  
         mov ah,bh  
         out dx,al  
         dec dx  
         mov al,13  
         out dx,al  
         inc dx  
         mov al,bl  
         out dx,al  
         pop ax  
         pop dx  
         ret  
     chgdm endp  
    CODE ENDS  
       END START  
dos下用pc喇叭唱月亮代表我的心
    STACK SEGMENT STACK  
      DB 256 DUP(0)  
    STACK ENDS  
    DATA SEGMENT  
     OUTB DB 0AH,0DH,"music:yue liang dai biao wo de xin",0AH,0DH,0ah,0dh  
        db "               ^ ^                      ^ ^          ",0ah,0dh  
        db "            ^        ^              ^        ^      ",0ah,0dh  
        db "           ^             ^       ^             ^     ",0ah,0dh  
        db "          ^                ^  ^                 ^    ",0ah,0dh  
        db "          ^                                     ^    ",0ah,0dh  
        db "           ^                                    ^    ",0ah,0dh  
        db "            ^                                  ^     ",0ah,0dh     
        db "             ^                                ^      ",0ah,0dh  
        db "               ^                            ^       ",0ah,0dh  
        db "                ^                         ^        ",0ah,0dh  
        db "                  ^                     ^           ",0ah,0dh  
        db "                    ^                 ^         ",0ah,0dh  
        db "                      ^             ^      ",0ah,0dh  
        db "                        ^        ^       ",0ah,0dh  
        db "                           ^  ^    ",0ah,0dh  
        db " -- Du Tian Wei.",0ah,0dh  
        db "   2008.11.25",0ah,0dh  
        db 0ah,0dh,"$"  
     music  dw 262,1,294,1,330,1,349,1,0,1,392,1,0,1,440,1,0,1,494,1,0,1,523,5  
        dw 0,4  
        dw 196,1  
        dw 262,3,330,1,392,3,262,1  
        dw 247,3,330,1,392,2,0,1,392,1  
        dw 440,1,494,2,523,3,440,1  
        dw 440,1,392,1,392,2,0,2,330,1,294,1  
        dw 262,3,262,1,262,2,330,1,294,1  
        dw 262,6,294,1,330,1  
        dw 294,2,262,1,220,2,294,1,330,1  
        dw 294,6,0,1,196,1  
        dw 294,2,220,1,247,1,262,1,294,1  
        dw 262,6,330,1,392,1  
        dw 247,6,220,1,247,1  
        dw 220,3,247,1,220,3,196,2  
        dw 330,6,392,2  
        dw 330,3,294,1,262,2,392,2  
        dw 247,6,220,1,247,1  
        dw 262,6,294,1,330,1  
        dw 294,6,0,1  
        dw 196,1  
        dw 262,3,330,1,392,3,262,1  
        dw 247,3,330,1,392,2,0,1,392,1  
        dw 440,1,494,2,523,3,440,1  
        dw 440,1,392,1,392,2,0,2,330,1,294,1  
        dw 262,3,262,1,262,2,330,1,294,1  
        dw 262,6,294,1,330,1  
        dw 294,3,220,1,247,2,262,1,294,1  
        dw 262,6,"$"  
    DATA ENDS  
    CODE SEGMENT  
     ASSUME CS:CODE, DS: DATA  
     START PROC FAR  
            push si  
        PUSH DS  
            MOV AX,0  
            PUSH AX  
            MOV AX,DATA  
            MOV DS,AX  
            ;PROGRAM START !!!  
            ;CALL WAITT;WAIT A MOMENT  
            MOV AH,09       ; PRINT  
            MOV DX,OFFSET OUTB  
            INT 21H         ; PRINT  
        ;jmp exit;text test  
        mov si , offset music  
     play:  mov ax,ds:[si]  
        cmp ax,'$'  
        je exit  
        cmp ax,0  
        je jtime  
            CALL SOUND  
    jtime:  inc si  
        inc si  
        mov ax,ds:[si]  
        call waittime  
        call endsound  ; end sound  
        inc si  
        inc si  
        jmp play  
      exit: ret  
     START ENDP  
     waittime proc near  
        push cx  
        mov cx,ax  
      wloop:call waitt  
        loop wloop  
        pop cx  
        ret  
     waittime endp  
     SOUND PROC NEAR ;  
        push bx  
        push cx  
        push dx  
        mov bx,ax  
        mov al,10110110b  
        out 43h,al  
        mov dx,12h  
        mov ax,34dch  
        div bx  
        out 42h,al  
        mov al,ah  
        out 42h,al  
        in  al,61h  
        or  AL,03H  
            OUT 61H,AL  
        pop dx  
        pop cx  
        pop bx  
            RET  
     SOUND ENDP  
     endsound proc near  
        push ax  
        in  al,61h  
        and al,11111100b  
        out 61h,al  
        pop ax  
        ret  
     endsound endp  
     WAITT PROC NEAR  
        push cx  
        push dx  
            mov ah,86h  
        mov cx,3     ;cx:dx  
        mov dx,0e78dh  
        int 15h  
        pop dx  
        pop cx  
        ret  
     WAITT ENDP  
    CODE ENDS  
            END START  
Global site tag (gtag.js) - Google Analytics