《单片微型计算机与接口技术》思考题与习题解答01

MOV R7,A POP ACC INC A

MOVC A,@A+DPTR MOV R6,A

SJMP $

TAB:DB 00,00,00,01,OO,04,OO,09,OO,16H,? DB? 04H,00

3.4设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在22H单元中,编出程序。

3.4 先用异或指令判两数是否同号,在同号中判大小,异号中正数为大。 ORG 0 MOV A,20H XRL A.21H ANL A,#80H JZ CMP

JB 20H.7,BG AG:MOV 22H,20H SJMP $

BG:MOV 22H,21H

SJMP $

CMP:MOV A,20H CJNE A,21H,GR GR:JNC AG MOV 22H,21H

SJMP $

3.5若单片机的晶振频率为6MHz,求下列延时子程序的延时时间。 DELAY: MOV R1,#0F8H LOOP: MOV R3,#0FBH DJNZ R3,$ DJNZ R1,LOOP RET

3.5 fosc=6MHz,MC=2us

机器周期数 DELAY:MOV R1,#OF8H 1 LOOP: MOV R3,#0FBH 1 DJNZ R3,$ 2 DJNZ R1,LOOP 2

RET 2 (1+2+(1+2×251+2)×248)×2us=250.48ms

3.6 编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCII码存放在25H开始的单元内。

3.6 将待转换的数分离出高半字节并移到低4位加30H;再将待转换的数分离出低半字节并加30H,安排好源地址和转换后数的地址指针,置好循环次数。 ORG 0000H

9

MOV R7,#05H MOV RO,#20H

MOV R1,#25H NET:MOV A,@RO ANL A,#OFOH SWAP

ADD A,#30H MOV @R1,A INC R1

MOV A,@RO ANL A,#OFH ADD A,#30H MOV @R1,A INC R0 INC R1

DJNZ R7,NE SJMP $ END

3.7 从内部存储器30H单元开始,有16个数据,试编一个程序,把其中的正数、负数分别送40H和50H开始的存储单元,并分别将正数、负数和零的个数送R4,R5,R6。 3.7 片内RAM间址寄存器只有Ro和R1,而正数、负数和零共需3个寄存器指示地址,这时可用堆栈指针指示第3个地址,POP和PUSH指令可自动修改地址。RO指正数存放地址,Rl指负数存放地址,SP指源数据存放的末地址,POP指令取源数据,每取一个数地址减1。 ORG 0000H MOV R7,#10H MOV A,#0 MOV R4,A MOV R5,A MOV R6,A MOV R0,#40H MOV R1,#50H

MOV SP,#2FH NEXT:POP ACC JZ ZER0 JB ACC.7,NE INC R4 MOV @RO,A INC R0 AJMP DJ NE:INC R5 MOV @R1,A INC R1

AJMP DJ ZER0:INC R6

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@)