regconfi

导航

汇编语言 demo1,2,3

 1 assume cs:codesg
 2 
 3 data segment
 4 ;yellow
 5         db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1
 6 data ends
 7 
 8 stack segment
 9         dw 16 dup (0)
10 stack ends
11 
12 codesg segment
13 start:
14         mov ax,data
15         mov ds,ax
16 
17         mov ax,0b800h
18         mov es,ax
19 
20         mov ax,stack
21         mov ss,ax
22         mov sp,20h
23         mov di,0
24         mov cx,16
25    main:
26         push cx
27         mov al,2ah
28         mov ah,ds:[di]
29         inc di
30         push di
31 
32         mov dx,1
33         mov di,7d0h
34         mov si,7d0h
35         mov cx,0bh
36 
37    lmain:
38         push cx
39         push si
40         push di
41         mov bx,dx
42         mov cx,dx
43         
44    ms:
45         push cx
46         mov bp,0
47         mov cx,bx
48 
49    mA:
50         mov es:[bp+di],ax                       
51         mov es:[bp+si],ax
52         add bp,4
53         loop mA
54 
55         add di,09eh
56         sub si,0a2h
57         inc bx
58         pop cx
59         loop ms
60 
61         inc dx
62         pop di
63         pop si
64         sub di,0a2h
65         add si,09eh
66         call delay
67         pop cx
68         loop lmain
69 
70         pop di
71         pop cx
72         loop main
73 ;       jmp main
74 
75         mov ax,4c00h
76         int 21h
77 
78 
79 delay:
80         mov cx,08h
81    d1:
82         push cx
83         mov cx,0ffffh
84    d2:
85         loop d2
86         pop cx
87         loop d1
88         ret
89 
90 codesg ends
91 end start

assume cs:codesg
data segment
;zi
        db 'Welcome to the world assembly ! '
;ziti_color
        db 1,2,3,4,5,6,7,8
;yanhua
        db 4,52,23,8,66,38,56,64
        db 19,15,20,21,18,21,15,17
        db 8,7,6,5,4,3,2,1
data ends

stack segment
        dw 32 dup (0)
stack ends

codesg segment
start:
        mov ax,data
        mov ds,ax

        mov ax,0b800h
        mov es,ax
        
        mov ax,stack
        mov ss,ax
        mov sp,40h

   again:
        call clear_screen
        mov bp,0
        mov cx,8
   main:
        call ziti
        call yanhua
        call delay

        inc bp
        loop main

      ;  jmp again

        mov ax,4c00h
        int 21h

yanhua:
        push cx
        push si
        push di
        mov si,0
        mov di,0f00h
        mov al,ds:[bp+40]
        mov ah,0
        add ax,ax
        add di,ax
        mov al,2ah
        mov ah,ds:[bp+56]
        mov cl,ds:[bp+48]
        mov ch,0

   yh_s:
        mov es:[di],ax
        call ziti
        call delay
        mov word ptr es:[di],0
        sub di,0a0h
        loop yh_s

        call zhanfang

        pop di
        pop si
        pop cx
        ret

zhanfang:
        push ax
        push di
        mov es:[di],ax
        call ziti
        call delay
        mov es:[di-2],ax
        mov es:[di+2],ax
        mov es:[di-9eh],ax
        mov es:[di+9eh],ax
        mov es:[di-0a2h],ax
        mov es:[di+0a2h],ax
        call ziti
        call delay
        mov es:[di-4],ax
        mov es:[di+4],ax
        mov es:[di-13ch],ax
        mov es:[di+13ch],ax
        mov es:[di-144h],ax
        mov es:[di+144h],ax
        call ziti
        call delay
        mov es:[di-6],ax
        mov es:[di+6],ax
        mov es:[di-1dah],ax
        mov es:[di+1dah],ax
        mov es:[di-1e6h],ax
        mov es:[di+1e6h],ax

        call ziti
        call delay
        push cx
        sub di,1e6h
        mov cx,7
   zs1:
        push cx
        push di
        mov cx,7
   zs2:
        mov word ptr es:[di],0
        add di,2
        loop zs2

        pop di
        add di,0a0h
        pop cx
        loop zs1
        call ziti
        pop cx

        pop di
        pop ax
        ret

