当前位置:首页 > 微机原理课后习题及答案
功能:将内部数据存储器00H~0FFH 256个单元全部清零。 9) PUSH ACC PUSH B POP ACC POP B
功能:利用堆栈将ACC与B中的内容互换,即(ACC) (B) 10) MOV R0, #30H XCHD A, @R0 SWAP A INC R0 XCHD A, @R0 SWAP A MOV 40H , A
功能:将ACC的低四位送入30H单元低四位,ACC的高四位送入31H的低四位,而原先30H单元的低四位送入40H单元的低四位,原31H单元的低四位送入40H单元的高四位。
举例说明如下,设程序段运行前有(ACC)=12H,(30H)=34H,(31H)=56H;
则程序段运行后有(30H)=32H,(31H)=51H, (ACC)= (40H)=64H 3-8 指出下列指令中哪些是合法指令,哪些是非法指令。
MOV P1, R4 MOV R2,R4
;合法 ;非法
17
CLR R3 ;非法 RLC R5
;非法 MOV 30H, 31H ;合法 MOV 00H, P
;非法 ORL 40H, R7 ;非法 PUSH R6 ;非法 POP R0
;非法 INC DPTR
;合法
注:常见的错误还有类似:MOV R0, C; ADD 30H,31H; DEC DPTR等,编程时切记勿错! 3-9 按要求编制下列各程序段。
将内部数据存储器30H和31H单元的内容互换。
法一: MOV A, 30H XCH A ,31H MOV 30H, A
法二: XCH A, 30H XCH A ,31H XCH A, 30H 比较法一、法二的优缺点,你认为哪个方法更好?
将寄存器R7的内容向右循环移位一次。 XCH A, R7 RR A
18
MOV A, @R5; XCH A, R7
将寄存器R3的内容乘以4(结果不超出8为二进制数的范围)。
法一: MOV A, R3 MOV B, #4 MUL AB MOV R3, A 法二: XCH A, R3 RL A RL A XCH A, R3
将寄存器DPTR的内容减1。
法一:判断DPL=0否?如是, DPL减1后,DPH也减1;否则,DPH不变。 XCH A, DPL JNZ NOB DEC DPH NBO: XCH A, DPL DEC DPL 法二: (DPH)(DPL) -1→DPH,DPL(即DPTR) CLR C XCH A, DPL SUBB A, #1 XCH A, DPL XCH A, DPH SUBB A, #0 XCH A, DPH 法三: (DPH)(DPL)+0FFFFH→DPTR XCH A, DPL ADD A, #0FFH XCH A, DPL XCH A, DPH ADDC A, #0FFH XCH A, DPH 比较以上各方法,其中法三利用了-1的补码是0FFFFH的原理,将减法改为了加法。
19
将寄存器R6的内容压入堆栈(设寄存器工作在3区) PUSH 1EH
将R4, R5寄存器连接起来循环右移一位。(设R4为高8位,R5为低8位;执行完后R4R5中的内容右移一位,R4的最低位移入R5的最高位,同时R5的最低位移入R4的最高位) XCH A, R4 R4中暂存。 RRC A
;ACC中原先R4的内容右移一位,同时Cy移入最高位,
;将R4中的内容送入ACC,同时将ACC的内容放入
而原先R4的最低位移入Cy位 XCH A, R5 送入R5暂存 RRC A
;ACC中原先R5的内容右移一位,Cy(即原R4的最低
;R5中的内容送入ACC,上一步中产生的ACC的内容
位)移入最高位,而原R5的最低位移入Cy位 XCH A, R5
;将结果送入R5(R5移位已完成),同时将第三步暂
存在R5中的内容取出。
MOV ACC.7, C ;将Cy位中存放的原R5的最低位送入ACC的最高位(即送入R4的最高位) XCH A, R4
;
将结果送入R4,同时取出ACC原来的值
20
共分享92篇相关文档