专接本计算机c语言程序设计模拟试题及答案_第1页
专接本计算机c语言程序设计模拟试题及答案_第2页
专接本计算机c语言程序设计模拟试题及答案_第3页
专接本计算机c语言程序设计模拟试题及答案_第4页
专接本计算机c语言程序设计模拟试题及答案_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

专接本计算机C语言程序设计模拟试题及答案(一)

一、单项选择题(每小题2分,共20分)

1.若指针P已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()

A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));

C)p=(int*)malloc(4*2);D)p=(int*)cal1oc(2,sizeof(int));

2.设有intx=ll;则表达式(x++*1/3)的值是()

A)3B)4C)11D)12

3.下列程序执行后的输出结果是(小数点后只写位)()

ttinclude<stdio.h>

voidmain()

{doubled;floatf;long1;inti;

i=f=l=d=20/3;

printf("%d%ld%f%f\n”,i,d);

A)666.06.0B)666.76.7

C)666.06.7D)666.76.0

4.卜.列变量定义中合法的是(

A)shorta=l-.le~lB)doubleb=l+5e2.5

C)longdl=0xfdaLD)float2_and=l-e-3;

5.设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()

A)k++B)k+=10++kD)k+1

6.有以下程序,其中%u表示按无符号整数输出,输出结果是()

ftinclude<stdio.h>

voidmain()

{unsignedshortx=0xFFFF;/*x的初值为十六进制数*/

printf(,z%u\n,z,x);

)

A)-1B)65535C)32767D)OxFFFF

7.有以下程序,输出结果是()

^include<stdio.h>

voidmainO

{inti,j;

for(i=l;i<4;i++)

{for(j=i;j<4;j++)printf("%d*%d=%d”,i,j,i*j);

printf("\n");

}

A)1*1=11*2=21*3=3B)1*1=11*2=21*3=3

2*1=22*2=42*2=42*3=6

3*1=33*3=9

01*1=1D)1*1=1

1*2=22*2=42*1=22*2=4

1*3=32*3=63*3=93*1=33*2=63*3=9

8.在C语言中,函数返回值的类型最终取决于()

A)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型

C)调用函数时由函数所传递的实参类型D)函数定义时形参的类型

9.设已有定义:floatx;则对指针变量p进行定义且赋初值的语句中正确的是()

A)float*p=1024B)int*p=(floatx)

C)floatp=&xD)float*P=&x;

10.以下叙述中正确的是()

A)break语句只能用于switch语句体中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

0break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

二、完成下列的程序填空(每空3分,共18分)

1.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

#include<stdio.h>

ttinclude<string.h>

voidmainO

{voidinverse(charstr口);

charstr[100];

printf(,zinputstring:");

scanf(〃%s〃,str);

inverse(str);

printf(z/inversestring:%s\n”,str);

)

voidinverse(charstr[])

{chart;

inti,j;

for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j一)

)

)

2.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组。

^include<stdio.h>

voidmain()

{inta[ll]={l,4,6,9,13,16,19,28,40,100};

inttempi,temp2,number,end,i,j;

printf(,zarray

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

printf(,z%5dz,,a[i]);

printf("\n");

printf("insertdata:");

scanf&number);

end=a[9]:

if(number>end)

else

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

{if(a[i]>number)

a[i]=number;

for(j=i+l;j<ll;j++)

{temp2=a[j];

a[j]=tempi;

break;

}

)

)

三、写出下列程序的运行结果(每小题9分,共36分)

1.以下程序运行后的输出结果是()

#include<stdio.h>

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

)

voidmain()

{inta[5]={l,2,3,4,5},i;

f(a);

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

)

2.以下程序运行后的输出结果是()

^include<stdio.h>

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

)

voidmain()

{intx,a[]={l,2,3,4,5,6,7,8,9);

x=f(a,3,7);

printfx);

)

3.以下程序的输出结果是()

ttinclude<stdio.h>

intf0

{staticinti=0;

ints=l;

s+=i;i++;

returns;

}

