当前位置:文档之家› 单片机课后第三章习题答案(DOC)

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

单片机原理与应用作业第三章1 设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值?MOV A,59H ;A=50HMOV R0,A ;R0=50HMOV A,#00H ;A=00HMOV @R0,A ;50H=00HMOV A,#25H ;A=25HMOV 51H,A ;51H=25HMOV 52H,#70H ;52H=70HA=25H R0=50H 50H=00H 51H=25H2请选用适合的指令对P0口内容作修改(例如使P0.0~P0.3不变,P0.4~P0.7为0)mov A,P0ANL A ,0fhmov P0,A3访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。

答:访问外部数据存储器指令有:MOVX @DPTR,A MOV DPTR,#0100H MOV @DPTR,AMOVX A,@DPTR MOV DPTR,#0200H MOV A,@DPTRMOVX A,@Ri MOVX A,@R0MOVX @Ri,A MOVX @R1,A访问程序存储器指令有:MOVC A,@A+PCMOVC A,@A+DPTR4设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?PUSH 30H ;61H=24HPUSH 31H ;62H=10H SP=62HPOP DPL ;DPL=10HPOP DPH ;DPH=24H SP=60HMOV 30H,#00H ;30H=00HMOV 31H,#0FFH ;31H=0FFH5设(A)=40H,(R1)=23H,(40H)=05H。

执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?XCH A,R1 ;A=23H R1=40HXCHD A,@R1 ;A=25H 40H=03H6两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(千位、百位在低地址中,十位、个位在高地址中),和存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。

ORG 0000HLJMP STARTORG 0100HSTART:MOV A,53HADD A,51HDA AMOV 55H,AMOV A,52HADDC A,50HDA AMOV 56H,CSJMP $END7设(A)=01010101B,(R5)=10101010B,分别写出执行下列指令后结果。

ANL A ,R5 ;00000000BORL A ,R5 ;11111111BXRL A ,R5 ;111111118指令SJMP rel中,设rel=60H,并假设该指令存放在2114H和2115H单元中。

当该条指令执行后,程序将跳转到何地址?答:2116H+60H=2176H9简述转移指令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=0MOV A,#66H ;A=66HJC LOOP1CPL C ;CY=1SETB 01H ;20H.1=1LOOP1:ORL C,ACC.0 ;CY=1JB ACC.2,LOOP2 ;CLR 00HLOOP2:MOV P1,A ;P1=01100110BSJMP $20H.0=0 20H.1=1 P1=66H11查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。

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

12手工汇编下列程序段ORG 873BHAAA EQU 851AHQQQ: MOV A,35HCLR CSUBB A,#0AHJC QQ16MOV A,36HSUBB A,#0AHJC QQ15AJMP AAAQQ15: MOV 35H,#00HQQ16: JNB 02H,QQ17MOV R6,39HDEC R6SJMP QQ18QQ17: MOV R6,39HINC 39HQQ18: CLR 05HLJMP 8500HEND13若有两个无符号数x,y分别存放在内部存储器50H、51H单元中,试编写一个程序实现x*10+y,结果存人52H、53H两个单元中。

ORG 0000HSJMP STARTORG 0030HSTART: MOV A,50HMOV B,#10MUL AB ;(50H)x10积的高、低字节分别在B、A中ADD A,51HMOV 53H,A ;积的低字节加(51H)其和存放在53H中MOV A,#00HADDC A,BMOV 52H,A ;积的高字节加进位位存放在52H中。

SJMP $14从内部存储器20H单元开始,有30个数据。

试编一个程序,把其中的正数、负数分别送51H和71H开始的存储单元,并分别记下正数、负数的个数送50H 和70H单元。

ORG 0000HSJMP STARTORG 0030HSTART: 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 ;正数个数加1INC 1EH ;正数暂存地址加1修正LOOP1: INC R0 ;取数地址加1修正DJNZ R2,LOOP ;计数长度减1,不等于零,继续循环统计SJMP $ ; 结束NEG: MOV R1,1FH ;是负数,将暂存的地址送R1(间址寄存器) MOV @R1,A ;将负数入存INC 70H ;负数个数加1INC 1FH ;负数暂存地址加1修正SJMP LOOP1 ;转取数地址修正15内部存储单元40H中有一个ASCII码字符,试编一程序,给该数的最高位加上奇校验。

ORG 0000HSJMP STARTORG 0030HSTART: MOV A,40H ;取数给ACLR ACC.7 ;A最高位(奇偶校验位)清零JB P,LOOP ;40H中的ACSII码原来就是奇数个1(最高位给零) SETB ACC.7 ;40H 中的ACSII码原来是偶数个1,最高位置1 LOOP: MOV 40H,A ;入存SJMP $ ; 结束END16编写一段程序,将存放在自DATA单元开始的一个四字节数(高位在前),取补后送回原单元。

一:若DATA在内部数据存储器中(假如存放在30H起始的4个单元中);解1、采用求反加1的算法;ORG 0000HSJMP STARTORG 0030HSTART: SETB C ; 置进位位为1MOV 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 ;END17以BUFl为起始地址的外存储区中,存放有16个单字节无符号二进制数,试编一程序,求其平均值并送BUF2单元。

解:设R2、R3存放和,将其除以16(R2、R3联合左移4位)即为平均置值(单字节存放)ORG 0000HSJMP STARTORG 0030HSTART: MOV R2,#00H ; 和高字节清零MOV R3,#00H ; 和低字节清零MOV DPTR,#DATA1 ; 建立外部数据存储器的地址指针MOV R4,#10H ; 预置计数长度LOOP: MOVX A,@DPTR ; 从外部数据存储器取数ADD A ,R3MOV R3,AMOV A, R2 ;ADDC A,#00H ;MOV R2,A ; 累加INC DPTR ; 地址指针修正DJNZ R4,LOOP ; 16字节未累加完,继续循环累加MOV R4,#04H ; R2、R3联合移位4次(除以16)LOOP1: CLR CMOV A,R2RRC AMOV R2,AMOV A,R3RRC AMOV R3,ADJNZ R4,LOOP1 ; 平均值存放于R3中SJMP $ ; 结束DATA1 EQU 1000H ;END18在DATAl单元中有一个带符号8位二进制数。

编一程序,按以下关系计算y 值,送DATA2x+5 x>0x x=0x-5 x<0解1:设DATA1、DATA2为内部数据存储器的二个单元(假设为30H、31H)且y 的值单字节不会产生溢除出ORG 0000HSJMP STARTORG 0030HSTART: MOV A,30H ; 取数X给AJZ ZERO ; 若X=0,则Y=0,转入存JB ACC.7,NEG ; 若X<0,则转X-5POZI: ADD A,#05H ; 若x>0,则X=5,入存SJMP ZERO ;NEG: CLR C ;SUBB A,#05H ;ZERO: MOV 31H,A ; 结果入存SJMP $ ;END19设内部RAM中30H和31H单元中有两个带符号数,求出其中的大数存放在32H单元中。

相关主题