最新单片机原理及应用 第三版 林立 张俊亮课后答案汇编 联系客服

发布时间 : 星期四 文章最新单片机原理及应用 第三版 林立 张俊亮课后答案汇编更新完毕开始阅读f1188e5f2e60ddccda38376baf1ffc4ffe47e297

MOV A,R1 MUL AB INC DPTR

寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片内RAM的全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;如 MOV A,@R0

MOV A,@R1 MOVX A,@DPTR

立即寻址方式:操作数本身在指令中直接,给出适用于用8位立即数对片内RAM所有地址单元赋值,也可用16位立即数对DPTR赋值; 如

MOV A,#0E2H MOV DPTR,#2000H

变址寻址方式:以DPTR或PC作为基地址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器ROM,仅有三条指令如下:

MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR

位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片内RAM中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有SFR中的每个位地址空间;如

MOV C,7FH MOV F0,C MOV C,ACC.7

相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令-128至+127字节范围内的地址空间。如

SJMP START

HERE: SJMP HERE ;等效于: SJMP $

2.MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某内部数据单元的内容是否为零?

答:MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,判断某内部数据单元的内容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。

3.编程将内部RAM的20H--30H单元内容清零。

解:设一个片内RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片内RAM单元,每传送一个字节,地址指针加1,直到达到地址为30H或达到计数器规定的17个字节为止。 程序1:

MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0

CONT: MOV @R0,A ;置0指针所指单元 INC R0 ;地址指针加1

CJNE R0,#31H,CONT ;指针未超过终点则继续 SJMP $ ;暂停 程序2:

MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0

MOV R7,#17 ;计数器赋初值,从20H到30H共17个字节 CONT: MOV @R0,A ;置0指针所指单元

INC R0 ;地址指针加1

DJNZ R7, CONT ;计数器减1,非0,则继续 SJMP $ ;暂停

4.编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零。

解:设一个片内RAM指针R0,先指向首地址32H,比较@R0与#0AAH,若相等,则退出循环,给50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给50H单元赋00H

程序1:

MOV R0,#32H ;设地址指针初值

CONT: CJNE @R0,#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移 MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH

SJMP DOWN ;转存到保存结果处 NEXT: INC R0 ;修改地址指针

CJNE R0,#42H,CONT ;若指针未越过终点,则继续

MOV A,#00H ;查找失败,则将00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入50H单元

SJMP $ ;暂停 END 程序2:

MOV R7,#16 ;计数器赋初值,从20H到30H共16个字节 MOV R0,#32H ;设地址指针初值

CONT: CJNE @R0,#0AAH,NEXT ;比较查找值与指针所指单元的值,不相等转移 MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH

SJMP DOWN ;转存到保存结果处 NEXT: INC R0 ;修改地址指针

DJNZ R7,CONT ;计数器减1,非0,则继续

MOV A,#00H ;查找失败,则将00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入50H单元

SJMP $ ;暂停 END

5.查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元。 解:从20H到4FH共48个字节

MOV R7,#48 ;字节计数器赋初值 MOV R0,#20H ;设地址指针初值

CONT: CJNE @R0,#00H,NEXT ;比较查找值与指针所指单元的值,不相等转移 INC R6 ;相等,0的个数计数器加1

NEXT: INC R0 ;修改地址指针

DJNZ R7,CONT ;计数器减1,非0,则继续 MOV 50H,R6 ;保存O的个数计数值到50H单元 SJMP $ ;暂停 END END

6.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的A中的内容。 ANL A,#17H

ORL 17H,A XRL A,@R0