码迷,mamicode.com
首页 > 其他好文 > 详细

程序设计项目十三

时间:2015-02-11 20:29:51      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

程序设计项目十三

   

编写左手逃生法则演示程序。参看demo7.gif示例。

   

提示:

(1)地图中只有三种元素:墙、通道、出口。设计地图时,要给不同的元素赋予不同的编码。

(2)什么情况下改变行进的方向。遇到这些情况后根据当前方向决定下一步方向变化的规律是什么。

(3)左手逃生法则简述:在一个有出入口,没有回路的迷宫中,一直保持左手贴着墙壁向前走,总能找到迷宫出口。

 

代码:

有问题,,,

技术分享
  1 assume cs:code
  2 map segment
  3   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,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,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
  4   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,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,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
  5   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,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,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
  6   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,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,1,1,1,1,1
  7   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,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,1,1,1,1,1
  8   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,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,1,1,1,1,1
  9   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,1,1,1,1,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,0,0,1,1,1,1,1
 10   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,1,1,1,1,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,0,0,1,1,1,1,1
 11   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,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,1,1
 12   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,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,0,0,0,0,0,0,0,0,0
 13   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,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,0,0,0,0,0,0,0,0,0,2
 14   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,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,1,1,1,1,1,1,1,1,1
 15   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,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,1,1,1,1,1,1,1,1,1
 16   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,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0
 17   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,1,1,1,1,1,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,1,0,0,0,0,0,0,0,0,0
 18   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,1,1,1,1,0,0,0,0,1,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,1,1,1,1
 19   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,1,0,0,0,0,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,1,1,1,1,1,1,1,1,1,1
 20   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,1,1,0,0,0,0,1,1,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
 21   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,1,1,1,0,0,0,0,1,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
 22   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,1,1,1,1,0,0,0,0,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
 23   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,1,1,1,1,1,0,0,0,0,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
 24   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,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1
 25   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,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1
 26   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,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,0,0,0
 27   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,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,0,0,0
 28 map ends
 29 
 30 data segment
 31         dw 1       ;now direction   1,left  2,up  3,right  4,down
 32         dw 0,0,0,0 ;next left,up,right,down ok?
 33 data ends
 34 
 35 stack segment
 36         dw 16 dup (0)
 37 stack ends
 38 
 39 code segment
 40 start:
 41         mov ax,map
 42         mov ds,ax
 43         mov ax,0b800h
 44         mov es,ax
 45         mov ax,stack
 46         mov ss,ax
 47         mov sp,20h
 48 
 49         call clear_screen
 50 gogogo:
 51         call draw_map
 52         mov ax,data
 53         mov ds,ax
 54         call run_map
 55         jmp over
 56 
 57 run_map:
 58         mov dx,0e4fh
 59         mov di,2396
 60    main:
 61         mov ax,es:[di]
 62         cmp ax,2020h
 63         je find
 64         call draw_now
 65         call getnext
 66         call nextsizhou
 67         call ensurenext
 68         call sleep_1s
 69         jmp main
 70    find:
 71         ret
 72 
 73 ensurenext:
 74         mov ax,ds:[0]
 75         cmp ax,1
 76         je nowleft
 77         cmp ax,2
 78         je nowup
 79         cmp ax,3
 80         je nowright
 81     mov ax,ds:[3]
 82     cmp ax,1
 83     je nextright
 84     mov ax,ds:[4]
 85     cmp ax,1
 86     je nextdown
 87     jmp nextleft
 88    nowleft:
 89     mov ax,ds:[4]
 90     cmp ax,1
 91     je nextdown
 92     mov ax,ds:[1]
 93     cmp ax,1
 94     je nextleft
 95     jmp nextup
 96    nowup:
 97         mov ax,ds:[1]
 98     cmp ax,1
 99     je nextleft