ziti:
        push ax
        push cx
        push si
        push di
        mov ah,ds:[bp+32]
        mov si,0
        mov di,710h
        mov cx,32
   s:
        mov al,ds:[si]
        mov es:[di],ax
        add di,2
        inc si
        loop s

        pop di
        pop si
        pop cx
        pop ax
        ret

delay:
        push cx
        mov cx,6h
   s1:
        push cx
        mov cx,0ffffh
   s2:
        loop s2
        pop cx
        loop s1
        pop cx
        ret

clear_screen:
        push cx
        push di
        mov di,0
        mov cx,7d0h
   clear:
        mov word ptr es:[di],0
        add di,2
        loop clear

        pop di
        pop cx
        ret

codesg ends
end start

assume cs:codesg
data segment
        db 'a','b','c','d','e','f','g','h'
        db 11,19,27,35,43,51,59,67
        db 5,9,13,17,21,25,29,33
        db 1,2,3,4,5,6,7,8
        db 8,7,6,5,4,3,2,1
data ends

stack segment
        dw 16 dup (0)
stack ends

codesg segment
start:
        mov ax,0b800h
        mov es,ax

        mov ax,data
        mov ds,ax

        mov ax,stack
        mov ss,ax
        mov sp,20h

   agian:
        call clear_screen
        mov bp,0

        mov cx,8
   main:
        push cx
        call hou
        call qian
        inc bp
        pop cx
        loop main

;       jmp agian

        mov ax,4c00h
        int 21h

hou:
        push ax
        push bx
        push cx
        push di
        push si
        mov di,50h
        mov si,0f50h
        mov al,ds:[bp+16]
        mov ah,0
        add ax,ax
        sub di,ax
        add si,ax

        mov bx,25

        mov cx,12
   s02:
        push cx
        push di
        push si

        mov cx,bx
   s12:
        mov al,'/'
        mov ah,ds:[bp+32]
        mov es:[si],ax
        mov al,'\'
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,0a0h
        sub si,0a0h
        loop s12

        sub bx,2
        pop si
        pop di
        push si
        push di

        mov cl,ds:[bp+8]
        mov ch,0
   s22:
        mov al,ds:[bp]
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,2
        loop s22

        mov cl,ds:[bp+8]
        mov ch,0
   s32:
        mov al,ds:[bp]
        mov ah,ds:[bp+32]
        mov es:[si],ax
        sub si,2
        loop s32

        pop di
        pop si
        add di,0a0h
        sub si,0a0h
        call delay
        call clear_screen
        pop cx
        loop s02

        pop si
        pop di
        pop cx
        pop bx
        pop ax
        ret

qian:
        push ax
        push bx
        push cx
        push di
        push si
        mov di,07d0h
        mov si,07d0h
        mov al,ds:[bp+16]
        mov ah,0
        add ax,ax
        sub di,ax
        add si,ax

        mov bx,1

        mov cx,13
   s01:
        push cx
        push di
        push si

        mov cx,bx
   s11:
        mov al,'/'
        mov ah,ds:[bp+32]
        mov es:[si],ax
        mov al,'\'
        mov ah,ds:[bp+24]
        mov es:[di],ax
        sub di,0a0h
        add si,0a0h
        loop s11

        add bx,2
        pop si
        pop di
        push si
        push di

        mov cl,ds:[bp+8]
        mov ch,0
   s21:
        mov al,ds:[bp]
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,2
        loop s21

        mov cl,ds:[bp+8]
        mov ch,0
   s31:
        mov al,ds:[bp]
        mov ah,ds:[bp+32]
        mov es:[si],ax
        sub si,2
        loop s31

        pop di
        pop si
        add di,0a0h
        sub si,0a0h
        call delay
        call clear_screen
        pop cx
        loop s01

        pop si
        pop di
        pop cx
        pop bx
        pop ax
        ret

delay:
        push cx
        mov cx,6h
   ds0:
        push cx
        mov cx,0ffffh
   ds1:
        loop ds1
        pop cx
        loop ds0
        pop cx
        ret

clear_screen:
        push cx
        push di
        mov di,0
        mov cx,2000
   sc0:
        mov word ptr es:[di],0
        add di,2
        loop sc0
        pop di
        pop cx
        ret

codesg ends
end start

 

posted on 2014-12-26 21:15  regconfi  阅读(822)  评论(0编辑  收藏  举报