单片机习题(指令和编程与答案)_第1页
单片机习题(指令和编程与答案)_第2页
单片机习题(指令和编程与答案)_第3页
单片机习题(指令和编程与答案)_第4页
单片机习题(指令和编程与答案)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/单片机练习二单项选择题1.ORG0003HLJMP2000HORG000BHLJMP3000H当CPU响应外部中断0后,PC的值是(B)。A.0003HB.2000HC.000BHD.3000H3.MCS-51的相对转移指令的最大负跳距离为(B)。A.2KBB.128BC.127BD.256B4.以下运算中对溢出标志0V没有影响或不受影响的运算是(A)。A.逻辑运算B.符号数加减运算C.比较数据大小运算D.除法运算5.产生信号的指令是(C)。A.MOVXA,DPTRB.MOVXDPTR,AC.MOVCA,A+PCD.MOVXA,A+DPTR6.MOVXA,DPTR指令中的源操作数的寻址方式是(B)。A.寄存器寻址B.寄存器间接寻址C.直接寻址D.立即寻址7.将MCS-51的工作寄存器置成3区的指令是(B)。A.MOVPSW,#13HB.MOVPSW,#18HC.SETBPSW.4,CLRPSW.3D.SETBPSW.3,CLRPSW.48.指令AJMP的跳转围是(C)。A.256BB.1KBC.2KBD.64KB9.6264芯片是(B)。A.EPROMB.RAMC.Flash ROMD.EPROM10.下面那条指令产生信号(D)。A.MOVXA,DPTRB.MOVCA,A+DPTRC.MOVCA,A+PCD.MOVXDPTR,A11.执行LCALL4000H指令时,MCS-51所完成的操作是(D)。A.保护PCB.保护现场C.4000HPCD.PC+3入栈,4000HPC12.下列指令中可能改变Cy的有(C)。A.INCAB.CPLAC.RLCAD.MOVA,#data假定设置堆栈指针SP的值为36H,在执行指令PUSH20H后,SP的值为(B)。A.36HB.37HC.38HD.21HPUSHACC指令,MCS-51完成的操作是(A)。A.(SP)+1SP(ACC)(SP)B.(ACC)(SP)(SP)-1SPC.(SP)-1SP(ACC)(SP)D.(ACC)(SP)(SP)+1SPMOVC,00H 指令的第二操作数寻址方式是(A)。A.位寻址B.直接寻址C.立即寻址D.寄存器寻址在算术运算中,与辅助进位AC有关的是(C)。A.二进制B.八进制C.十进制D.十六进制17.把P0口高四位变0,低四位不变,应使用指令(D)。A.ORLP0,#0FHB.ORLP0,#0F0HC.ANLP0,#0F0HD.ANLP0,#0FH18ORG0000HAJMP0040HORG0040HMOVSP,#00H当执行完上面的程序后,PC的值是(D)。A.0040HB.0041HC.0042HD.0043H19.在相对寻址方式中,“相对”两字是指跳转(A)。A.地址偏移量relB.当前指令的首地址C.当前指令的末地址D.DPTR值20.使用8051,且=1,则可以外扩ROM(B)。A.64KBB.60KBC.58KBD.56KB21.已知(31H)=21H,(32H)=04H,执行下列指令后,31H的容为(B)。PUSH31HPUSH32HPOP31HPOP32HA.21HB.04HC.32HD.31H22.已知(A)=00H,执行DECA指令后,A的容为(B)A.00HB.FFHC.01HD.0FH要用传送指令访问MCS-51片外RAM,它的指令操作码助记符应是(B)。A.MOVB.MOVXC.MOVCD.以上都行LCALL存于2000H开始的地址单元中,执行完相应子程序中的返回指令,PC=(D)。A.2000HB.2001HC.2002HD.2003H程序设计的方法一般有(D)A.1种B.2种C.3种D.4种在寄存器间接寻址方式中,指定寄存器中存放的是(B)A.操作数B.操作数地址C.转移指令D.地址偏移量27.当8031外扩程序存储器8KB时,常使用EPROM2716(C)A.2片B.3片C.4片D.5片28.中断服务程序的最后一条指令必须是(C)A.ENDB.RETC.RETID.AJMP29.ADC0809启动A/D转换的方式是(C)A.高电平B.低电平C.正脉冲D.负脉冲30.MOVC,30H源操作数寻址方式为(D)A.立即寻址B.寄存器寻址C.寄存器间接寻址D.位寻址31.POPA指令,MCS-51完成的操作是(A)A.A←((SP))SP←(SP)-1B.SP←(SP)-1A←((SP))C.A←((SP))SP←(SP)+1D.SP←(SP)+1A←((SP))32.当(RS1,RS0)=(1,1)时,工作寄存器R0对应部RAM的(D)字节单元。A.00HB.08HC.10HD.18H33.在R3初值为00H的情况下,DJNZR3,rel指令将循环执行(B)A.0次B.256次C.128次D.10次34.执行AJMPaddr11指令时,MCS-51完成的操作是(D)A.保护PCB.PC←addr11C.保护现场D.PC+2入栈PC0~10←addr11ORG2000HLCALL3000HORG3000HRET上面程序执行完RET指令后,(PC)=(C)。A.2000HB.3000HC.2003HD.3003HMCS-51执行完MOVA,#08H后,PSW的(D)位被置位。A.CB.F0C.0VD.P37.MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是(A)。A.读锁存器B.读数据C.读A累加器D.读CPU38.对程序存储器的读操作,只能使用(D)。A.MOV指令B.PUSH指令C.MOVX指令D.MOVC指令39.ORG8000HDS08HDB30H,8AH则8008H单元容为(B)。A.08HB.30HC.8AHD.不确定40.MOVR0,A指令目标操作数的寻址方式是(A)。A.寄存器间接寻址B.寄存器寻址C.直接寻址D.相对寻址41.已知(60H)=23H,(61H)=61H,运行下列程序62H容为(A)。CLRCMOVA,#9AHSUBBA,60HADDA,61HDAAMOV62H,AA.38HB.D8HC.DBHD.3EH42.设系统的晶振频率为6MHZ,下列子程序DELAY的延时时间约为(B)。DELAY:MOVR2,#0FAHL2:DJNZR2,L2RETA.900μSB.1006μSC.500usD.5.501us43.MCS-51的LJMP指令跳转空间为(C)。A.2KB.–128~127C.64KD.32K44.关于MCS-51的堆栈操作,正确的说法是(C)。A.先入栈,再修改栈指针B.先修改栈指针,再出栈C.先修改栈指针,再入栈D.以上都不对45.JNZrel指令的寻址方式是(C)。A.立即寻址B.寄存器寻址C.相对寻址D.位寻址46.8051执行ADDA,20H指令时,首先在P0口上出现的信息是(A)。A.操作码地址B.操作码C.操作数D.操作数地址47.必须进行十进制调整的十进制运算(C)。A.有加法与减法B.有乘法与除法C.只有加法D.只有减法48.执行MOVXDPTR,A指令时,MCS-51产生(B)控制信号。A.B.C.ALED.49.已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为(C)。DY2:MOVR6,#2DLP1:MOVR7,#250DLP2:DJNZR7,DLP2DJNZR6,DLP1RETA.1msB.1.5msC.2msD.4ms二.填空题(每小题1分,共15分1.执行ANLA,#0FH指令后,累加器A的高四位=清零。2.设DPTR=(2000)H,(A)=08H,则MOVCA,A+DPTR的操作数的实际地址为2008H。3.假定addrll=B,标号JAZ的地址为1030H,执行指令JAZ:AJMPaddrll后,程序转移地址1100H去执行。4.JZrel的操作码的地址为1000H,rel=20H,他的转移目标地址为1022H。28.执行当前指令后,PC容为下一条指令的首地址。5.在寄存器间接寻址方式中,其“间接”体现在指令寄存器的容不是操作数,而是操作数的地址。6.假定(A)=0FFH,执行指令INCA后,A的容为00H。7.MCS-51系统中,当信号有意义时,表示CPU要从外部程序存储器读取信息。访问MCS-51程序存储器传送指令的操作码助记符应为___MOVC______。累加器(A)=7EH,(20H)=#04H,MCS-51执行完ADDA,20H指令后,PSW.0为_____________。INC指令_____________CY位。假定累加器A的容为30H,执行指令1000H:MOVCA,A+PC后,把程序存储器____1031H____单元的容送累加器A中。在R7初值为00H的情况下,DJNZR7,rel指令将循环执行__256__次。13.MOVPSW,#10H是将MCS-51的工作寄存器置为第______2___组。14.指令LCALL37B0H,首地址在2000H,完成此操作后(PC)=___37B0H___。15.假定DPTR的容为8100H,累加器A的容为4DH,执行指令MOVCA,A+DPTR后,送入A的是程序存储器____814DH_______单元的容。16.累加器A中存放一个其值小于或等于127的8位无符号数,CY清“0”后执行RLCA指令,则A中数变为原来的_____2______倍。17.MCS-51的两条查表指令是_MOVCA,A+PC_,_MOVCA,A+DPTR___。18.指令DJNZR7,rel的指令操作码所在的地址为3000H,rel=EFH,则它的转移目的地址为_2FF1H___。19.通过堆栈操作实现子程序调用,首先要把__PC______的容入栈,以进行断点保护。20.调用返回时再进行出栈操作,把保护的断点弹回____PC____。21.设(SP)=60H,(ACC)=30H,(B)=70H,执行指令PUSHACC,PUSHB后,SP的容为___62H____。22.设(SP)=60H,(ACC)=40H,(B)=60H,执行PUSHACC,PUSHB后61H单元的容为___40H____。23.设(SP)=60H,(ACC)=40H,(B)=80H,执行PUSHACC,PUSHB,62H单元的容为___80H_____。24.PC中存放的是__下一条指令首地址____。25.ORLA,#0F0H是将A的高4位置1,而低4位___不变____________。26.一台计算机的指令系统就是它所执行的____指令________集合。27.累加器(A)=80H,执行完指令ADDA,#83H后,进位位C=______1______。28.以助记符表示的计算机指令就是它的_____汇编_______语言。29.SJMPrel的指令操作码地址为0050H,rel=65H,那么它的转移目的地址为00B7H___。30.执行如下指令序列后,所实现的逻辑运算式为__P3.0=_P1.0^P1.1_^/P1.2___。MOVC,P1.0ANLC,P1.1ANLC,/P1.2MOVP3.0,C31.当MCS-51引脚ALE信号有效时,表示从P0口稳定地送出了____低8位地址____地址。三、读程序回答1.试求下列程序依次运行后有关单元的容。已知(R0)=24H,(Cy)=1,(1FH)=59H,(20H)=24H,(24H)=B6H。(6分)MOVA,1FH;(A)=______________ADDCA,20H;20H的寻址方式是CLRA;(A)=______________ORLA,R0;R0的寻址方式是,;(A)=______________CPLA;(A)=______________答案:59H、直接寻址、00H、寄存器间接寻址、B6H、49HSECH:MOVDPTR,#2000HMOVR2,#0FHMOVXA,DPTRMOVB,ASLOP:INCDPTRMOVXA,DPTRCJNEA,B,SLP1SLP1:JNCSLP2MOVB,ASLP2:DJNZR2,SLOPMOVR2,BRET问:(1)此程序完成的是将从H单元开始的H个数中的最值找出,放在单元中。(2)B寄存器里暂存最值。(3)若要比较100个数,则哪句程序需要修改?(10分)答案:(1)2000H、10H、小、R2(2)小(3)将第二句MOVR2,#0FH改为MOVR2,#992.ORG6000H;=1\*GB3①TAB:DB45H,10,88H,’5’;=2\*GB3②DW12H,56H,7800H;=3\*GB3③ORG8000HMOVDPTR,#6001HCLRAMOVCA,A+DPTRMOVDPTR,#6005HMOVXDPTR,A问:(1)根据=1\*GB3①=2\*GB3②=3\*GB3③行指令容,画出存储器从6000H—6009H中数据分布图。(2)执行上面的程序,完成了什么功能?(3)最后A的容为多少?(10分)6000H6000H6001H6009H6000H6001H6000H6001H6009H45H0AH88H35H00H12H00H56H78H00H(2)将从ROM单元地址为6001H的容传送到片外数据RAM6005H单元中。(3)(A)=0AH3.已知某二进制数(10H)存在部RAM50H单元中,阅读下列程序,说明其功能。(6分)MOVR0,#50H;(R0)=____MOVA,R0H;(A)=,寻址方式是。CLRCRLCA;(A)=____ADDA,R1;寻址方式是INCR0MOVR0,A;R0的地址是_______________答案:50H,10H,寄存器间接寻址,20H,寄存器寻址,51H4.START:MOVR0,#30HMOVR7,#0FHMOVDPTR,#3000HLOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR7,LOOPRET程序完成的什么功能?R7的作用是什么?RET指令完成什么功能?(10分)答案:(1)程序将片RAM中30H—3FH单元的容传送到片外RAM地址为3000H—300FH中(2)R7是计数器,初值表示传送数据个数,传送1个减1,当(R7)=0时,表示传送完。(3)返回到主程序的断点处。ORG2000HTAB1:DB10H,22,‘A’TAB2:DW10H,2100HORG3000HMOVDPTR,#TAB2MOVA,#2MOVCA,A+DPTR问:(1)ROM2000H单元中的容___________。(2)字符‘A’所在单元的地址为___________。(3)2005H单元中的容为___________。(4)执行程序后,DPTR的容为___________。(5)A的容为___________。(10分)答案:(1)10H(2)2002H(3)21H(4)2003H(5)21H6.若(A)=FFH,(R0)=00H,(00H)=FFH,(CY)=0,位地址(00H)=1,将结果填入横线。(6分)DECA;(A)=_______INCR0;此句将地址为___H的单元加1SETB00H;此句完成______功能ANLC,00H;(C)=______ADDA,R0;寻址方式=__________,(A)=__________答案:FEH,00H,位地址为00H的单元置1。寄存器寻址,FEH7.START:MOVA,40HMOVDPTR,#TABMOVCA,A+DPTRMOV40H,ARETTABDB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39H假设40H单元中的数的围从0—9,问:(1)这段程序完成什么功能?(2)当执行程序前40H中的容为6,问执行完这段程序后40H中的容为_________。(3)MOVCA,A+DPTR中的寻址方式是。(10分)答案:(1)这段程序完成了通过查表得到40H单元的数的ASC=2\*ROMANII码,并将结果返回40H单元。(2)36H(3)基址+变址的寻址方式8.ADD3:MOVA,R5ADDA,R2MOVR0,AINCR0MOVA,R6ADDCA,R3MOVR0,AINCR0MOVA,R7ADDCA,R4MOVR0,ARET(1)程序完成什么功能?(2)假设执行程序前R0=30H,程序执行结束后30H,31H,32H中的容为___________,其中_________H中存放高字节(3)执行结束后,CY的容为。(10分)答案:①程序完成了两个3字节数的求与。加数(1)在R7R6R5中,加数(2)在R4R3R2②三个字节中与,32H。③三字节与最高位的进位位。9.设(A)=5AH,(R1)=30H,(30H)=E0H,(CY)=1,根据程序填空。(6分)SWAPA;(A)=_______ADDA,#30H;寻址方式________ADDCA,30H;(A)=______,寻址方式____RLCA;(A)=______ANLA,30H;(A)=______答案:A5H 立即数寻址 B5H,直接寻址 6BH 60H10.ADDIO:MOVR0,30HMOVR7,#9MOVA,R0LOOP:INCR0ADDA,R0DJNZR7,LOOPMOV30H,ARET程序完成的是什么功能?若把MOVR7,#9改成MOVR7,#4,程序功能有何变化?(10分)答案:(1)将片RAM从30H—39H十个单元中的容相加,与存在30H中。 (2)不是10个数相加,是30—34H五个数相加。11.LOOK:MOV51H,#0MOVR0,#30HMOVR1,#20HLOP:MOVA,R0CPLAJNZLP1INC51HLP1:INCR0DJNZR1,LOPRET(1)R0的作用是什么?(2)程序结束后51H单元中存放的容是什么?(3)若将JNZLP1这句变成JZLP1,程序完成什么功能?(10分)答案:(1)数据单元指针。(2)片RAM30H—50H单元中容为FFH单元的个数。(3)将片RAM30H—50H单元中容为非FFH单元的总个数送给51H。12.设RAM(20H)=11001011B,(24H)=01010111B,求依次执行下列指令后的结果。(6分)LOOP:00H,LP1;26H,LP2;程序跳转到LP1还是LP2?答________Lp1:MOVA,20H;(A)=_____,寻址方式是______CPLA(A)=______ADDA,24H(A)=______JZLP3;执行完此句后,程序跳到LP3还是LP2处?LP2:INC20HLP3:┋答案: Lp1 11001011B,直接寻址 00110100B 10001011B Lp213.ORG2000HTAB:DB01,02DW03,04DS03HORG2200HMOVDPTR,#TABMOVA,#02HMOVCA,A+DPTR问:(1)请填入存储器2000H~2008H单元的容。(2)执行完程序后A中的容为________。(3)DPTR是一个______字节的寄存器。(10分)答案:01H02H00H03H00H04H00H00H00H2000H(2)(A)=00H(3)214.START:MOVDPTR,#2010HMOVR7,#10HMOVR0,#30HLOOP:MOVXA,DPTRMOVR0,ADECDPTRINCR0DJNZR7,LOOPRET程序完成什么功能?MOVXA,DPTR这句指令是什么寻址方式?DJNZR7,LOOP这句指令的含义?(10分)答案:(1)程序完成将片外RAM2010H单元—2001H单元的容,依次传送到片RAM30H—3FH单元中去。(2)寄存器间接寻址。(3)判断(R7)-1是否为0,若为0,结束循环,不为0继续到LOOP那儿循环。15.若(A)=78H,(R0)=34H,(34H)=DCH,(56H)=ABH,(cy)=1, 求分别执行下列指令后填空。(6分)ADDCA,R0;(A)=_______________,寻址方式是________________ORLA,#23H;(A)=_______________,;寻址方式是_______________MOVA,34H;(A)=_______________SWAPA;(A)=_______________答案:55H,寄存器间接寻址77H,立即寻址DCH,CDH.16.MOVA,R0CPLAJZLABEL1INCAJZLABEL2LABEL1:INCASJMPLOOPLABEL2:DECALOOP:RET问:(1)分析上面一段程序,何时转向LABEL1?何时转向LABEL2?(2)若(R0)=FFH,执行完程序后(A)=_______________H。(10分)答案:(1)当R0的值为FFH,转向LABEL1,当R0为00时,转向LABLE2(2)01H17.START:MOVR0,#40HMOVR7,#09HMOVA,R0LOOP:INCR0MOV30H,R0CJNEA,30H,NEXTNEXT:JNCBIEIMOVA,30HBIEI:DJNZR7,LOOPMOV50H,ARET问:(1)A中暂放_________________。(2)R7寄存器中保存的数是_________________。(3)最后50H中存放的是___________________。(10分)(1)最大(2)比较的次数,共有9个数与A中的数做比较(3)片RAM40H~49H中最大的值18.已知外RAM(2040H)=50H,ROM(2090H)=96H,RAM(20H)=85H,试求下列程序依次运行后有关单元的容。(6分)MOVDPTR,#2040H;(DPTR)=_______________MOVXA,DPTR;寻址方式是_____________,(A)=_____________MOVA,20H;(A)=______________ANLA,#38H;(A)=_______________,寻址方式是____________答案:2040H寄存器间址,50H85H00H立即寻址19.CLRCLOOP1:MOVA,R0ADDCA,R1DAAMOVR0,AINCR0INCR1DJNZR7,LOOP1CLRAMOVACC.0,CMOVR0,ARET问:(1)DAA指令有何用途?(2)若执行程序前(R0)=20H,(R1)=30H,(R7)=03H,则程序完成什么功能?程序最后的结果放在哪些单元?(10分)答案:(1)DAA是对A中的数进行十进制数的调整。(2)将存放在(22H)(21H)(20H)中的BCD码与(32)(31H)(30H)单元中的BCD码相加,结果调整为BCD码后放回(23H)(22H)(21H)(20H)单元中,其中高地址存放高位字节。20.MOVR0,#20HSLOP:MOVA,R0JZLP1ACC.7,LP2INC30HLP0:INCR0DJNZ1FH,SLOPENDLP1:INC31HSJMPLP0LP2:INC32HSJMPLP0问:(1)若执行前(20H)单元中的容为F1H,则程序能不能走到LP1处?(2)执行前1FH单元中存放的是什么?(3)执行后30H,31H,32H单元中各存放的什么数据?(10分)(1)不能(2)参加统计的数的个数(3)30H中放正数的个数31H中放“0”32H中放负数的个数21.已知(30H)=58H,读程序填空。(6分)CLRCMOVA,30H;寻址方式是______,(A)=______RLCARLCA;(C)=_______ADDA,#36H;寻址方式是_______,(A)=_______JZLOOP2;程序转至LOOP1还是LOOP2?答_______Loop1:MOVA,00H直接寻址,58H1立即寻址,96HLOOP122.(30H)=15H,问执行完程序后,A,B,SP,32H,33H,34H的容是多少?(10分)MOVSP,#30HXCHA,30HMOVB,AANLA,#0FHMOV33H,AMOVA,BPUSHASWAPAANLA,#15HMOV34H,APUSHA答案:(A)=11H(B)=15H(SP)=32H(32H)=11H(33H)=05H(34H)=11H23.部RAM30H,31H单元中存放两个无符号数,读程序回答问题。(10分)ORG1000HSTART:CLRCMOVA,30HSUBBA,31HJCNEXTMOVA,30HXCHA,31HMOV30H,ANEXT:NOPSJMP$END程序完成什么功能?若(30H)=89H,(31H)=F5H,执行程序后(30H)=____________,(31H)=___________,(Cy)=___________。答案:(1)比较30H与31H中无符号数的大小,小数存于30H,大数存于31H(2)(30H)=89H,(31H)=F5H,(Cy)=1四、编程题1.编写程序,将外部RAM2000H-201FH数据块数据,传送到片RAM40H-5FH的对应单元中,并统计其中数据‘0’的个数,将结果放入片60H单元中。答案:START:MOVDPTR,#2000HMOVR0,#40HMOVR1,#1FHMOVR2,#00HLOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0CJNEA,#00H,LOOP1INCR2LOOP1:DJNZR1,LOOPMOV60H,R2RET2.已知8位要显示数字已存放在首地址为30H的片RAM中,试将其转换为共阴显示字段码,存入首址为40H的RAM中,已知TABD为0-9共阴字段码表首址。ORG1000HTABD:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH答案:MOVDPTR,#TABD MOVR2,#8MOVR0,#30HMOVR1,#40HLOOP:MOVA,R0MOVCA,A+DPTRMOVR1,AINCDPTRINCR0INCR1DJNZR7,LOOPEND3.试完成程序,求Y值,设m,n存在30H与31H中,Y存在32H中,且mn积小于256,m/n的商为整数。mn(m<n)Y=0(m=n)m/n(m>n)答案:MOVA,30H MOVB,31H CJNEA,B,LOOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论