100     mov ax,ds:[2]
101     cmp ax,1
102     je nextup
103     jmp nextright
104    nowright:
105     mov ax,ds:[2]
106     cmp ax,1
107     je nextup
108     mov ax,ds:[3]
109     cmp ax,1
110     je nextright
111     jmp nextdown
112    nextleft:
113     mov word ptr ds:[0],1
114         jmp okae
115    nextup:
116     mov word ptr ds:[0],2
117         jmp okae
118    nextright:    
119     mov word ptr ds:[0],3
120         jmp okae 
121    nextdown:    
122     mov word ptr ds:[0],4
123     okae: 
124         ret        
125 
126 getnext:
127         mov ax,ds:[0]
128         cmp ax,1
129         je goleft
130         cmp ax,2
131         je goup
132         cmp ax,3
133         je goright
134         add di,160
135         add dh,1
136         jmp oka
137    goleft:
138         sub di,2
139         sub dl,1
140         jmp oka
141    goup:
142         sub di,160
143         sub dh,1
144         jmp oka
145    goright:
146         add di,2
147         add dl,1
148    oka:
149         ret
150 
151 draw_now:
152         mov ax,ds:[0]
153         cmp ax,1
154         je drawleft
155         cmp ax,2
156         je drawup
157         cmp ax,3
158         je drawright
159         cmp ax,4
160         je drawdown
161         jmp overdn
162   drawleft:
163         mov bx,0611h
164         jmp overdn
165   drawup:
166         mov bx,061eh
167         jmp overdn
168   drawright:
169         mov bx,0610h
170         jmp overdn
171   drawdown:
172         mov bx,061fh
173   overdn:
174         mov es:[di],bx
175         ret
176 
177 nextsizhou:
178         call left
179         call up
180         call right
181         call down
182         ret
183 
184 left:
185         push dx
186         push di
187         cmp dl,0
188         je unleft
189         sub di,2
190         mov ax,es:[di]
191         cmp ax,0
192         je cnleft
193     cmp ax,2020h
194     je cnleft
195   unleft:
196         mov word ptr ds:[1],0
197         jmp overleft
198   cnleft:
199         mov word ptr ds:[1],1
200   overleft:
201         pop di
202         pop dx
203         ret
204 
205 up:
206         push dx
207         push di
208         cmp dh,0
209         je unup
210         sub di,160
211         mov ax,es:[di]
212         cmp ax,0
213         je cnup
214     cmp ax,2020h
215     je cnup
216   unup:
217         mov word ptr ds:[2],0
218         jmp overup
219   cnup:
220         mov word ptr ds:[2],1
221   overup:
222         pop di
223         pop dx
224         ret
225 
226 right:
227     push dx
228         push di
229         cmp dl,79
230         je unright
231         add di,2
232         mov ax,es:[di]
233         cmp ax,0
234         je cnright
235     cmp ax,2020h
236     je cnright
237   unright:
238         mov word ptr ds:[3],0
239         jmp overright
240   cnright:
241         mov word ptr ds:[3],1
242   overright:
243         pop di
244         pop dx
245         ret
246 
247 down:
248         push dx
249         push di
250         cmp dh,24
251         je undown
252         add di,160
253         mov ax,es:[di]
254         cmp ax,0
255         je cndown
256     cmp ax,2020h
257     je cndown
258   undown:
259         mov word ptr ds:[4],0
260         jmp overdown
261   cndown:
262         mov word ptr ds:[4],1
263   overdown:
264         pop di
265         pop dx
266         ret
267 
268 draw_map:
269         mov di,0
270         mov si,0
271         mov cx,2000
272      dps0:
273         push cx
274         mov al,ds:[si]
275         cmp al,0
276         je go0
277         cmp al,2
278         je go2
279         mov word ptr es:[di],4020h
280         jmp go0
281      go2:
282         mov word ptr es:[di],2020h
283      go0:
284         inc si
285         add di,2
286         pop cx
287         loop dps0
288         ret
289 
290 sleep_1s:
291         push cx
292         mov cx,10h
293      sp0:
294         push cx
295         mov cx,0ffffh
296      sp1:
297         loop sp1
298         pop cx
299         loop sp0
300         pop cx
301         ret
302 
303 clear_screen:
304         push cx
305         push di
306         mov di,0
307         mov cx,25
308      css0:
309         push cx
310         mov cx,80
311      css1:
312         mov word ptr es:[di],0
313         add di,2
314         loop css1
315         pop cx
316         loop css0
317         pop di
318         pop cx
319         ret
320 
321 over:
322         mov ax,4c00h
323         int 21h
324 code ends
325 end start
hj13.asm

 

程序设计项目十三

标签:

原文地址:http://www.cnblogs.com/regconfi/p/4286846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!