voidmain()

{inti,a=0;

for(i=0;i<5;i++)a+=f();

printf(〃%d\n〃,a);

)

4.以下程序的输出结果是()

^include<stdio.h>

voidmainO

{charch[2][5]={"6937”,〃8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'O';

printf(线d\n”,s);

)

四、按要求编写下列程序(每小题13分,共26分)

o编写程序,用函数的递归调用求x的n次方的值,其中n为正整数。

O输入正整数m和n,如果m+n是质数,输出“Yes”,否则,输出“No”。要求定义并调用函数myfun(x)

来判断x是否为质数,在下面空出的位置完成程序,不能定义新的变量,可不用一定义的某些变量。

#include<stdio.h>

#include<math.h>

voidmainO

(

intm,n;

}

intmyfun(intx)

(

intk;

)

参考答案

一、单项选择题(每小题2分,共20分)

AAACABBADC

二、完成下列的程序填空(每空3分,共18分)

1.

t=;

str⑴=str[jT];

str[jT]二t;

2.

a[10]=number;

templ=a[i];

tcmpl=tenip2;

三、写出下列程序的运行结果(每小题9分,共36分)

1>6,2,3,4,5,

2、jO

3、15

4、6385

四、按要求编写下列程序(每小题13分,共26分)

1.编写程序,用函数的递归调用求x的n次方的值,其中n为正整数。

#include<stdio.h>

floatmypow(floatx,intn)

{floatm;

if(n==l)ITFX;

elsem=x*mypow(x,n-1);

returnm;

}

voidmainO

{floatx;

intn;

scanf("%f,%d",&x,&n);

printf(*%f的%d次方是%f”,x,n,mypow(x,n));

)

2.输入正整数m和n,如果m+n是质数,输出“Yes”,否则,输出“No”。要求定义并调用函数myfun(x)

来判断x是否为质数,在下面空出的位置完成程序,不能定义新的变量,可不用一定义的某些变量。

#include<stdio.h>

#include<math.h>

voidmainO

(

intm,n;

scanf&m,&n);

if(myfun(m+n))printf("Yes")

elseprintf("No");

)

intf(intx)

{intk;

for(k=2;k<x;k++)

if(x%k—0)return0;

return1;

)

专接本计算机c语言程序设计模拟试题及答案(二)

一、单项选择题(每小题2分,共20分)

1.在说明语句:int*f();中,标识符f代表的是()

A)一个用于指向整型数据的指针变量B)一个用于指向-维数组的行指针

C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名

2.下列程序的输出结果是()

#include<stdio.h>

voidmain()

{doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

printfC1%d\nn,d*y);

}

A)3B)3.2C)0D)3.07

3.设变量均已正确定义,若要通过scanf(”%d%c%d%c”,&al,&cl,&a2,&c2);语句为变量al和

a2赋数值10和20,为变量cl和c2赋字符X和Y。以下所示的输入形式中正确的是(注:

□代表空格字符)()

A)10DXD20DY〈回车〉B)10DX20QY〈回车〉

C)10oX〈回车〉D)10X〈回车〉

20□丫〈回车〉20Y〈回车〉

4.以下选项中,当x为大于1的奇数时,值为0的表达式()

A)x%2=lB)x/2C)x%2!=0D)x%2=0

5.以下叙述中正确的是()

A)break语句只能用于switch语句体中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

6.以下合法的字符型常量是()

Ay\xl3'B八018,C)65D)“\n”

7.在C语言中,函数返回值的类型最终取决于()

A)函数定义时在函数首部所说明的函数类型B)retum语句中表达式值的类型

C)调用函数时主函数所传递的实参类型D)函数定义时形参的类型

8.设intx=l,y=l;表达式(!x||y-)的值是()

A)0B)1C)2D)-l

9.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()

A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));

C)p=(int*)malloc(4*2);D)p=(int*)calloc(2,sizeof(int));

10.以下函数的功能是()

intfun(char*s)

