单片机原理与应用学习通超星期末考试答案章节答案2024年_第1页
单片机原理与应用学习通超星期末考试答案章节答案2024年_第2页
单片机原理与应用学习通超星期末考试答案章节答案2024年_第3页
单片机原理与应用学习通超星期末考试答案章节答案2024年_第4页
单片机原理与应用学习通超星期末考试答案章节答案2024年_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用学习通超星期末考试章节答案2024年STC89C52单片机使用的是什么体系架构?

答案:哈佛结构体系单片机集成中央处理器,数据存储器、程序存储器、中断系统等,其中,中央处理器的英文简称是什么?

答案:CPU试解读如下汇编程序,逐行分析,并说明整段程序最终实现的功能。MOV

A,#66HADD

A,#0F2HMOV

40H,AMOV

A,#88HADDC

A,#0FH

答案:将立即数66H放入A寄存器将立即数0F0H与A寄存器中数据66H相加,结果放入A寄存器将A寄存器中的内容,即相加的结果放入地址40H中将立即数88H放入A寄存器将立即数0FH与A寄存器中数据88H使用带进位加法相加,结果放入A寄存器程序功能:计算8866H与0FF2H相加,结果的高8位存放在A寄存器中,低8位存放在地址40H中。试解读如下汇编程序,逐行分析,并说明整段程序最终实现的功能。

MOV

R0,#20H

MOV

DPTR,#50H

MOV

R3,#0AH

LAB:

MOV

A,@R0

MOVX

@DPTR,A

INC

R0

INC

DPTR

DJNZ

R3,LAB

答案:R0寄存器赋初始值20HDPTR寄存器赋初始值50HR3寄存器赋初始值0AH取20H地址的内容存入A寄存器将A中数据传送到片外RAM指定地址指针R0加1指针DPTR加1R3减1,判断循环是否结束程序功能:将存放在片内RAM

20H单元开始的10个数据连续传送到片外RAM

50H单元开始的地址处。MCS-51单片机复位后SP=(

),PC=(

),PSW=(

),A=00H,P0=P1=P2=P3=(

)。

答案:07H;0000H;00H;0FFH单片机中的CPU主要有()和()两部分组成。

答案:控制器;运算器一个机器周期包含____个晶振周期,若晶振周期的频率为12MHz,则机器周期为____。(2.0)

答案:第1空:12第2空:1uS8051单片机的下列特殊功能寄存器中,既能位寻址,又能字节寻址的是:(

答案:TCON8051单片机的存储器为哈佛结构,其内部包括:(

答案:4个物理空间或3个逻辑空间8051的定时/计数器T0的有几种工作模式,对各工作模式作简单的叙述。

答案:定时/计数器T0的模式0:13位计数器,手动填充1:16位计数器,手动填充2:8位计数器,自动填充3:2个独立的8位计数器,1个16位的计数器,都需要手动填充(

)为每秒传送二进制数码的位数,也叫比特数,单位为(

)。

答案:波特率;位/秒;bit/s;bps单片机的外部中断请求有两种触发方式,一种是(

)触发,另一种是(

)触发。(2.0)

答案:低电平;下降沿;低电平;下降沿C51中定义位变量的关键字是(

)。

答案:bitMCS-51系列单片机有(

)组并行I/O口,(

)个全双工串口,(

)个16位定时计数器,(

)个中断源。

答案:4;1;2;5定时与计数功能的选择,由TMOD中的(

)位控制。

答案:C/T

要编写定时器T1的中断服务程序,按如下编写:voidtimer1()interruptn其中n应为(

)。

答案:3下面的while循环执行(

))次空语句。While(i=5);

答案:无限(

)函数表示等待一个机器周期。

答案:_nop_()要使51单片机能够响应定时器T1、串口中断,其中断允许寄存器IE的内容应是(

)。

答案:0x9851单片机定时器T0的低8位计数器是(

)。

答案:TL0以下程序中,while循环的循环次数是(

)。main(){

int

i=0;while(i<10){

if(i<1)continue;if(i==5)

break;

i++;}......}

答案:死循环,不能确定次数若有以下程序段,int

c1=1,c2=2,c3;

c3=1.0/c2*c1;则执行后,c3中的值是(

)。

答案:0若变量均已正确定义并赋值,以下合法的C语言赋值语句是(

)。

答案:x=y==5;x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(

)。

答案:scanf("%d%d%d",&x,&y,&z);若有以下定义和语句

char

c1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+'A');

则输出结果是(

)。

答案:3,E以下程序的输出结果是(

)。main(

)

{

int

i=010,j=10,k=0x10;

printf("%d,%d,%d\n",i,j,k);

}

答案:8,10,16有以下程序main(){

int

m=0256,n=256;printf("%o

%o\n",m,n);}程序运行后的输出结果是(

)。

答案:256

400设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是(

)。

答案:6.000000t为int类型,进入下面的循环之前,t的值为0

while(

t=l

.

{

……}

则以下叙述中正确的是()

答案:循环控制表达式的值为1能正确表示a和b同时为正或同时为负的逻辑表达式是(

)。

答案:a*b>0若有以下程序:main(){

int

k=2,i=2,m;

m=(k+=i*=k);printf(“%d,%d\n”,m,i);}执行后的输出结果是(

)。

答案:6,4有以下程序段int

m=0,n=0;

char

c='a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\n",m,c,n);若从键盘上输入:

10A

10,则输出结果是(

)。

答案:10,A,10有以下程序main(){

char

a,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d)

;printf("%c,%c,%c,%c\n",a,b,c,d);}

若运行时从键盘上输入:6,5,65,66。则输出结果是(

)。

答案:6,5,A,B以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main(){

int

r;

float

s;scanf("%d",&r);s=pi*r*r;

printf("s=%f\n",s);}出错的原因是(

)。

答案:计算圆面积的赋值语句中使用了非法变量有以下程序main(

){

int

i,s=0;

for(i=1;i<10;i+=2)s+=i+1;

printf(“%d\n”,s);}执行后的输出结果是(

)。

答案:自然数1~10中的偶数之和以下程序段的输出结果是(

)。int

a=1234;printf("%2d\n",a)

;

答案:1234有以下程序main(){

int

a=666,b=888;printf("%d\n",a,b)

;}程序运行后的输出结果是(

)。

答案:666有以下程序in()int

i;r(i=0;i<3;i++)switch(i)case

1:

printf("%d",i);case

2:

printf("%d",i);default:

printf("%d",i);}}后输出结果是(

)。

答案:011122有以下程序,程序输出为(

)。main(){int

a=0,b=0,c=0,d=0;if(a=1)

b=1;c=2;else

d=3;printf("%d,%d,%d,%d\n",a,b,c,d);}

答案:编译有错假定a和b为int型变量,则执行以下语句后b的值为(

)。a=1;b=10;do{b-=a;a++;}whileb--<0);

答案:8阅读以下程序:main(){intx;

scanf("%d",&x);

if(x--<5)printf("%d",x);

elseprintf("%d",x++);

}程序运行后,如果从键盘上输入5,则输出结果是(

)。

答案:4若变量c为char类型,能正确判断出c为小写字母的表达式是(

)。

