单片机原理和应用第二版张毅刚课后习题答案解析 下载本文

4.答:只能使用直接寻址方式。 5.答:操作码,操作数,操作码。 6. 答:1031H。 7.答:程序,数据。 8.答:地址。

9.答:A的内容与B的内容互换。

10.答:(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(PC)=5030H 11.答:(A)ANL A,#87H

(B)ANL A,#0C3H (C)ORL A,#0CH

12.答:(A)=0CBH。

13.答:(A)=00H,(R3)=0AAH。

14.答:(DPH)=3CH,(DPL)=5FH,(SP)=50H 15.答:(SP)=62H,(61H)=30H,(62H)=70H。 16.答: MOV R7,A

PUSH Acc MOV A,B MOVX @DPTR,A

17.答:(D)。 18.答:(C)。

19.答:基本型的51子系列单片机,由于其片内RAM的地址范围为00H—7FH,而80H—FFH为特殊功能寄存器区,而对特殊功能寄存器寻址,只能使用直接寻址方式。对片内RAM寻址,当使用寄存器间接寻址是采用R0或R1作为间接寻址的,因此R0或R1的

内容不能超过7FH。

增强型的52子系列单片机,片内RAM的地址范围为00H—FFH,因此作为间接寻址寄存器的R0或R1的内容就不受限制。

第4章 AT89S51汇编语言程序的设计与调试

参考答案

1.答:伪指令是程序员发给汇编程序的命令,只有在汇编前的源程序中才有伪指令,即在汇编过程中的用来控制汇编过程的命令。所谓“伪”是体现在汇编后,伪指令没有相应的机器代码产生。常用伪指令及其功能如下:

ORG(ORiGin)汇编起始地址命令;END(END of assembly)汇编终止命令;EQU(EQUate)标号赋值命令;DB(Define Byte)定义数据字节命令;DW(Define Word)定义数据字命令;DS(Define Storage)定义存储区命令;BIT 位定义命令

2. 答:

手工汇编:通过查指令的机器代码表(表3-2),逐个把助记符指令“翻译”成机器代码,再进行调试和运行。这种人工查表“翻译”指令的方法称为“手工汇编”。

机器汇编:借助于微型计算机上的软件(汇编程序)来代替手工汇编。通过在微机上运行汇编程序,把汇编语言源程序翻译成机器代码。

反汇编:将二进制的机器码程序翻译成汇编语言源程序的过程称为“反汇编”。 3.答:从1000H开始的各有关存储单元的内容(16进制)如下:

4D 41 49 4E 12 34 30 00 00 70

4.在编写子程序时应注意以下问题: (1)子程序的第一条指令前必须有标号。

(2)主程序调用子程序,有如下两条子程序调用指令:

① 绝对调用指令ACALL addr11。被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。

② 长调用指令LCALL addr16。addr16为直接调用的目的地址,被调用的子程序可放置在64KB程序存储器区的任意位置。

(3)子程序结构中必须用到堆栈,用来保护断点和现场保护。 (4)子程序返回时,必须以RET指令结束。 (5)子程序可以嵌套,但要注意堆栈的冲突。 5.答:参考程序如下:

MOV A,45H

ANL ORL

A,#0FH A,#0FH

MOV 45H,A

6.答:A=80H ,SP=40H,(41H)=50H,(42H)=80H ,PC=8050H 7.答:参考程序如下:

START: MOV R0,#30H

MOV R2,#20H MOV A,@R0

CJNE A,#0AAH,NEXT MOV 51H,#01H LJMP EXIT INC

R0

LOOP:

NEXT:

DJNZ R2,LOOP MOV 51H,#00H

EXIT: RET

8.答:参考程序如下:

START: MOV 41H,#0

MOV R0,#20H MOV R2,#20H MOV A,@R0 JNZ INC INC

NEXT 41H R0

LOOP:

NEXT:

DJNZ R2,LOOP RET

9.答:参考程序如下:

ORG 0100H

MOV R2, #20H 要比较的数据字节数 MOV A , #21H MOV R1 , A DEC R2 MOV A , @R1 MOV R3,A DEC R1 CLR

C

LOOP:

SUBB A,@R1 JNC

LOOP1