8086 汇编语言 走迷宫之 左手法则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值