📄 ex3-9.lst
字号:
250
0141 251 INITSNAG2:
0141 900628 252 MOV DPTR,#SPOTXDB;
0144 E8 253 MOV A,R0;
0145 93 254 MOVC A,@A+DPTR;
0146 F538 255 MOV PX,A;
256
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 5
0148 900631 257 MOV DPTR,#SPOTYDB;
014B E8 258 MOV A,R0;
014C 93 259 MOVC A,@A+DPTR;
014D F539 260 MOV PY,A;
261
014F E8 262 MOV A,R0;
0150 C0E0 263 PUSH ACC;
0152 12015E 264 LCALL DISPXY;
0155 D0E0 265 POP ACC;
0157 F8 266 MOV R0,A;
0158 08 267 INC R0;
0159 E8 268 MOV A,R0;
015A B545E4 269 CJNE A,SPOT,INITSNAG2;
270
015D 22 271 RET;
272
273 ; THE FUNCTION TO DISPLAY A POINT AT (X,Y)
274 ; AND ON THE LCD DISPLAY, THE HORIZON DIRECTION IS X
275 ; AND ALSO THE VETICAL IS Y
276 ;(PX,PY); PX,PY BOTH FROM 0 TO 63
015E 277 DISPXY:
015E 7532B8 278 MOV PAGEADD,#0B8H;
0161 753340 279 MOV YNUM,#40H;
280
0164 E538 281 MOV A,PX; TO SET THE PAGE AND Y
0166 2533 282 ADD A,YNUM;
0168 F533 283 MOV YNUM,A;
016A 853390 284 MOV LCMP,YNUM;
016D 120067 285 LCALL WI;
286
0170 E539 287 MOV A,PY;
0172 75F008 288 MOV B,#08H;
0175 84 289 DIV AB;
0176 2532 290 ADD A,PAGEADD;
0178 F532 291 MOV PAGEADD,A;
017A 853290 292 MOV LCMP,PAGEADD;
017D 120067 293 LCALL WI;
294
295
0180 1205D8 296 LCALL DELAY;
0183 120087 297 LCALL RDD;
0186 E590 298 MOV A,LCMP; TO READ THE CURRENT DATA OF THE LCM RAM;
299
300 ;SETB E;
0188 C2B7 301 CLR DI;
018A C2B6 302 CLR RW;
303
018C F8 304 MOV R0,A;
305
018D E5F0 306 MOV A,B;
018F 900618 307 MOV DPTR,#DISPDB;
0192 93 308 MOVC A,@A+DPTR;
0193 48 309 ORL A,R0;
310
0194 853390 311 MOV LCMP,YNUM;
0197 120067 312 LCALL WI;
019A 853290 313 MOV LCMP,PAGEADD;
019D 120067 314 LCALL WI;
315
01A0 F590 316 MOV LCMP,A;
01A2 120076 317 LCALL WD;
318
01A5 22 319 RET;
320
01A6 321 UNDISPXY:
01A6 7532B8 322 MOV PAGEADD,#0B8H;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 6
01A9 753340 323 MOV YNUM,#40H;
324
01AC E538 325 MOV A,PX; TO SET THE PAGE AND Y
01AE 2533 326 ADD A,YNUM;
01B0 F533 327 MOV YNUM,A;
01B2 853390 328 MOV LCMP,YNUM;
01B5 120067 329 LCALL WI;
330
01B8 E539 331 MOV A,PY;
01BA 75F008 332 MOV B,#08H;
01BD 84 333 DIV AB;
01BE 2532 334 ADD A,PAGEADD;
01C0 F532 335 MOV PAGEADD,A;
01C2 853290 336 MOV LCMP,PAGEADD;
01C5 120067 337 LCALL WI;
338
01C8 1205D8 339 LCALL DELAY;
01CB 120087 340 LCALL RDD;
01CE E590 341 MOV A,LCMP; TO READ THE CURRENT DATA OF THE LCM RAM;
342
343 ;SETB E;
01D0 C2B7 344 CLR DI;
01D2 C2B6 345 CLR RW;
346
01D4 F8 347 MOV R0,A;
348
01D5 E5F0 349 MOV A,B;
01D7 900620 350 MOV DPTR,#UNDISPDB;
01DA 93 351 MOVC A,@A+DPTR;
01DB 58 352 ANL A,R0;
353
01DC 853390 354 MOV LCMP,YNUM;
01DF 120067 355 LCALL WI;
01E2 853290 356 MOV LCMP,PAGEADD;
01E5 120067 357 LCALL WI;
358
01E8 F590 359 MOV LCMP,A;
01EA 120076 360 LCALL WD;
361
01ED 22 362 RET;
363
01EE 364 READXY:
01EE 900694 365 MOV DPTR,#BMPDB;
01F1 E539 366 MOV A,PY;
01F3 75F008 367 MOV B,#08H;
01F6 84 368 DIV AB;
01F7 F8 369 MOV R0,A;
01F8 A9F0 370 MOV R1,B;
371
01FA E538 372 MOV A,PX;
01FC 75F008 373 MOV B,#08H;
01FF A4 374 MUL AB; B IS THE HIGH PART OF THE MULTIPLICATION
0200 C2D7 375 CLR CY;
0202 28 376 ADD A,R0;
0203 F8 377 MOV R0,A;
0204 E5F0 378 MOV A,B;
0206 3583 379 ADDC A,DPH;
0208 F583 380 MOV DPH,A;
020A E8 381 MOV A,R0;
020B 93 382 MOVC A,@A+DPTR;
383
020C B90008 384 CJNE R1,#00H,READXY0;
020F 30E005 385 JNB ACC.0,READXY0;
0212 D200 386 SETB ERR;
0214 020266 387 LJMP READEND;
0217 388 READXY0:
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 7
0217 B90108 389 CJNE R1,#01H,READXY1;
021A 30E105 390 JNB ACC.1,READXY1;
021D D200 391 SETB ERR;
021F 020266 392 LJMP READEND;
0222 393 READXY1:
0222 B90208 394 CJNE R1,#02H,READXY2;
0225 30E205 395 JNB ACC.2,READXY2;
0228 D200 396 SETB ERR;
022A 020266 397 LJMP READEND;
022D 398 READXY2:
022D B90308 399 CJNE R1,#03H,READXY3;
0230 30E305 400 JNB ACC.3,READXY3;
0233 D200 401 SETB ERR;
0235 020266 402 LJMP READEND;
0238 403 READXY3:
0238 B90408 404 CJNE R1,#04H,READXY4;
023B 30E405 405 JNB ACC.4,READXY4;
023E D200 406 SETB ERR;
0240 020266 407 LJMP READEND;
0243 408 READXY4:
0243 B90508 409 CJNE R1,#05H,READXY5;
0246 30E505 410 JNB ACC.5,READXY5;
0249 D200 411 SETB ERR;
024B 020266 412 LJMP READEND;
024E 413 READXY5:
024E B90608 414 CJNE R1,#06H,READXY6;
0251 30E605 415 JNB ACC.6,READXY6;
0254 D200 416 SETB ERR;
0256 020266 417 LJMP READEND;
0259 418 READXY6:
0259 B90708 419 CJNE R1,#07H,READXY7;
025C 30E705 420 JNB ACC.7,READXY7;
025F D200 421 SETB ERR;
0261 020266 422 LJMP READEND;
0264 423 READXY7:
0264 C200 424 CLR ERR;
0266 425 READEND:
426
0266 A842 427 MOV R0,TAILXA;
0268 A943 428 MOV R1,TAILYA;
026A AA41 429 MOV R2,SNAGLNG;
026C 430 READXY9:
026C E6 431 MOV A,@R0;
026D B53806 432 CJNE A,PX,READXY8;
0270 E7 433 MOV A,@R1;
0271 B53902 434 CJNE A,PY,READXY8;
0274 D200 435 SETB ERR;
0276 436 READXY8:
0276 08 437 INC R0;
0277 09 438 INC R1;
0278 DAF2 439 DJNZ R2,READXY9;
440
027A 22 441 RET;
442 ; TO DISPLAY THE DATA OF THE GAME;
027B 443 ERROR:
027B 12009E 444 LCALL RIGHTSIDE;
027E 753345 445 MOV YNUM,#45H;
0281 7532BB 446 MOV PAGEADD,#0BBH;
0284 7800 447 MOV R0,#00H;
448
0286 120556 449 ERROR1:LCALL KEYEEE;
0289 08 450 INC R0;
028A E533 451 MOV A,YNUM
028C 2405 452 ADD A,#05H;
028E F533 453 MOV YNUM,A;
0290 B809F3 454 CJNE R0,#09H,ERROR1;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 8
0293 455 ERROREND:
0293 120099 456 LCALL LEFTSIDE;
457
458 ;LCALL KEYEF;
0296 22 459 RET;
460
0297 461 TOSPOT: ; THE SNAG TO ENCOUNT SPOT OR NOT
462 ; INPUT PX AND PY OUTPUT ENSPOT BIT
463 ; USE THE REGISTER A,R0
0297 7800 464 MOV R0,#00H;
0299 465 TOSPOT1:
0299 900628 466 MOV DPTR,#SPOTXDB;
029C E8 467 MOV A,R0;
029D 93 468 MOVC A,@A+DPTR;
029E B5380C 469 CJNE A,PX,TOSPOT2;
470
02A1 900631 471 MOV DPTR,#SPOTYDB;
02A4 E8 472 MOV A,R0;
02A5 93 473 MOVC A,@A+DPTR;
02A6 B53904 474 CJNE A,PY,TOSPOT2;
02A9 D201 475 SETB ENSPOT;
02AB 0546 476 INC SPOTED;
477
02AD 478 TOSPOT2:
02AD 08 479 INC R0;
02AE E8 480 MOV A,R0;
02AF B545E7 481 CJNE A,SPOT,TOSPOT1; ; 05 IS THE NUMBER OF THE SPOTS
482
02B2 E546 483 MOV A,SPOTED;
02B4 B54502 484 CJNE A,SPOT,TOSPOTEND;
02B7 D202 485 SETB ALL;
02B9 486 TOSPOTEND:
487
02B9 22 488 RET;
489
02BA 490 ALLSPOT:
491
02BA 12009E 492 LCALL RIGHTSIDE;
02BD 753345 493 MOV YNUM,#45H;
02C0 7532BB 494 MOV PAGEADD,#0BBH;
02C3 7809 495 MOV R0,#09H;
496
02C5 497 ALLSPOT1:
02C5 120556 498 LCALL KEYEEE;
02C8 08 499 INC R0;
02C9 E533 500 MOV A,YNUM
02CB 2405 501 ADD A,#05H;
02CD F533 502 MOV YNUM,A;
02CF B812F3 503 CJNE R0,#12H,ALLSPOT1;
02D2 504 ALLSPOTEND:
02D2 120099 505 LCALL LEFTSIDE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -