单片机课后第三章习题答案

更新时间:2023-11-26 16:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理与应用作业

第三章

1 设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值? MOV A,59H ;A=50H MOV R0,A ;R0=50H MOV A,#00H ;A=00H MOV @R0,A ;50H=00H MOV A,#25H ;A=25H MOV 51H,A ;51H=25H MOV 52H,#70H ;52H=70H A=25H R0=50H 50H=00H 51H=25H

2请选用适合的指令对P0口内容作修改(例如使P0.0~P0.3不变,P0.4~P0.7为0) mov A,P0 ANL A ,0fh mov P0,A

3访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。 答:访问外部数据存储器指令有:

MOVX @DPTR,A MOV DPTR,#0100H MOV @DPTR,A MOVX A,@DPTR MOV DPTR,#0200H MOV A,@DPTR MOVX A,@Ri MOVX A,@R0 MOVX @Ri,A MOVX @R1,A 访问程序存储器指令有: MOVC A,@A+PC MOVC A,@A+DPTR

4设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化? PUSH 30H ;61H=24H

PUSH 31H ;62H=10H SP=62H POP DPL ;DPL=10H

POP DPH ;DPH=24H SP=60H MOV 30H,#00H ;30H=00H MOV 31H,#0FFH ;31H=0FFH

5设(A)=40H,(R1)=23H,(40H)=05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值? XCH A,R1 ;A=23H R1=40H XCHD A,@R1 ;A=25H 40H=03H

6两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(千位、百位在低地址中,十位、个位在高地址中),和存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。 ORG 0000H LJMP START ORG 0100H START: MOV A,53H ADD A,51H DA A MOV 55H,A MOV A,52H ADDC A,50H DA A MOV 56H,C SJMP $ END

7设(A)=01010101B,(R5)=10101010B,分别写出执行下列指令后结果。 ANL A , R5 ; 00000000B ORL A , R5 ; 11111111B XRL A , R5 ; 11111111

8指令SJMP rel中,设rel=60H,并假设该指令存放在2114H和2115H单元中。当该条指令执行后,程序将跳转到何地址? 答: 2116H+60H=2176H

9简述转移指令AJMP addr11、SJMP rel、 LJMP addr16及JMP @A+DPTR的应用场合。 答:AJMP addr11 为2K字节范围内的无条件转跳指令,把程序的执行转移到指定的地址。SJMP rel是无条件转跳指令,执行时在PC加2后,把指令中补码形式的偏移量值加到PC上,并计算出转向目标地址。转向的目标地址可以在这条指令前128字节到后127字节之间。 LJMP addr16执行这条指令时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向指定地址。转移的目标地址可以在64K程序存储器地址空间的任何地方,不

影响任何标志。JMP @A+DPTR 指令的功能是把累加器中8位无符号数与数据指针DPTR中的16位数相加,将结果作为下条指令地址送入PC,利用这条指令能实现程序的散转。

10试分析下列程序段,当程序执行后,位地址00H,01H中的内容将为何值?P1口的8条I/O线为何状态?

CLR C ;CY=0 MOV A,#66H ;A=66H JC LOOP1

CPL C ;CY=1 SETB 01H ;20H.1=1 LOOP1: ORL C, ACC.0 ;CY=1 JB ACC.2,LOOP2 ; CLR 00H

LOOP2: MOV P1,A ;P1=01100110B SJMP $

20H.0=0 20H.1=1 P1=66H

11查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。 MOV 78H,80H ;85 80 78 MOV 78H,#80H ;75 78 80

答直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前,而立即数传送到直接地址单元是第一个操作数在前,次序正好相反。

12手工汇编下列程序段 ORG 873BH AAA EQU 851AH QQQ: MOV A,35H CLR C SUBB A,#0AH JC QQ16 MOV A,36H SUBB A,#0AH JC QQ15 AJMP AAA QQ15: MOV 35H,#00H QQ16: JNB 02H,QQ17 MOV R6,39H DEC R6

SJMP QQ18 QQ17: MOV R6,39H INC 39H QQ18: CLR 05H LJMP 8500H END

13若有两个无符号数x,y分别存放在内部存储器50H、51H单元中,试编写一个 程序实现x*10+y,结果存人52H、53H两个单元中。 ORG 0000H SJMP START ORG 0030H START: MOV A,50H MOV B,#10

MUL AB ;(50H)x10积的高、低字节分别在B、A中 ADD A,51H MOV 53H,A ;积的低字节加(51H)其和存放在53H中 MOV A,#00H ADDC A,B

MOV 52H,A ;积的高字节加进位位存放在52H中。 SJMP $

14从内部存储器20H单元开始,有30个数据。试编一个程序,把其中的正数、负数分别送51H和71H开始的存储单元,并分别记下正数、负数的个数送50H和70H单元。

ORG 0000H SJMP START ORG 0030H

START: MOV 1EH,#51H ;正数存放首地址51H存暂存于1EH单元 MOV 1FH,#71H ;负数存放首地址71H存暂存于1EH单元 MOV R0,#20H ;建立取数(源操作数)的地址指针 MOV R2,#30 ;预置数据长度 MOV 50H,#00H ;正数个数统计单元清零 MOV 70H,#00H ;负数个数统计单元清零 LOOP: MOV A,@R0 ;取数

JB ACC.7,NEG ;是负数转 NEG处理

POSI: MOV R1,1EH ;是正数,将暂存的地址送R1(间址寄存器) MOV @R1,A ;将正数入存

INC 50H ;正数个数加1

INC 1EH ;正数暂存地址加1修正 LOOP1: INC R0 ;取数地址加1修正

DJNZ R2,LOOP ;计数长度减1,不等于零,继续循环统计 SJMP $ ; 结束

NEG: MOV R1,1FH ;是负数,将暂存的地址送R1(间址寄存器) MOV @R1,A ;将负数入存

INC 70H ;负数个数加1

INC 1FH ;负数暂存地址加1修正 SJMP LOOP1 ;转取数地址修正

15内部存储单元40H中有一个ASCII码字符,试编一程序,给该数的最高位加上奇校验。 ORG 0000H SJMP START ORG 0030H

START: MOV A,40H ;取数给A

CLR ACC.7 ;A最高位(奇偶校验位)清零 JB P,LOOP ;40H中的ACSII码原来就是奇数个1(最高位给零) SETB ACC.7 ;40H中的ACSII码原来是偶数个1,最高位置1 LOOP: MOV 40H,A ;入存 SJMP $ ; 结束 END

16编写一段程序,将存放在自DATA单元开始的一个四字节数(高位在前),取补后送回原单元。

一:若DATA在内部数据存储器中(假如存放在30H起始的4个单元中); 解1、采用求反加1的算法 ;

ORG 0000H SJMP START ORG 0030H

START: SETB C ; 置进位位为1 MOV R2,#04H ; 预置计数长度

MOV R0,#DATA1+3 ; 取数指针指向低字节的地址 LOOP: MOV A,@R0 ; 取数

CPL A ; 求反

ADDC A,#00H ; 加进位 MOV @R0,A ; 入存

DEC R0 ; 地址指针修正

DJNZ R2,LOOP ; 4字节未处理完,继续循环处理 SJMP $ ; 结束 DATA1 EQU 30H ; END

ADD A,B MOV B,A

LOOP: MOVC A,@A+DPTR MOV R5,A INC DPTR MOV A,B

MOVC A,@A+DPTR MOV R6,A RET ;

TAB: DB 00H,00H,00H,01H,00H,04H,00H,09H,00H,16H ;平方数用BCD表示(也可用 DB 00H,25H,00H,36H,00H,49H,00H,64H,00H,81H ; 十六进制表示) DB 01H,00H,01H,21H,01H,44H,01H,69H,01H,96H

DB 02H,25H,02H,56H,02H,89H,03H,24H,03H,61H,04H,00H END

若平方表从0的平方存放,把程序中红色的DEC A 指令去掉,若表从1的平方存放,则将DEC A指令加上。

本文来源:https://www.bwwdw.com/article/u4lt.html

Top