![]()
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