{char*t=s;

while(*t++);

retum(t-s);

A)比较两个字符的大小B)计算s所指字符串占用内存字节的个数

C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中

二、完成下列的程序填空(每空3分,共27分)

1.输入20个数,用起泡法对这20个数升序排列。

#include<stdio.h>

voidmain()

{inta[20];

inti,j,t;

printf(Hinput20numbers:\nn);

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

scanf(,,%dH,&a[i]);

printf("\n");

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

fbr(i=0;;i++)

ifl)

()

printf(Hthesortednumbers:\nn);

fbr(i=0;i<20;i++)

printf(H%d",a[i]);

printf("\n");

}

2.写一个函数,输入一个十六进制数,输出相应的十进制数。

#include<stdio.h>

voidmain()

{chara[6];

scanf(M%sn,a);

printfC%d\nn,htoi(a));

inthtoi(chars[])

{inti,n;

n=0;

for(i=O;s[i]!=W;i++)

{if(s[i]>=,0,&&s[i]<=,9,)

n=n*16+;

if(s[i]>=R&&s[i]<=T)

n=n*16+;

if(s[i]>='A'&&s[i]v=F)

n=n*16+;

}

retum(n);

}

3.用指针的方法编写的函数,将一个3x3的整型二维数组行列互换。

#include<stdio.h>

voidmain()

{voidmove(int*pointer);

inta[3][3],*p,i;

printf(ninputmatrix:\nn);

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

scanff%d%d%dn,&a[i][0],&a[i][l],&a[i][2]);

p=&a[O][O];

move(p);

printff'Now,matrix:\n");

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

printf(n%d%d%d\n'*,a[i][0],a[i][l],a[i][2]);

)

voidmove(int*pointer)

{int

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

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

三、写出下列程序的运行结果(每小题8分,共24分)

1.以下程序运行后的输出结果是()

#include<stdio.h>

voidmain()

{voidf(intn,int*r);

intm=7,r;

f(m,&r);

printfC'%d\nn,r);

}

voidf(intn,int*r)

{intrl=0;

if(n%3==0)rl=n/3;

elseif(n%5==0)rl=n/5;

elsef(-n,&rl);

*r=rl;

)

2.以下程序的输出结果是()

#include<stdio.h>

fifinta)

{intb=0;

staticintc=3;

b++;c++;

return(a+b+c);

}

voidmain()

