319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
MOV 2EH,21 MOV 2DH,22 20、CLR C
MOV A,#5DH ;被减数的低8位→A MOV R2,#B4H ;减数低8位→R2
SUBB A,R2 ;被减数减去减数,差→A MOV 30H,A ;低8位结果→30H MOV A,#6FH ;被减数的高8位→A MOV R2,#13H ;减数高8位→R2
SUBB A,R2 ;被减数减去减数,差→A MOV 31H,A ;高8位结果→30H
注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位 21、(1)A≥10
CJNE A,#0AH,L1 ;(A)与10比较,不等转L1 LJMP LABEL ;相等转LABEL
L1:JNC LABEL ;(A)大于10,转LABEL 或者: CLR C
16
337 338 339 340 SUBB A,#0AH JNC LABEL (2)A>10
CJNE A,#0AH,L1 ;(A)与10比较,不等转L1 341 RET 342 L1:JNC LABEL 343 RET 344 或者: 345 CLR C 346 SUBB A,#0AH 347 JNC L1 348 RET
349 L1:JNZ LABEL 350 RET 351 (3)A≤10
352 CJNE A,#0AH,L1 353 L2:LJMP LABEL 354
L1:JC L2 ;相等结束
;(A)大于10,转LABEL ;(A)小于10,结束 ;(A)与10比较,不等转L1 ;相等转LABEL (A)小于10,转L2
17
;355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
RET 或者: CLR C SUBB A,#0AH JC LABEL JZ LABEL RET
22、(SP)=23H,(PC)=3412H 参看书上80页
23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H 参看书上79页
24、不能。ACALL是短转指令,可调用的地址范围是2KB。
在看这个题的时候同时看一下AJMP指令。同时考虑调用指令ACALL和LCALL指令和RET指令的关系。
25、 MOV R2,#31H ;数据块长度→R2 MOV R0,#20H ;数据块首地址→R0 LOOP:MOV A,@R0 ;待查找的数据→A CLR C ;清进位位
18
374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
SUBB A,#0AAH ;待查找的数据是0AAH吗 JZ L1 ;是,转L1
INC R0 ;不是,地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 MOV 51H,#00H ;等于0,未找到,00H→51H RET
L1:MOV 51H,#01H ;找到,01H→51H RET
26、 MOV R2,#31H ;数据块长度→R2 MOV R0,#20H ;数据块首地址→R0 LOOP:MOV A,@R0 ;待查找的数据→A JNZ L1 ;不为0,转L1 INC 51H ;为0,00H个数增1
L1:INC R0 ;地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET
27、 MOV DPTR,#SOURCE ;源首地址→DPTR MOV R0,#DIST ;目的首地址→R0
19
392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
LOOP:MOVX A,@DPTR ;传送一个字符 MOV @R0,A
INC DPTR ;指向下一个字符 INC R0
CJNE A,#24H,LOOP ;传送的是“$”字符吗?不是,传送下一个字符 RET
28、 MOV A,R3 ;取该数高8位→A ANL A,#80H ;取出该数符号判断 JZ L1 ;是正数,转L1 MOV A,R4 ;是负数,将该数低8位→A CPL A ;低8位取反 ADD A,#01H ;加1
MOV R4,A ;低8位取反加1后→R4 MOV A,R3 ;将该数高8位→A CPL A ;高8位取反
ADDC A,#00H ;加上低8位加1时可能产生的进位 MOV R3,A ;高8位取反加1后→R3 L1:RET
20
相关推荐: