-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy path14.asm
212 lines (176 loc) · 4.74 KB
/
14.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
assume cs:code
data segment
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1
db 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0
db 0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0
db 0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data ends
code segment
start:
mov ax,data
mov es,ax
mov ax,0b800h
mov ds,ax
mov cx,26
mov bx,0
mov bp,0
s:
push cx
mov di,0
mov si,158
mov cx,40
s1:
mov al,es:[bp]
cmp al,0
je lu
mov word ptr ds:[bx+di],4020h
mov word ptr ds:[bx+si],4020h
jmp s_next
lu:mov word ptr ds:[bx][di],0
mov word ptr ds:[bx][si],0
s_next:inc bp
add di,2
sub si,2
loop s1
add bx,160
pop cx
loop s
mov word ptr ds:[160*15+158],0611h
mov word ptr ds:[160*11+158],2241h
mov dh,15
mov dl,79
mov di,160*15+158
mov cx,800
sss:
call delay_time
cmp byte ptr ds:[di],17
je zuo_0
cmp byte ptr ds:[di],16
je you_0
cmp byte ptr ds:[di],30
je shang_0
cmp byte ptr ds:[di],31
je xia_0
you_0:add di,2
inc dl
call right_go
jmp sss_end
shang_0:sub di,160
dec dh
call right_go
jmp sss_end
zuo_0:sub di,2
dec dl
call left_go
jmp sss_end
xia_0:add di,160
inc dh
call left_go
jmp sss_end
sss_end:
loop sss
finish:
mov ax,4c00h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左走
;;;;;;;;右箭头=16;左箭头=17;上箭头=30;下箭头=31;
left_go:;dh+dl=当前位置
cmp byte ptr ds:[di],41h
je finish
sub di,160
cmp dl,79
je zuo_xia
cmp word ptr ds:[di+162],0
je you_1
zuo_xia:cmp word ptr ds:[di+320],0
je xia_1
cmp dl,0
je shang_1
cmp word ptr ds:[di+158],0
je zuo_1
cmp word ptr ds:[di],0
je shang_1
jmp finish
;===========;
you_1:
mov ds:[di+160],0610h
jmp left_ok_1
xia_1:
mov ds:[di+160],061fh
jmp left_ok_1
;===========;
zuo_1:
mov ds:[di+160],0611h
jmp left_ok_1
shang_1:mov ds:[di+160],061eh
jmp left_ok_1
left_ok_1: add di,160
ret
;;向右走;;;;;;;右箭头=16;左箭头=17;上箭头=30;下箭头=31;
right_go:
cmp byte ptr ds:[di],41h
je finish
sub di,160
cmp dl,0
je you_shang
cmp word ptr ds:[di+158],0
je zuo_2
you_shang: cmp word ptr ds:[di],0
je shang_2
cmp dl,79
je xia_2
cmp word ptr ds:[di+162],0
je you_2
cmp word ptr ds:[di+320],0
je xia_2
jmp finish
;===========;
you_2:
mov ds:[di+160],0610h
jmp left_ok_2
xia_2:
mov ds:[di+160],061fh
jmp left_ok_2
;===========;
zuo_2:
mov ds:[di+160],0611h
jmp left_ok_2
shang_2:mov ds:[di+160],061eh
jmp left_ok_2
left_ok_2:add di,160
ret
;;;;;;;;;;;;;;;;延时函数
delay_time:
push cx
mov cx,0fffh
dn1:push cx
mov cx,0ffh
dn2:loop dn2
pop cx
loop dn1
pop cx
ret
code ends
end start