{inta=2,i;

for(i=0;i<3;i++)printf(n%d\n",f(a));

3.以下程序的输出结果是()

#include<stdio.h>

voidfiin(int*x,int*y)

{printff%d%d",*x,*y);

*x=3;

*y=4;

)

voidmain()

{intx=l,y=2;

fun(&y,&x);

printf(n%d%dn,x,y);

)

四、按要求编写下列程序(第1小题16,第2小题13分,共29分)

1.编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:

-5(x<0)

y=0(x=0)

5(x>0)

2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,

程序显示排序前和排序后的结果。

参考答案

一、单项选择题(每小题2分,共20分)

DCDDCAABAB

二、完成下列的程序填空(每空3分,共27分)

1.

i<19-i

(a[i1>a[i+11)

t=a[i];a[i]=a[i+1];a[i+1]=t;

2.

sFiLa'+K)

s「il,A'+10

3.

t=*(pointer+3*i+i)

*(pointer+3*i+j)=*(pointer+3*i+i)

*(Dointer+3*i+i)=t

三、写出下列程序的运行结果(每小题8分,共24分)

1、2

2、7

8

9

3、2143

四、按要求编写下列程序(第1小题13,第2小题16分,共29分)

1.编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:

-5(x<0)

y=0(x=0)

5(x>0)

#include<stdio.h>

voidmain()

{intx,y;

printfif'enterx:H);

scanf("%d",&x);

if(x<0)

y=-5;

else

if(x=0)y=0;

elsey=5;

printf(Hx=%d,y=%d\nn,x,y);

)

2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,

程序显示排序前和排序后的结果。

#include<stdio.h>

#defineN10

Voidmain()

inta[N]={6,5,8,1,0,4,7,3,2,9}

int

printf("Thearraybeforesorted:");

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

printf("%4d”,a[i]);

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

{for(j=i+l;j<10;j++)

{if(a[i]>aUD

{t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

printf("Thearrayaftersorted:");

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

printf("%4d”,a[i]);

}

专接本计算机微机原理与汇编语言模拟试题及答案(一)

一、单项选择题(每小题1分,共15分)

1.8088/8086的存储器组织是将存储器划分为段,可作为段的起始地址的是()。

A.185A2HB.00020HC.01003HD.0AB456H

2.指令POP[BX]中,目的操作数的段寄存器是()。

A.DSB.ESc.ssD.CS

3.CPU执行“OUT40H,AL”指令忖,下列信号为高的是()。

A,RDB.WRC.M/IOD.INTA

4.执行1号DOS系统功能调用后,从键盘输入的字符应存放在()。

A.ALB.BLC.CLD.DL

5.间接寻址方式中,操作数处在()中。

A.通用寄存器B.内存单元

C.程序计数器D.堆栈

6.8086在最小模式下,分时使用AD。〜AD中所以必须外接地址锁存器,当总线上为地址

信息时,通过()信号将地址送入地址锁存器。

A.DENB.ALEC.BHE-D.DT/R

7.在对汇编语言程序的处理过程中,用编辑程序产生汇编语言的源程序的扩展名是()。

A..EXEB..OBJC..BATD..ASM

8.表示过程定义结束的伪指令是()。

A.ENDB.ENDPC.ENDSD.ENDM

9.默认状态下,在寄存器间接寻址中与SS段寄存器对应的寄存器是()。

A.BPB.BXC.SID.DI

10.标志寄存器中属于控制标志的是()。

A.DF、SF、OFB.DF、IF、TF

C.OF、CF、PFD.AF、OF、SF

11.两个组合十进制数46H、35H相加,调整指令DAA完成的是()。

A.加OOH调整B.加60H调整

C.加06H调整D.加66H调整

12.在8086的I/O指令中,间接端口寄存器是()。

A.BXB.SIC.DXD.DI

13.浮点加减中的对阶是()。

A.将较小的一个阶码调整到与较大的一个阶码相同

B,将较大的一个阶码调整到与较小的一个阶码相同

C.将被加数的阶码调整到与加数的阶码相同

D.将加数的阶码调整到与被加数的阶码相同

14.保护断点就是保存()。

A.中断类型码B.中断服务程序入口地址

C.现场D.当前CS、IP的值

15.对以下类型的中断,优先级最低的是()。

A.指令中断B.非屏蔽中断C.可屏蔽中断D.单步中断

二、填空题(每空1分,共20分)

1.指令MOVBX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,

那么有效地址为,物理地址为。

2.对于十六进制表示的数码19.8H,转换为十进制数时为;该数码用压缩BCD码

表示时数据为。

3.已知X的补码为10011001,其原码是;真值为。

4.使用DOS功能调用时,子程序的功能号应放在寄存器中。

5.设堆栈段寄存器SS所存放的数据为2250H,堆栈指示器SP所存放的数据为0140H,

如压入堆栈7个数据库字,问栈顶地址、SS和SP各为、、。

6.使CF标志置1的指令是;使DF标志清0的指令是。

7.组成16Mx8位的存储器,需要1MX4位的存储芯片片。

8.8253可编程定时/计数器按照二进制计数,其计数范围是从0到;按照BCD码计

数,其计数范围是从。到。

9.PC机的中断类型有、和不可屏蔽中断三种,不可屏蔽中断的请求信息送CPU

的引脚。

10.8255A的控制字的最高位D7=l时,表示该控制字为控制字。

11.CPU可访问8259的端口地址数为。

三、简答题(每小题5分,共20分)

1.定时器和计数器有什么相同和不同?

2.什么是接口?硬接口和软接U的含义各是什么?

3.在A/D转换过程中,采样保持电路有什么作用?在什么情况下可以不使用采样保持电

路?

4.什么是中断?常见的中断源有哪几类?CPU响应中断的条件是什么?

四、分析题(每小题5分,共15分)

1.若STR是字符串的首地址,阅读程序段,回答问题:

LEABX,STR

MOVCX,30

LP:CMP[BX],T

JNZNEXT

MOV[BX],l&'

NEXT:INCBX

LOOPLP

HLT

(1)指出程序的功能;

(2)对程序的各个语句加上注解。

2.阅读程序段,完成指定问题:

NUMDB'ABCDEFGHF

MOVAH,01H

INT21H

ANDAL,OFH

DECAL

XORAH,AH

MOVBX,OFFSETNUM

ADDBX,AX

MOVDL,[BX]

MOVAH,02H

INT21H

试回答:(1)上述程序段的功能是什么?

(2)如从键盘输入字符,5"程序段有什么结果?

3.请把下列程序中所缺语句补充完整,并回答问题:

TITLEEXAMPLE.ASM

DATASEGMENT

ADW0

BDW0

CDW230,20,54

CODESEGMENT

ASSUME_______________________________

PROGPROCFAR

START:PUSHDS

MOVAX.O

MOVAX,DATA

MOVBX,OFFSETC

MOVAX,[BX]

MOVB,AX

MOVAX,2[BX]

ADDAX,B

MOVA,AX

EXIT:____________________

CODEENDS

问题:(1)程序执行完后,A单元的内容是多少?

(2)写出上机运行本程序的步骤。

五、应用题(每小题10分,共30分)

1.首地址为DAT的数据区中有3个互不相等的8位无符号整数,编写一个完整的程序,

将这3个数的最大者存放到MAX单元。

2.设8253计数器0工作在方式2,CLK)为5MHz,输出OUT。为IKHz方波,二进制计

数;计数器1用OUT。作计数脉冲,计数值为1000,二进制计数,计数器减到0时向CPU

发出中断请求,CPU响应这一中断请求后继续写入计数值1000,开始重新计数,保持每

一秒钟向CPU发出一次中断请求。试编写出对8253的初始化程序。(8253端口地址为

04B0H-04B3H)

3.在如图所示的电路中,试分析电路图,回答以卜问题。

(1)74LS138的作用是什么?

(2)74LS138在什么条件下才工作?

(3)RAM的地址范围是多少?

参考答案

一、单项选择题(每小题1分,共15分)

l.B2.C3.A4.A5.B6.B7.D8.B9.A10.B

ll.C12.C13.A14.D15.D

解释:

1.段的起始地址必须从节开始,而每节是16个字节,所以段的起始地址用十六进制表示时

应该末尾是0。

2.指令POP[BX]中的目的操作数为BX指向的内存单元,而BX默认使用DS;源操作数是

堆栈中的数据。

二、填空题(每空1分,共20分)

1.4500H,16500H

(计算有效地址EA=MASK的3500H+BP的1000H=4500H

物理地址=1200H*l6+EA=12000H+4500H=16500H)

2.25.5、00100101.0101B

3.1110011K-1034.AH

5.22640H,2250H、0132H

解:已知:DS=2250H,栈顶地址的偏移地址=0140H

栈顶地址=(2250H'10H)+0140H

=22640H

压入7个数据字后:

SP=0140H-2'7=0132H

SS=2250H

6.STC、CLD7.32

8.65535、99999.软件中断、可屏蔽中断、NMI

10.方式11.2

三、简答题(每小题5分,共20分)

1.答:定时器和计数器是同一器件一-计数器,其共同的特点是都有--个计数脉冲输入端,

每输入一个脉冲,计数器就进行加1或减1计数。

若计数器件的计数脉冲的频率固定,则可利用计数实现定时,这就是定时器。

若计数器件的作用仅仅是记录输入脉冲的多少,则称为计数器。

2.答接口是位于主机与外设之间的一些转换电路的总称.是CPU与外设交互通信的中间接点,

一般由若干组存储单元组成,用于暂存数据发实现CPU与外设之间的通信,并有缓冲的功

能用来平衡CPU与外设的不匹配。硬接口是用硬件来实现接口的功能,而软接口是通过程

序设计来实现接口的功能的。

3.答:采样一保持电路广泛应用于数据采集系统和实时控制系统中,它的功能有两种:

(1)采样跟踪状态:在此期间应尽可能快地接受输入信号,使输出和输入信号相一致

(2)保持状态:把采样结束前瞬间的输入信号保持下来,使输出和保持的信号一致。

由于模/数转换需要定忖间,在转换期间,要求模拟信号保持稳定,因此当输入信号变化

速率较快时,都应采用采样一保持电路,如果输入信号变化缓慢,则可不用保持电路。

4.答:中断是指CPU在正常执行程序时,由于内部/外部时间或程序的预先安排引起CPU

暂时终止执行现行程序,转而去执行请求CPU为其服务的服务程序,待该服务程序执行完

毕,又能自动返回到被中断的程序继续执行的过程。

常见的中断源有:一般的输入/输出设备请求中断;实时时钟请求中断;故障源;数据通道

中断和软件中断。

CPU响应中断的条件:若为非屏蔽中断请求,则CPU执行完现行指令后,就立即响应中断。

CPU若要响应可屏蔽中断请求,必须满足以下三个条件:①无总线请求;②CPU允许中断;

③CPU执行完现行指令。

四、分析题(每小题5分,共15分)

1.(1)程序功能:将字符串STR(长度30字节)中所有用,&,代替。

(2)LEABX,STR;置地址指针

MOVCX,30;置计数器初值

LP:CMP[BX],,货;取字符与'$,比较

JNZNEXT;不是,$,转NEXT

MOV[BX],;是节'则用,&,替换

NEXT:INCBX;地址加1

LOOPLP;CX-1为0继续

HLT

2.答:(1)程序段功能:根据从键盘输入的字符F〜,9二确定在显示器上显示NUM中第

几个字符。

(2)显示器显示字符,E,,

解释如下:

MOVAH,01;从键盘输入‘5"

INT21H;AL=35H

ANDAL,OFH;AL=05H

DECAL;AL=04H

XORAH,AH;AH=0

MOVBX,OFFSETNUM;BX指向NUM的首地址

ADDBX,AX;BX指针向高地址移动4下

MOVDL,[BX];DL=,BX指针指向的内容,口ME,

MOVAH,02H

INT21H;显示输出'E,

3.(1)程序执行完后,A单元的内容是250。

(2)写出上机运行本程序的步骤是:

答:OMASMEXAMPLE

C>LINKEXAMPLE

C>EXAMPLE

五、应用题(每小题10分,共30分)

1.参考程序如卜:

DATASEGMENT

DATDB23H,32H,13H

MAXDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVAL,DAT;AL-23H

MOVBL,DAT+1;BL-32H

MOVCL,DAT+2;CL—13H

LOP1:CMPAL,BL

JALOP2;AL中的数据高于BL中的数据则跳转致LOP2

XCHGAL,BL

LOP2:CMPAL,CL;AL中的数据高于CL中的数据则跳转致LOP3

JALOP3

XCHGAL,CL;AL中的数据为最大值

LOP3:MOVMAX,AL;将最大者存放到MAX单元

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.参考答案:计数器。工作在方式2,初值N=5M/1K=5OOO,控制字为34H,

计数器1工作在方式0,计数初值为1000,控制字为70H;

程序段如下:

;计数器0初始化,写入控制字

MOVAL,34H

MOVDX,04B3H

OUTDX,AL

;计数器0赋初值,先写低8位再写高8位

MOVAX,5000

MOVDX,04B0H

OUTDX,AL

MOVAL,AH

OUTDX,AL

;计数器1初始化,写入控制字

MOVAL,70H

MOVDX,04B3H

OUTDX,AL

;计数器1赋初值

MOVAX,1000

MOVDX,04B1H

OUTDX,AL

MOVAL,AH

OUTDX,AL

3.答:(1)74LS138的作用是地址译码;

(2)74LS138在G1为高电平,G2A利G2B都为低电平时才工作;

(3)RAM的地址范围是72000H〜73FFFH。

解释:RAM芯片的片内地址是An〜Ao,片外地址为Ai9〜A13,其中地址为A6〜A13

是译码器输入端,应该为001;Ai9A18Al7A16应该为0111。

所以20为地址是01110010000000000000-

01110011111111111111o

专接本计算机微机原理与汇编语言模拟试题及答案(二)

一、单项选择题(每小题1分,共15分)

1.十进制正数38的八位二进制补码是()。

A.00011001B.10100110C.10011001D.00100110

2.以下属于总线仲裁器的是()。

A.8288B.8289C.0809D.8089

3.在数据定义中,如果将STRINGABC作为字符串表示时,应使用的伪指令是()。

A.DBB.DWC.DDD.DQ

4.若将AH的内容的高四位分离,则应选用()。

A.ANDAL,OFOHB.ORAL,OFOH

C.XORAL,OFOHD.TESTAL,OFOH

5.不能实现将AX清零和CF清零的指令是()。

A.SUBAX,AXB.MOVAX,0

C.XORAX,AXD.ANDAX,0

6.LDS指令要求源操作数必须为()。

A.一个16位寄存器B.一个存储器操作数

C.一个有效地址D.一个段寄存器

7.条件转移指令JNE的测试条件为()。

A.ZF=OB.CF=OC.ZF=1D.CF=1

8.ORG设定当前可分配内存单元的()。

A.段地址B.偏移地址C.类型D.字节数

9.计算机系统软件中的汇编程序是一种()。

A.汇编语言程序B.编辑程序

C.翻译程序D.链接程序

10.CPU在对存储器进行访问时,地址线有效和数据线有效的时间关系应该是()。

A.同时有效同时无效B.地址线较先有效

C.数据线较先有效D.地址数据复用同时有效

11.响应NM[请求的必要条件是()。

A.IF=1B.IF=0

C.一条指令结束D.无INTR请求

12.在微机系统中采用DMA方式传输数据时,数据传送是()。

A.由CPU控制完成

B.由执行程序(软件)完成

C.由DMAC发出的控制信号完成

D.由总线控制器发出的控制信号完成

13.若8259A工作在优先级自动循环方式,则IRQ3的中断请求被响应并且服务完毕后,

优先权最高的中断源是()。

A.IRQ0B.IRQ,C.IRQ3D.IRQ4

14.在中断系统中,中断类型号是在()的作用下送往CPU的。

A.读信号B.地址译码信号

C.中断请求信号INTRD.中断响应信号

15.8086响应以下中断时,需要到数据总线读入中断类型码的是()。

A.单步中断B.指令中断

C.可屏蔽中断D.非屏蔽中断

二、填空题(每空1分,共20分)

1.8086CPU具有条地址线,可直接寻址容量的内存空间,在访问I/O端口时,使用

地址线,最多可寻址个I/O端口。

2.每次进行串扫描指令SCAS时,使用的段寄存器是,变址寄存器是。

3.已知一个具有14位地址和8位数据的存储器,该存储器能存储字节的信息,如果存

储器由8K*4位RAM芯片组成,需要片。

4.8255A的工作方式有基本型输入/输出方式、I/O方式和I/O方式。

5.8086/8088微处理器被设计为两个独立的功能部件是和«

6.所谓指令的寻址方式是指寻找的方式。

7.在Intel2116动态RAM存储器中,对存储器刷新的方法是每次刷新个单元.

8.DMA技术提供了到的数据直接传输通道。

9.中断向量是中断服务程序的,每个中断向量占字节。Intel8086将

对应256类中断的中断向量组成一张,占据内存从0到H区间。

三、简答题(每小题5分,共20分)

1.8086系统中的存储器分为几个逻辑段?各段之间的关系如何?每个段寄存器的作用是什

么?

2.BHE低电平信号的作用是什么?试说明当起始地址为奇地址、偶地址、一次读写一个字

节和一个字时,BHE和A0的状态。

3.试分析8253的6种工作方式的特点和功能,各方式下的时钟信号CLK和门控信号GATE

分别起什么作用?

4.在一个微型计算机系统中,确定采用何种方式进行数据传送的依据是什么?

四、分析题(每小题5分,共15分)

1.DATADB46H,84,34,—3,20H,122,73

MOVCX,7

LEASI,DATA

NEXT:MOVAL,[SI]

INCSI

TESTAL,81H

LOOPZNEXT

MOVBL,[SI]

程序段运行后,请回答:(AL)=(BL)=,

2.阅读程序段,回答问题:

DIDB300DUP(?)

D2DB100DUP(?)

MOVCX,100

MOVBX,200

MOVSI,0

MOVDI,0

NEXT:MOVAL,D1[BX][SI]

MOVD2[DI],AL

INCSI

INTDI

LOOPNEXT

(1)该程序段的功能:

(2)“LOOPNEXT”指令可以用什么指令取代:

3.执行完下列程序后,回答指定的问题。

MOVAX,0

MOVBX,2

MOVCX,50

LP:ADDAX,BX

ADDBX,2

LOOPLP

问:(1)该程序的功能是。

(2)程序执行完成后,(AX)=。

五、应用题(每小题10分,共30分)

1.已知在内存中从DA单元起存放有10个带符号字节数据,统计其中负数的个数并放入FU

单元。

2.编写程序,计算下面函数的值。

(x<0)

(0<=x<=10)«

r>10

3.用查询方式的打印机接口如图,已知8255的A口作为输出打印的数据口,工作于方

式0,PC□高4位工作于输出方式,PC6产生STB信号(低电平有效),PC口的低4

位工作于输入方式,PC2接收打印机的BUSY信号。设打印字符存放在数据段中有效地

址为2000H的内存单元。

请写出8255A的初始化程序和打印子程序。(8255的口地址为

80H-83H)

・・PC6V

・•・PA+'

d打印机,

DATAp.k_

・・PC2^-----------A

d

8255A。

tBUSY,

参考答案

一、单项选择题(每小题1分,共15分)

l.D2.B3.A4.A5.B6.B7.A8.B9.C10.B

1l.C12.C13.D14.D15.C

解释:

2.8288为总线控制器;0809为模数转换器;8089为I/O处理器

9.常用的汇编程序是MASM,属于汇编翻译程序,是把汇编源程序翻译为机器目标程序的

程序。

10.在8086/8088中尽管地址数据复用,但是是分时复用,即在总线周期的T1传送地址,

在T2-T4传送数据,所以地址线较先数据线有效。

15.8086响应可屏蔽中断中断时,由硬件提供中断类型号,是在响应信号INTA(低电平有

效)的第二个响应周期时放入数据总线;非屏蔽中断无响应信号;内部中断山指令直接获取

中断类型号。

二、填空题(每空1分,共20分)

1.20>1MB、16条、64K2.ES、DI

3.16K、4片4.字节选通、双向

5.EU、BIU6.操作数

7.128(2116容量为16Kx1,即7位地址线行线和列线复用,每次刷新一行的128个单

元)

8.外设、存储器9,入口地址、4、中断向量表、003FFH

三、简答题(每小题5分,共20分)

1.8086系统中的存储器分为几个逻辑段?各段之间的关系如何?每个段寄存器的作用是什

么?

答:8086CPU将1MB的存储空间分成逻辑段来进行管理:每个逻辑段最小为16Bo所以最

多可分成64K个段;每个逻辑段最大为64KB,最少可分成16个逻辑段。各段的起始位置

由程序员指出,可以彼此分离,也可以首尾相连、重叠或部分重叠。

4个16位的段寄存器用来存放每一个逻辑段的段起始地址

温馨提示

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

评论

0/150

提交评论