资源描述
1. MCS-51单片机有哪几种寻址方式?各寻址方式所对应的寄存器和存储空间有什么不同?
答:51系列单片机共有7中寻址方式:
1) 立即寻址:将立即数存放到相应的寄存器中
2) 寄存器寻址:操作数在寄存器中,寻址范围包括:通用寄存器(4组32个通用寄存器,但在任何时刻只使用当前组寄存器组。所以在指令中这些寄存器的名字只有8个,及R0-R7),部分专用寄存器(例如累加器A和B寄存器,以及数据指针DPRT寄存器等)
3) 直接寻址,寻址范围只限于内部RAM
4) 寄存器间接寻址,寻址范围包括:内部数据RAM的寄存器间接寻址;外部数据RAM的寄存器间接寻址
5) 相对寻址,寻址范围是相应的程序存储空间
6) 变址寻址,只能对程序存储器进行寻址。
7) 位寻址,寻址范围:内部RAM中的位寻址区,专用寄存器中的可寻址位。
3. 若(50H)=60H,写出执行下面程序段后累加器A、寄存器R0,以及内部RAM的60H、61H、62H单元中的内容。
MOV A,50H
MOV R0,A
MOV A,#00H
MOV@R0,A
MOV A,3BH
MOV 61H,#60H
MOV 62H,A
程序执行后,累加器A中的值为60H,寄存器R0中的值为00H,内部RAM的(60H)=00H,(61H)=60H;(62H)=(3BH)
4. 一个16位数的高字节存放在30H单元,低字节存放在31H单元,另一个16位数据的高字节存放在32H单元,低字节存放在33H单元,试编写程序完成这两个16位数据的减法运算,差的高8位放在40H,低8位放在41H单元。
答: CLR C
MOV A,30H
SUBB A,(32H)
MOV 41H,A
MOV A,31H
SUBB A,(33H)
MOV 42H,A
5. 编写一段程序,查找存档在30H-50H单元中是否有数据34H,若有则将F0置1,否则,将F0清0.
答: L0: MOV R0,#50H
MOV A,#34H
CLR C
SUBB A,@R0
JZ L1
DEC R0
MOV A,#30H
CLR C
SUBB A,R0
JNZ L0
CLR D5
L1:SET D5
6. 编写程序,求出片内40H单元内容中所有“0”的个数,结果存入60H单元中
答: MOV R0,#00H
MOV R1,#8
MOV A,40H
L0: RRC A
MOV R2,A
MOV A,R0
ADDC A,#0
MOV R0,A
MOV A,R2
DJNZ R1,L0
MOV A,#8
CLR C
SUBB A,R0
MOV R0,A
RET
7. 在内部RAM单元从30H开始的5个单元中,存放着5个压缩BCD码,编写一段程序,将他们转换为ASCII码,并存放到40H开始的单元中。
答: MOV R10,#30H
MOV R1,#5
MOV R2.#40H
LOOP: MOV A,R0
ANL A,#0FH
ADDC A,#30H
INC R2
MOV @R2,A
MOV A,#F0H
MOV B,#16
MOV A,B
ADDC A,#30H
ANC R2
MOV @R2,A
INC R0
DJNZ R1,LOOP
RET
8. 编写求出内部RAM中从30H开始的连续20个单元中的内容的平均值,并存入60H单元中
答: MOV R0,#20H
MOV A,30H
MOV R1,#31H
MOV R2,#0
MOV R3,#O
LOOP:MOV A,R3
ADD A,@R1
MOV R3,A
MOV A,#00H
ADDC A,R2
MOV R2,A
CLR C
MOV A,@R1
INC R1
DEC R0
JNZ LOOP
MOV B,R2
MOV A,#10H
MUL AB
MOV R1,A
ANL R3,#F0H
MOV A,R3
MOV B,#10H
DIV AB
ADD A,R1
MOV B,#20H
DIV AB
LOOP1:MOV R0,#4
RL A
DJNZ R0,LOOP1
MOV R1,A
MOV A,10H
MUL AB
ANL R3,#0FH
ADD A,R3
MOV B,#20
DIV AB
MOV R2,A
MOV A,R1
ADDC A,R2
MOV A,R1
ADDC A,R2
MOV R2,A
MOV A,#60H
MOV A,R2
3
展开阅读全文