答案:(c>=

'a')&&(c<=

'z')有以下程序main(){

int

a;

char

c=10;float

f=100.0;

double

x;a=f/=c*=(x=6.5);printf("%d

%d

%

3.1f

%

3.1f

\n",a,c,f,x);}

程序运行后的输出结果是(

)。

答案:1

65

1.5

6.5有以下程序#includemain(){charc1='1',c2='2';

c1=getchar();c2=getchar();putchar(c1);putchar(c2);

}当运行时输入:a

后,以下叙述正确的是(

)。

答案:变量c1被赋予字符a,c2被赋予回车符语句:printf("%d",(a=2)&&(b=-2);的输出结果是(

)。

答案:1有以下程序int

a=2;int

f(int

*a)

{return

(*a)

++;}main(

){

int

s=0;

{

int

a=5;

s+=f(&a);

}

s+=f(&a);

printf(“%d\n”,s);}执行后输出结果是

(

)。

答案:7下面程序运行的结果是(

)。main()

{

char

ch[7]={“65ab21”};

int

i,s=0;

for(i=0;ch[i]>='0'

&&

ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

printf("%d\n",s);

}

答案:6以下程序运行后,输出结果是(

)。

#includess(char

*s){

char

*p=s;

while(*p)

p++;

return(p-s);

}main(){

char

*a="abded";

int

i;

i=ss(a);

printf("%d\n",i);

}

答案:5有如下程序段int

*p,a=10,b=1;p=&a;

a=*p+b;执行该程序段后,a的值为(

)。

答案:11以下程序的输出结果是(

)。main()

{

char

w[

][10]={

"ABCD","EFGH","IJKL","MNOP"}

,k;for(k=1;k<3;k++)

printf("%s\n",w[k]);}

答案:EFGH

IJKL下面程序的输出是(

)。main(){

char

*s="121";

int

k=0,

a=0,

b=0;

do

{k++;

if(k%2=

=0)

{a=a+s[k]-'0';continue;}b=b+s[k]-'0';

a=a+s[k]-'0';}while

(s[k+1]);printf("k=%d

a=%d

b=%d\n",k,a,b);

答案:k=

2

a

=3

b=2设有定义:int

a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(

)。

答案:scanf(“%d”,pa)有以下程序point(char

*p){p+=3;}

main()

{

char

b[4]={'a','b','c','d'},*p=b;

point(p);printf("%c\n",*p);

}程序运行后的输出结果是(

)。

答案:a有以下程序1.

main(){

char

a[]={‘a’,‘b’,‘c’,‘d’,

‘e’,

‘f’,

‘g’,‘h’,‘\0’};

int

i,j;i=sizeof(a);

j=strlen(a);printf(“%d,%d\b”,i,j);}程序运行后的输出结果是(

)。

答案:9,8有以下程序main(){char

str[][10]={"China","Beijing"},*p=str;printf("%s\n",p+10);}程序运行后的输出结果是(

)。

答案:Bejing设有数组定义:

char

array

[

]="China";

则数组

array所占的空间为

(

)。

答案:6个字节有以下程序#include

main(){

char

*p=“abcde\0fghjik\0”;printf(“%d\n”,strlen(p));}程序运行后的输出结果是

(

)。

答案:5以下程序的输出结果是(

)。main()

{

int

i,

x[3][3]={1,2,3,4,5,6,7,8,9}

;for(i=0;i<3;i++)

printf("%d,",x[i][2-i]);

答案:3,5,7若有以下定义和语句:int

a[10]=

{1,2,3,4,5,6,7,8,9,10}

,*p=a;则不能表示a数组元素的表达式是(

)。

答案:a[10]有以下程序#

include

void

f(char

*s,

char

*t){

char

k;

k=*s;

*s=*t;

*t=k;

s++;

t--;

if

(*s)

f(s,

t);

}main(){

char

str[10]="abcdefg",

*p;

p=str+strlen(str)/2+1;

f(p,

p-2);

printf("%s\n",str);

}程序运行后的输出结果是(

)。

答案:gfedcba不能把字符串:Hello!赋给数组b的语句是(

)。

答案:char

b[10];b="Hello!";若要求从键盘读入含有空格字符的字符串,应使用函数(

)。

答案:gets()若有以下的定义:int

t[3][2];能正确表示t数组元素地址的表达式是(

)。

答案:t[2]以下程序的输出结果是(

)。main()

{

int

a[4][4]={{1,3,5}

,

{2,4,6}

,

{3,5,7}

};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}

答案:0650以下选项中,不能正确赋值的是(

)。

答案:char

s1[10];s1="Ctest";若有以下说明:int

a[12]=

{1,2,3,4,5,6,7,8,9,10,11,12}

;char

c='a',d,g;则数值为4的表达式是(

)。

答案:a['d'-c]有定义语句:int

b;char

c[10];,则正确的输入语句是(

)。

答案:scanf("%d%s",&b,

c);以下能正确定义二维数组的是(

)。

答案:int

a[][3]={0};以下程序的输出结果是(

)

main()

{

int

i,

k,

a[10],

p[3];

k=5;

for

(i=0;i<10;i++)

a[i

]=i;

for

(i=0;i<3;i++)

p[i

]=a[i

*(i+1)];

for

(i=0;i<3;i++)

k+=p[i]

*2;

printf("%d\n",k);}

答案:21已定义ch为字符型变量,以下赋值语句中错误的是(

)。

答案:ch='\';以下程序的输出结果是(

)。main(){

int

a=12,b=12;printf("%d,%d\n",-

-a,+

+B.

;}

答案:11

13有以下程序main(){chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++);

}程序运行后的输出结果是(

)。

答案:b,b以下正确的字符串常量是(

)。

答案:""以下选项中可作为C语言合法常量的是(

)。

答案:-80设有说明语句:char

a=’\72’;则变量a中(

)。

答案:包含1个字符以下不能定义为用户标识符的是(

)。

答案:int有以下程序main(){intm=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}程序运行后的输出结果是(

)。

答案:12353514已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。

答案:65,66C语言提供的合法的数据类型关键字是(

)。

答案:short数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}程序运行后的输出结果是(

)。

答案:2,2以下选项中不属于C语言的类型的是(

)。

答案:long

short一个C语言源程序由若干函数组成,其中应必须含()。

答案:主函数下列选项中,不能用作标识符的是(

)。

答案:2_int_以下不合法的用户标识符是(

)。

答案:4d下列不正确的转义字符是(

)。

答案:'074'若有说明和语句:int

a=5;intb;则执行b=a++后,b的值是(

)。

答案:5已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\

101’

是(

)。

答案:字符A以下选项中,不合法的C语言数值常量是(

)。

答案:028C语言提供的合法的关键字是(

)。

答案:default若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为(

)。

答案:double若已定义x和y为double类型,且x=1,则表达式:y=x+3/2的值是(

)。

答案:2.0以下程序的输出结果是(

)。f(int

b[],int

m,intn){

int

i,s=0;for(i=m;i答案:10有以下程序int

fun1(double

a){return

a*=a;}int

fun2(double

x,double

y){double

a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){double

w;w=fun2(1.1,2.0);……}程序执行后变量w中的值是(

)。

答案:5.0设函数fun的定义形式为void

fun(char

ch,

float

x

)

{

}

则以下对函数fun的调用语句中,正确的是(

)。

答案:fun(32,32);有以下程序intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s[i]);i++)d+=s[i];printf("%d\n",d);}程序运行后的输出结果是(

)。

答案:9当调用函数时,实参是一个数组名,则向函数传送的是(

)。

答案:数组的首地址以下叙述中错误的是(

)。

答案:可以给指针变量赋一个整数作为地址值若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(

)。

答案:函数的形参和实参分别占用不同的存储单元以下函数值的类型是(

)。fun

(

float

x

)

{

float

y;

y=

3*x-4;

return

y;

}

答案:int以下程序的输出结果是(

)。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}

答案:57在C语言中,形参的缺省存储类别是(

)。

答案:auto以下程序的输出结果是(

)。1.

longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

答案:1有以下程序int

f(int

b[][4]){

int

i,j,s=0;

for(j=0;j<4;j++)

{

i=j;

if(i>2)

i=3-j;

s+=b[i][j];

}return

s;}main(

){

int

a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf(“%d\n”,f(a)

);}执行后的输出结果是

(

)。

答案:16有以下程序void

sort(int

a[],int

n){

int

i,j,t;

for(i=0;i答案:9,2,7,4,5,6,3,8,1,10,以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){int

i,j,t;for(i=0;i答案:1,2,3,8,7,6,5,4,9,10有如下程序void

f(int

x,inty){

int

t;

if(x答案:4,3,5以下程序的输出结果是(

)。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;

fun(5,2,a);

printf("%d",a);}

答案:31以下程序运行后,输出结果是(

)。1.

func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}

答案:8,17以下所列的各函数首部中,正确的是(

)。

答案:void

play(int

a,int

b)下列程序执行后的输出结果是(

)

main()

{

int

a[3][3],

*p,i;

p=&a[0][0];

for(i=0;

i<9;

i++)

p[i]=i+1;

printf("%d

\n",a[1][2]);

}

答案:6若有定义语句:int

a[3][6];

,按在内存中的存放顺序,a数组的第10个元素是(

)。

答案:a[1][3]以下不能正确定义二维数组的选项是(

)。

答案:int

a[2][]=

{{1,2}

,

{3,4}

};以下程序的输出结果是(

)。1.

main(){chara[10]={'1','2','3','4','5','6','7','8','9'},*p;inti;i=8;p=a+i;printf("%s\n",p-3);}

答案:6789有以下程序

void

fun1(char

*p)

{char

*q;q=p;while(*q!=′\0′){

(*q)++;

q++;

)}main(){char

a[]={"Program"),

*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是(

)。

答案:Prohsbn有以下程序main()

{

int

a[3][3]={0},*p,i;

p=&a[0][0];

for(i=0;i<9;i++)*p++=i;

for(i=0;i<3;i++)printf("%d",a[1][i]);

}程序运行后的输出结果是(

)。

答案:345以下程序的输出结果是

(

)。char

cchar(char

ch){if(ch>=‘A’&&ch<=‘Z')

ch=ch-‘A'+‘a';return

ch;}main(){

char

s[]="ABC+abc=defDEF",*p=s;while(*p){

*p=cchar(*p);p++;}printf("%s\n",s);}

答案:abc+abc=defdef若有定义:int

x=0,

*p=&x;,则语句printf("%d\n",*p);的输出结果是(

)。

答案:0下列函数的功能是(

)。intfun1(char*x){char*y=x;

while(*y++);

return(y-x-1);}

答案:求字符串的长度有以下程序#include

void

fun(int

n,int

*p){

int

f1,f2;

if(n==1||n==2)

*p=1;

else

{

fun(n-1,&f1);

fun(n-2,&f2);

*p=f1+f2;

}}main(){

int

s;

fun(3,&s);

printf("%d\n",s);

}程序的运行结果是(

)。

答案:2以下不能正确进行字符串赋初值的语句是(

)。

答案:char

str[5]="good!";以下程序的输出结果是(

)。main()

{

int

b[3][3]={0,1,2,0,1,2,0,1,2}

,i,j,t=1;

for(i=0;i<3;i++)

for(j=i;j<=i;j++)t=t+b[j][j];printf("%d\n",t);}

答案:4有以下程序main(){

int

x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n",s[2]);}执行后输出结果是(

)。

答案:0若有以下定义和语句:double

r=99,

*p=&r;*p=r;则以下正确的叙述是(

)。

答案:语句"*p=r;"取变量r的值放回p中下列描述中不正确的是(

)。

答案:可以对整型数组进行整体输入、输出以下程序的输出结果是(

)。main(){

int

a=0,i;

for(i=1;i<5;i++)

{

switch(i)

{

case

0:

case

3:a+=2;

case

1:

case

2:a+=3;

default:a+=5;

}}printf("%d\n",a);}

答案:31main(){

int

k=4,n=0;

for(

n答案:3,3有以下程序main(.{int

y=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是(

)。

答案:y=-1设j为int型变量,则下面for循环语句的执行结果是(

)。for(j=10;j>3;j--){if(j%3)j--;--j;--j;printf("%d",j);}

答案:7

4程序运行后的输出结果是(

)。#includevoidmain(){

inta,b;

a=3;

b=20;

a=b;

printf("a=%d,b=%d\n",a,b);}

答案:a=20,b=20若变量a、i已正确定义,且i已正确赋值,合法的语句是(

)。

答案:++i;有如下程序,该程序的输出结果是(

)。main(){intx=1,a=0,b=0;

switch(x){

case0:b++;

case1:a++;

case2:a++;b++;

}printf(“a=%d,b=%d\n”,a,b);}

答案:a=2,b=1有以下定义语句double

a,b;

int

w;

long

c;若各变量已正确赋值,则下列选项中正确的表达式是(

)。

答案:(c+w)%(int)a

在下列选项中,没有构成死循环的程序段是(

)。

答案:int

k=1000;do

{++k;}

while(k>=10000);

有以下程序main(){intx,i;for(i=1;i<=50;i++){x=i;if(++x%2==0)if(x%3==0)if(x%7==0)printf("%d,i);}}

答案:41有以下程序main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%d\n",n);}程序运行后的输出结果是(

)。

答案:7有如下程序main(){floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf(“%f\n”,y);

}该程序的输出结果是(

)。

答案:0.500000有定义语句:int

x,

y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是(

)。

答案:11

12有以下程序main(

){

int

x=0,y=5,z=3;

while(z-->0&&++x<5.

y=y-1;

printf(“%d,%d,%d\n”,x,y,z);}程序执行后的输出结果是(

)。

答案:3,2,-1若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()。

答案:!(x-y)<-10||!(y-x)>10执行以下程序后,输出的结果是(

)。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

答案:0以下不能正确计算代数式值的C语言表达式是(

)。

答案:1/3*sin(1/2)*sin(1/2)以下选项中,非法的字符常量是(

)。

答案:"n"以下选项中属于C89版本C语言的数据类型是(

)。

答案:双精度型设有定义:float

a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是(

.

答案:(1/2)*(a+b)

*h以下不合法的字符常量是(

)。

答案:′\018′设有

int

x=11;

则表达式x++

*

1/3.

的值是(

)。

答案:3在一个C程序中()。

答案:main函数可以在任何地方出现在C语言中,合法的字符常量是(

)。

答案:'\x43'下列关于C语言用户标识符的叙述中正确的是(

)

答案:用户标识符中不可以出现中划线,但可以出现下划线下面程序的输出是(

)。main(){intx=10,y=3;

printf("%d\n",y=x/y);}

答案:3调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。

答案:错INC

DPTR执行后DPH的值将增加1.

答案:错ANL

R1,#0FH指令是将R1与FEH求逻辑与操作。

答案:错MCS-51单片机中的PC是不可寻址的。

答案:对MOV

A,@R7,将R7单元中的数据作为地址,从该地址中取数,送入A中。

答案:错CLR

R0是将R0置为0;

答案:错SP内装的是栈顶首址的内容;

答案:错MCS-51单片机可执行指令:MOV

R6,R7。

答案:错当向堆栈压入一个字节的数据后,SP中的内容减1。

答案:错指令中直接给出的操作数称为直接寻址。

答案:错MCS-51单片机执行指令:MOV

A,@R3是将R3里边的数当着地址,取这个地址里边的数送到A中

答案:错XOR

P1,#31H

答案:错对程序存储器的读操作,只能使用()

答案:MOVC指令已知:

MOV

A,#28H

MOV

R0,#20H

MOV

@R0,A执行结果是把寄存器A内的数存放在

答案:地址20的空间(SP)=40H,当执行完一条POP语句后,SP里边的值是(

)

答案:3FHMOV

A,#28H

MOV

R0,#20H

MOV

@R0,A

ANL

A,

#0FH

ORL

A,

#80H

XRL

A,

@R0

执行结果A的内容为

答案:A0H单片机复位后,SPPCI/O口的内容为

答案:SP=07H

PC=0000H

P0=P1=P2=P3=FFH8031有四个工作寄存器区,由PSW状态字中的RS1、RS0两位的状态来决定,单片机复位后,若执行SETB

RS1指令,此时只能使用第(

)组的工作寄存器。

答案:351执行完MOVA,#08H后,PSW的一位被置位的是()

答案:P执行PUSHACC指令,MCS-51完成的操作是()

答案:SP的值+1,ACC里边的值放入SP指的地址执行MOVXA,@DPTR指令时,MCS-51产生的控制信号是()

答案:/RD设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,分析以下程序执行后(B)=(

)。MOV

R0,#30H

MOV

A,@R0

MOV

R1,A

MOV

B,@R1

答案:10H单片机在与外部I/O口进行数据传送时,将使用(

)指令。

答案:MOVXMOV

C,#0H的寻址方式是(

)

答案:位寻址ADDC

A,C指令是将A和Cy相加。

答案:错MOVXA,@DPTR指令中源操作数的寻址方式是()

答案:寄存器间接寻址8051有四个工作寄存器区,由PSW状态字中的RS1和RS0两位的状态来决定,单片机复位后,若执行SETB

RS0指令,此时只能使用

区的工作寄存器。

答案:Ⅱ区利用KEIL软件进行仿真调试时,在执行调用指令时,

调试可跟踪到子程序内部并逐条执行子程序内部的各条指令。

答案:单步在进行BCD码运算时,紧跟加法运算指令后面的指令必须是

指令。

答案:DA

ALCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=()

答案:2003H当CPU响应外部中断0后,PC的值是(

)

答案:0003H利用下列(     )关键字可以改变工作寄存器组

答案:using假定A=38H,(R0)=17H,(17H)=34H,执行以下指令:

ANL

A,#17H

ORL

17H,A

XRL

A,@R0

CPL

A

后,A的内容为()。

答案:DBHPC存放的是当前执行的指令。

答案:错若不使用8051片内ROM引脚EA必须接地。

答案:对MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"0"。

答案:错MCS-51上电复位时,P0=00H。

答案:错8155的复位引脚可与89C51的复位引脚直接相连。

答案:对MCS-51的特殊功能寄存器分布在60H~80H地址范围内。

答案:错使用8051且EA引脚为1时,仍可外扩64KB的程序存储器。

答案:错以下用作计算过程状态保存的寄存器是

答案:PSW在6MHz的时钟频率下,执行一条单机器周期的指令需要

答案:2us在51单片机中下列是16位寄存器的是

答案:PC在51单片机中具有高阻态的IO口是

答案:P051单片机的指令周期不不包

温馨提示

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

评论

0/150

提交评论