文档库 最新最全的文档下载
当前位置:文档库 › 计算机语言程序设计

计算机语言程序设计

计算机语言程序设计
计算机语言程序设计

《计算机语言程序设计》复习指导与练习

江苏广播电视大学林小宁

“计算机语言程序设计”采用C语言作为教学语言。通过本课程的学习,使学生能够熟悉C 语言,了解它们的特点,初步掌握利用C语言编程解决各种实际应用的基本方法,为今后正确运用它打下基础。为帮助同学们更好的学习与考试,这里对本课程的学习及考试要求作比较详细的说明。

1.基本要求:

1.了解C语言的用途、特点以及上机运行C语言程序的基本步骤;

2.掌握C语言各种数据类型的定义与使用方法;

3.熟练掌握利用C语言的三种基本结构编制简单程序的方法;

4.掌握C语言函数的定义、调用及说明的方法;

5.掌握C语言指针、结构体与共用体变量的使用方法,能正确运用它们;

6.掌握文件的有关操作。

2.考核说明

(1)本课程实行全省统一考试,采用闭卷笔试形式,时间为120分钟;

(2)考试内容不超出本复习指导要求内容,相关题型见后续综合练习(具体题目仅供参考);

(3)最终成绩评定可按考试80%、上机实验与平时作业20%计算。

3.练习

为使学生更好的复习考试,本练习给出了有关考试的题型及相应的比例,其中:填空题(每空2分,共30分)、单项选择题(每小题2分,共30分)、阅读程序题(20分)、改错题(10分)、编程题(10分)。本练习只作为考试题型的参考,希望学生在复习中着重掌握对基本概念及编程方法的理解。

1)填空题

1.C程序的基本单位是()。

2.一个C程序中至少应包括一个()。

3.结构化程序设计的三种基本结构是:()、()和()。

4.在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为()。

5.C语言中的标识符只能由三种字符组成,它们是(),(),()。

6.进行求余运算时,%两侧均应为()数据。

7.若有定义int k,j;运算表达式k=(j=3,j+2,++j,j++)后,变量k的值是();变量j的值是()。

8.表达式23>16&&12||2的值为(),表达式(23>16&&12)+2的值为()。

9.表达式246!=246/2*2的值为(),表达式246==247/2*2的值为()。

10.在C语言中,二维数组元素在内存中的存放顺序为()。

11.执行语句printf("\n%d\n",strlen("C语言程序设计"));后,输出结果为()

12.执行语句printf("%d\n",strcmp("Windows 98","Windows 95")>0?1:-1);后,输出结果为()。

13.C语言规定,可执行程序的开始执行点是()。

14.在C语言中,一个函数一般由两部分组成,它们是()和()。

15.在C程序中,调用函数时应保证实参和形参在()和()一致。

16.C程序中定义的变量,代表内存中的一个()。

17.在C程序中,指针变量能够赋()值或()值。

18.在C程序中,文件可以用()方式存取,也可以用()方式存取。

19.在C 程序中,数据可以用()和()两种代码性形式存放。

20.内存中供用户使用的存储空间可以分为()、()及()三部分。

21.在C语言中每一个变量和函数有两个属性:()和()。

22.以下程序的功能是:从键盘上输入一行字符,存入一字符数组中,构成一个字符串。然后输出该字符。请填空:[1] ,[2] 。

# include ”ctype.h”

# include ”stdio.h”

main( )

{ char str[81],*sptr; int i;

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

{str[i]=getchar( );

if(str[i]==’\n’) break;}

str[i]= [1] ;

sptr=str;

while(*sptr) putchar(*sptr [2] );}

23.语句段char s[20]=”abcd”,*sp=s; sp++;puts(strcat(sp,”ABCD”);的输出结果是(bcdABCD)。24.以下函数求字符串长度。请填空:[1] ,[2]

int strlen(char *str)

{int i;

for(i=0; [1];i++);

return [2] ;}

25.使用局部和全局变量时,全局变量和局部变量()同名;形参和局部变量()同名。26.对数组元素的引用可以采用()和()两种形式。

27.如分别有定义int *p( )及int (*p)( ),前者中的p是(),后者中的p是()。

28.如分别有定义int *p[ ])及int (*p)[ ],前者中p是(),后者中的p是()。

29.有以下说明和定义,可用a.day引用结构体成员day,请写出引用结构体成员a.day的其他两种形式[1] 、[2] 。

struct

{int day; char mouth; int year;}a,*b=&a;

30.数组名可以作函数的实参或形参,而数组元素只能作函数的()。

【参考答案】

1.函数

2.main函数

3.顺序结构选择结构循环结构

4.1

5.字母下划线数字

6.整型

7.4 5

8.1 3

9.0 1

10.按行存放

11.13

12.1

13.main

14.函数首部 函数体 15.类型 参数个数 16.存储单元 17.地址 空 18.字符 字节 19.ASCII 二进制

20.程序区 静态存储区 动态存储区 21.数据类型 数据的存储类型 22.[1] ’\0’(或0) ,[2] ++ 23.bcdABCD

24.[1] *(str+i) 或*(str+i)!=’\0’ ,[2] i 25.可以 不允许 26.下标法 指针法 27.函数名 指针变量 28.数组名 指针变量 29. [1] (p->day )、 [2] ((*p).day )。 30.实参

2)单项选择题

1.C 程序的基本单位是( )

A .程序行

B .语句

C .函数

D .字符 2.TURBO C 中int 类型变量所占字节数是( )

A .1

B .2

C .3

D .4 3.以下每个选项都代表一个常量,其中正确的整型常量是( )

A .12.

B .-20

C .1,000

D .4 5 6 4.以下符号中不能用作用户标识符的是( )

A .IF

B .Switch

C ._3com

D .case 5.以下选拔项中不合法的用户标识符的是( )

A .abc.c

B .file

C .Main

D .PRINTF 6.语言中运算对象必须是整型的运算符是( )

A .%=

B ./

C .=

D .* 7.不能正确表示算式

d

c b

a ??的C 语言表达式是( ) A .a/(c*d)*

b B .a*b/c/d C .a*b/c*d D .a*b/(c*d) 8.设int a=12;则执行完语句a+=a- =a*a 后,a 的值是( )

A .552

B .264

C .144

D .-264

9.执行循环语句:for (x=0,y=0;y!=250||x<4;x++)y+=50;其循环体共执行( )次。

A .5

B .4

C .3

D .2

10.若有定义int x=1,y=1,z=1;执行语句c=++x&&++y||z++;后x 、y 、z 的值分别是( )

A .2、2、2

B .2、1、2

C .2、2、1

D .1、1、2

11.若有定义int x=1,y=1,z=1,c;执行语句c= --x&&++y&&z++;后x 、y 、z 的值分别是( )

A .0、2、2

B .0、2、1

C .0、1、2

D .0、1、1 12.break 语句( )。

A .用在能出现语句的任何地方

B .只能用在循环体内

C .只能用在循环体内或switch 语句中

D .可用作函数体内的任一语句 13.以下由while 构成的循环执行的次数是( )。 int k=0; while(k=1) k++;

A .无限次

B .有语法错误,不能执行

C .一次也不执行

D .执行一次 14.以下由do-while 构成的循环执行的次数是( )。 int k=0; do k++; while(k=3);

A .无限次

B .1

C .2

D .3 15.与(!a= =1)等价的表达式是( )。

A .(a>0)

B .(a<0)

C .(a!=0)

D .(!a ) 16.与(a )等价的表达式是( )。

A .(a!=0)

B .(a>0)

C .(a<0)

D .(a<0&&a>0) 17.与(!a= =0)等价的表达式是( )。

A .(a=0)

B .(a>0)

C .(a<0)

D .(a<0||a>0) 18.如有函数hhh(float x){printf(“%d”,x);},其类型是( )。

A .与参数x 的类型相同

B .void 类型

C .int 类型

D .无法确定 19.能正确表示数学公式|)sin(|0x 的C 语言表达式是( )。

A .sqrt(abs(sin(x* /180)))

B .sqrt(abs(sin(x*3.14/180)))

C .sqrt((sin(x))

D .sqrt(fabs(sin(x*3.14/180))) 20.能正确表示代数式ln(x+y)的C 语言表达式是( )。

A .log10(x+y)

B .log(x+y)

C .lg(x+y)

D .lg10(x+y) 21.执行下面的程序段后,num 的值为( )。 int *p,num; num=100; p=# num=*p+10;

A .120

B .110

C .100

D .90 22.若有定义:int x,*pp;则正确的赋值表达式是( )。

A .pp=&x

B .pp=x

C .pp=&p

D .*pp=*x 23.若有定义:int a[4][4],(*p)[4];则对数组元素的正确引用是( )。

A .a[4][0]

B .*(p+1)[2]

C .p[0]

D .*(*a+3) 24.以下选项中,合法的赋值语句是( )。

A .a=b=26

B .++i;

C .k=int(a+b);

D .a=3,b=4 25.当调用函数时,实参是一个数组名,则向函数传递的是( )。

A .数组的长度

B .数组的首地址

C .数组第一个元素的值

D .整个数组的元素中的值 26.能正确进行字符串赋值的语句组是( )。

A .char str[3][60]; str[0]=”STRING”;

B .char *s; gets(s);

C .char *s[ ]={”STRING”};

D .char *s; strcpy(s,”STRING!”); 27.若有定义char s[20]=”CHINA”,*pch=s ;则不能代表字符H 的表达式是( )。

A .pch+1

B .s[1]

C .pch[1]

D .pch+=1,*pch

28.函数int fun1(char *x) {char *y=x; while(*y++); return(y-x-1);}的功能是( )。

A .比较两字符串的大小

B .求字符串的长度

C .将字符串x 复制到字符串y 中

D .将字符串x 接到字符串y 后 29.C 语言中,形参的缺省的存储类型是( )。

A.auto(自动)B.static(静态)

C.register(寄存器)D.extern(外部)

30.C语言中,函数的隐含存储类型是()。

A.auto(自动)B.static(静态)

C.extern(外部)D.无存储类别

31.在宏定义:#define minstring 1234567中,宏名minstring代替的是()。

A.实型数B.整型数C.常量D.一字符串

32.字符串”\\\abcd\123\xxAA\t”的长度是()。

A.18 B.11 C.13 D.7

33.字符串”\\nabcde\123\xA\xf”的长度是()。

A.18 B.10 C.9 D.8

34.下面程序main( ){int c1=2,c2=0; while(!c2--) {printf(”%d%d”,c1--,c2);}}运行的结果是()。

A.陷入死循环B.不输出任何内容C.输出2 -1 D.输出2 0

35.下面程序main( ){int c1=2,c2=0; while(c2--) {printf(”%d%d”,c1--,c2);}}运行的结果是()。

A.陷入死循环B.输出2 -1 C.不输出任何内容D.输出2 0

36.下面程序main( ){int c1=2,c2=0; while(c1=2) {printf(”%d%d”,c1--,c2);}}运行的结果是()。

A.输出2 0 B.无输出内容C.陷入死循环D.输出1 0

37.下面程序运行的结果是()。

#include

#define HELLO ”lin”

void main( ){printf(HELLO);printf(”HELLO”);}

A.HELLOHELLO B.HELLO C.HELLOlin D.linHELLO

38.当说明一个结构体变量时系统分配给它的内存是()

A.各成员所需内存量总和B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量D.结构中最后一个成员所需内存量

39.下面程序的输出结果是()。

main( )

{int x=1,y=0,a=0,b=0;

switch(x)

{case 1: switch(y)

{case 0:a++;break;

case 1:b++;break;}

case 2: a++;b++;break;}

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

A.a=2,b=1 B.a=1,b=1 C.a=0,b=0 D.a=2,b=2

40.下面程序的输出结果是()。

main( )

{int x=3,y=1;

switch(x==3) {case 1: x++;y++;

case 2: x++;y++;

default:x++,y++;}

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

A.x=3,y=1 B.x=4,y=2 C.x=5,y=3 D.x=6,y=4

【参考答案】

1.C 2.B 3.B 4.D 5.A 6.A 7.C 8.D 9.A 10.C 11.D 12.C 13.A 14.A 15.D 16.A 17.D 18.C 19.D 20.B 21.B 22.A 23.D 24.B 25.B 26.C 27.A 28.B 29.A 30.C 31.D 32.B 33.B 34.C 35.C 36.C 37.D 38.A 39.A 40.D 3)阅读程序题

1.阅读程序,正确写出程序的运行结果:

#include

main()

{char *cc="IA\12ET.NUM";

int i,c;

for(i=0;(c=cc[i])!='\0';i++){

switch(c){

case 'I':putchar(c+32);break;

case 'A':putchar(c);continue;

case '!':putchar(c);break;

case 'T':while((c=cc[++i])!='\0');--i;continue;

case '\\':putchar('X');break;

case 10:putchar('!');continue;}

putchar('*');}}

2.阅读程序,正确写出程序的运行结果:

#include

main()

{char *cc="STA\xFIRER";

int i,c;

for(i=1;(c=cc[i])!='\0';i++){

switch(c){

case 'T':putchar(c+5);

case 'S':putchar(c);continue;

case '1':putchar(c);break;

case 'R':while((c=cc[i++])!='\0');i=i-2;continue;

case '\\':putchar('X');break;

case 15:putchar('!');continue;}

putchar('*');}}

3.阅读下面的程序,按格式正确写出程序的运行结果:

#include

int x=1,y=3,z=5;

main()

{ int z=6;

y=4;

printf("\n%d,%d,%d,",x,y,z);

sub1(x,y);

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

sub1(int a,int b)

{int x=2;

z=b;

printf("%d,%d,%d,",x,y,z);

sub2();

y=8;

printf("%d,%d,%d,",x,y,z);}

sub2()

{int y=10;

printf("%d,%d,%d,",x,y,z);}

4.阅读下面的程序,按格式正确写出程序的运行结果:#include

int x=1,y=2;

main( )

{ y=y+x;

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

sub1(x,y);

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

sub1(int a,int b)

{int y=4;

x=++b;

printf("%d,%d,",x,y);

x=a++;

sub2( );

printf("%d,%d,",x,y);}

sub2( )

{ int y=6;

printf("%d,%d,",x,y);}

5.阅读下面的程序,正确写出程序的输出结果:

#include

main( )

{int a[]={2,4,6,8,10};

int b[][3]={1,3,5,7,11,13,15,17,19,21,23,25};

printf("\n%d,%d",*(a+0), *(a+2));

printf(",%d,%d\n",*a,a[3-1]);

printf(",%d,%d\n",*(b[0]+2), *&b[1][1]);

printf(",%d,%d\n",**(b+2), **b);

printf("%d,%d\n",*(*(b+3)+2), *(*b+3*2+2));

6.阅读下面的程序,按格式正确写出程序的运行结果:#define MAX 10

int a[MAX],i;

main( )

{printf("\n");sub1();sub3(a);sub2();sub3(a);}

sub2( )

{int a[MAX],i,max;

max=5;

for(i=0;i

sub1( )

{for(i=0;i

sub3(int a[])

{int i;

for(i=0;i

printf("\n"); }

【参考答案】

1.i*A!* 2.YT*!*

3.1,4,6,2,4,4,1,10,4,2,8,4,1,8,6

4.1,3,4,4,1,6,1,4,1,3

5.2,6,2,6,5,11,15,1,25,19

6.0,2,4,6,8,10,12,14,16,18

0,2,4,6,8,10,12,14,16,18

4)改错题

1.指出并修改下面程序中的错误,使其能将输入的两个整数按从小到大的次序输出(不允许增行或减行,也不允许修改程序结构):

main(){ void swap(int *p1,int *p2);

int a,b, *pointer_1,*pointer_2;

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

pointer_1=a;pointer_2=b;

if(a

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

void swap(int *p1,int *p2){ int temp;

temp=p1;p1=p2;p2=temp;}

2.以下程序完成将输入的一行文字中的大写字母转换为小写字母,小写字母转换为大写字母,其他字符不变,并输出。找出程序中的错误并改错。

#include

main(){char s[80],c; int i;

getchar(s);

for(i=0;(c=s[i])='\0';i++)

if(c>'A'||c<'Z') s[i]=c+32;

else if(c>a&&c

puts(s[ ]);}

3.以下程序用以输出1到n的阶乘的值。找出程序中的错误并改错。

int fac(int n)

{ int f=1;

f=f*n; return (f);}

main

{ int n;

printf("input n:");

scanf("%d",&n);

for(i=1;i

printf("%d!=%d\n",i,fac);

printf("\n");}

4.以下程序完成将输入的一行文字中的大写字母C及小写字母c删除,然后再输出。找出程序中的错误并改正。

#include

main

{char s{80};

int i,j;

getchar(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c'||s[i]!='C') s[j++]=s[i];

s[j]='\0';

putchar(s);}

5.指出并修改下面程序中的错误,使其能统计输入文字中单词的个数(_表示空格)(不允许增行或减行,也不允许修改程序结构)。

#include

main

{char s[80],c1,c2='_';

int i=0,num=0;

getchar(s);

while(s[i]= ='\0')

{c1=s[i];

if(i= =0) c2='_';

else c2=s[i-1];

if(c1!='_'||c2= ='_')

i++;}

printf("%d\n",*num);}

5)编程题

1.编写子函数求一个字符串的长度,在main函数中输入字符串,并输出其长度。若字符串开始有空格则不计算在内。

2.编程实现采用选择法对10个整数进行从大到小的排序,要求在主函数main中实现10

个整数的输入及对子函数sort、print的调用;在子函数sort中实现排序;在子函数print中实现将已排好的数据输出;子函数sort、print调用时的实参及形参均要求采用指针变量。

3.按行输入一个2行3列的整型二维数组a,将其行列互换,存到另一个二维数组b中,并将数组b按行的形式输出。试编程实现。

4.编写程序,要求在子函数strgs( )中完成统计小写字母个数功能,在主函数main( )中输入字符串(例如:“I am a student.”),并输出结果。

5.下面的程序是采用起泡法对10个整数进行从小到大的排序,已给出主函数main()的格式,试编写排序子函数sort()。子函数形参与其函数原形说明保持一致。

main()

{void sort(int *ps);

int a[10],i,*p=a;

printf("input 10 number :\n");

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

scanf("%d",p);

p=a;

sort(p);

p=a;

printf("the sorted numbers :\n"); for(i=0;i<10;i++,p++)

printf(" %d",*p);}

试验二ARM汇编语言程序设计

实验二 ARM汇编语言程序设计 一、实验目的 1.了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程 2.掌握ARM汇编指令 二、实验设备 1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆。 2. PC操作系统WIN98或WIN2000或WINXP, ADS1.2集成开发环境,仿真器驱动程序。 三、汇编语言简介 1.ARM汇编的一些简要的书写规范 ARM汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。ARM汇编对标识符的大小写敏感,书写标号及指令时字母大 小写要一致。在ARM汇编中,ARM指令、伪指令、寄存器名等可以全部大写或者全 部小写,但不要大小写混合使用。注释使用“;”号,注释的内容由“;”号起到此 行结束,注释可以在一行的顶格书写。 详细的汇编语句及规范请参照ARM汇编的相关书籍、文档。 2. ARM汇编语言程序的基本结构 在ARM汇编语言程序中,是以程序段为单位来组织代码。段是相对独立的指令或数据序列,具有特定的名称。段可以分为代码段的和数据段,代码段的内容为执 行代码,数据段存放代码运行时所需的数据。一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形 成一个可执行文件。可执行映像文件通常由以下几部分构成: ◆ 一个或多个代码段,代码段为只读属性。 ◆ 零个或多个包含初始化数据的数据段,数据段的属性为可读写。 ◆ 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。 链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。源程序中段之间的相邻关系与执行的映象文件中的段之间的相邻关系不一定 相同。 3. 简单的小例子 下面是一个代码段的小例子 AREA Init,CODE,READONLY ENTRY LDR R0, =0x3FF5000 LDR R1, 0x0f STR R1, [R0]

《高级语言程序设计》复习题及答案

一、选择题 1.以下叙述正确的是( ): A)在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D)注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D)C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是( ) A)函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a;float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int) 2.6 值的类型为( )。 A)doubleB) char C) floatD) int 5、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是( )。 A) ABC B) abc C)a_bc D) void 7、下列运算符中优先级最高的是( ) A)< B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是( ) A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是( ) A)/ B)+ + C)!=D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x? w : y< z ? y : z”的值是( ) A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() {inti=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

计算机程序设计语言的发展历程

1.概论自从世界上第一台电子计算机ENIAC于1946年问世以来,伴随着计算机硬件的不断更新换代,计算机程序设计语吉也有了很大的发展.至今已有四代语言问世。 在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。 尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。 程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。 1.机器语言电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。 计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。 使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。 而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。 但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。 机器语言,是第一代计算机语言。 2.汇编语言为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进: 用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。

然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。 汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。 3.高级语言从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。 第一个高级程厅设计语著诞生严50年代。 当时的计算机非常昂贵,而月功量非常之少,如问有效地使用计算机足一个相当重要的问题。 另一方面,计算机的执行效率也是人们追求的r1你。 为了有效地使用汁算机.人们设计出了高级语言,用以满足用户的需求。 用商级语言编写的程序需要经过翻译,计算机才能执行。 虽然,程序翻译占去了一些计算机时间,在一定程度上影响了计算机的使用效率。 坦是实践证明。 高级语言是有效地使用汁算机与计算机执行效率之间的一个很好的折中手段。 经过努力,1954年,第一个完全脱离机器硬件的高级语言—FORTRAN问世了,40多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASI C、LISP、SNOBOL、PL/ 1、Pascal、

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

汇编语言程序设计

汇编语言基础《汇编语言程序设计》第01章在线测试 A B C D 、微机中每个存储单元具有一个地址,其中存放一个____量。 A B C D 、设段地址为5788H,该字节的物理地址_____。 A B C D 、汇编语言源程序中,每个语句由项组成,不影响语句功能的是_____。 A B C D 、下列标号不合法的是_____。 A B C D

B、生成的代码序列短小 C、运行速度快 D、编程容易 E、便于移植 2、8086段寄存器有_______。 A、IP B、DS C、CS D、ES E、SS 3、使用MASM 6.x版本的“ML /Fl eg101.asm”命令,如果源程序eg101.asm没有语法错误,则将生成_________文件。 A、目标代码文件 B、可执行文件 C、列表文件 D、调试文件 E、库文件 4、汇编语言中,______可以作为有效的名字,如标号、变量名等。 A、0fffh B、var00 C、loop1 D、test E、add 5、汇编语言中,程序员不能将______作为用户标识符。 A、DS

正确错误、有效地址是指存储器操作数的物理地址。 正确错误、采用汇编语言书写的一个源程序文件,需要使用汇编程序,例如MASM 正确错误 按逻辑段组织程序,需要执行的指令应该在代码段中。 正确错误、使用简化段定义源程序格式,必须具有语句,且位于所有简化段定义语句之前。 正确错误 《汇编语言程序设计》第02章在线测试 A B C D

2、伪指令DW定义的是______量的变量。 A、字节 B、字 C、双字 D、4字 3、将变量var定义如下,“var db 26h, 4ah”,欲以字属性存取该变量值,应采用______var。 A、offset B、byte ptr C、word ptr D、seg 4、语句“xyz db ˊABˊ, ˊCDˊ, ˊEˊ,ˊFˊ”汇编后占用的存储空间是______个字节。 A、4 B、5 C、6 D、8 5、在伪指令语句“number dw 1234h”中的number 项称为______。 A、标号 B、操作符 C、名字 D、操作数 第二题、多项选择题(每题2分,5道题共10分) 1、如下________寻址方式的操作数来自主存储器。 A、立即数寻址 B、寄存器寻址 C、直接寻址 D、寄存器相对寻址 E、寄存器间接寻址 2、“mov [bx+10h],al”指令的两个操作数采用的寻址方式有_______。 A、寄存器间接 B、寄存器 C、寄存器相对 D、基址变址 E、立即数

《高级语言程序设计》答案

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include int main() { int i,j,t; int max(int,int); int min(int,int); scanf("%d%d",&i,&j); if(i int main() { int max4(int,int,int,int); //对max4的函数声明 int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return 0; } int max4(int a,int b,int c,int d) //定义max4函数 { int max2(int,int); //对max2的函数声明 return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数} int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include int main() { int fac(int); int n; scanf("%d",&n);

汇编语言程序设计

汇编语言程序设计 一、选择题 (共72题) 1、 用于指针及变址寄存器的有()。 A、 AX,BX,CX,DX B、 SP,BP,IP C、 CS,DS,SS D、 PSW 考生答案:B 2、 完成把汇编语言源程序模块转换为目标模块的程序是()。 A、 编辑程序 B、 汇编程序 C、 连接程序 D、 调试程序 考生答案:B 3、 指令JMP FAR PTR DONE中的寻址方式属于()。 A、 段内转移直接寻址 B、 段内转移间接寻址 C、 段间转移直接寻址 D、 段间转移间接寻址 考生答案:C 4、 对于下列程序段: AGAIN:MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用()指令完成同样的功能。 A、 REP MOVSB B、 REP LODSB C、 REP STOSB D、 REPE SCASB 考生答案:A 5、 在程序执行过程中,IP寄存器中始终保存的是()。 A、 上一条指令的首地址 B、 下一条指令的首地址 C、 正在执行指令的首地址 D、 需计算有效地址后才能确定地址 考生答案:B 6、 在汇编语言程序的开发过程中使用宏功能的顺序是()。 A、 宏定义,宏调用 B、 宏定义,宏展开 C、 宏定义,宏调用,宏展开 D、 宏定义,宏展开,宏调用 考生答案:C 7、 CPU要访问的某一存储单元的实际地址称()。 A、 段地址

偏移地址 C、 物理地址 D、 逻辑地址 考生答案:C 8、 AND、OR、XOR、NOT为四条逻辑运算指令,下面解释正确的是()。 A、 指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B、 指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C、 指令AND AX,OFH执行后,分离出AL低四位 D、 NOT AX,执行后,将AX清0 考生答案:C 9、 完成对CL寄存器的内容乘以2的正确操作是()。 A、 ROL CL,1 B、 MUL 2 C、 SHL CL,1 D、 SHR CL,1 考生答案:C 10、 检查两个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP A L,BL”指令后应跟的分支指令是()。 A、 JE LOP1 B、 JAE LOP1 C、 JC LOP1 D、 JGE LOP1 考生答案:B 11、 已知变量VAR为字型,则TYPEVAR=()。

计算机程序设计语言发展史和对程序设计语言未来的看法

计算机程序设计语言发展史和对程序设计语言未来的看法信息科学与工程通信一班比拉力江·买买提20104055049 【摘要】 本文以自然辩证的观点探讨了计算机语言的发展历程,运用自然辩证法的基本理论、基本方法,系统分析了计算机语言的发展历史、现状和未来。并对其的发展趋势和未来模式做了探索性研究和预测,同时以哲学的观点阐述其发展的因果关系,揭示其事物发展的共性问题;最后文章介绍了在计算机语言发展历程中做出杰出贡献的科学家,以其在计算机事业中的突出表现来折射出人类智慧的伟大,以其不平凡的一生来激励和指导我们在计算机语言的发展中向着正确的方向前进。 【关键字】 自然辩证法计算机语言计算机技术编程语言因特网面向对象 一、引言 一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。 二、科学认识大门的钥匙--当代自然辩证法 自然辩证法,是马克思主义对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。 马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉著作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

计算机语言程序设计考试试题

计算机语言程序设计考试试题 1 / 5 计算机语言程序设计试题 一、填空题(每空2分,共30分) 1.结构化程序设计的三种基本结构是:【1】 、【2】 和【3】 。 2.在C 语言中(以16位PC 机为例),一个float 型数据在内存中所占的字节数为【4】 。 3.若有定义int a=2;在Turbo C 中有printf (“%d ,%d ”,a ,2&&++a );则输出为【5】 。 4.表达式x=23>16&&12+1的值为【6】 。 5.执行语句printf ("%d",strupr ("Windows ");后,输出结果为【7】 。 6.有int a=12,n=5,表达式a%=(n%=2)运算后a 的值为【8】 。 7.在C 语言中,二维数组元素在内存中的存放顺序为【9】 。 8.使用局部和全局变量时,全局变量和局部变量【10】 同名;形参和局部变量【11】 同名。 9.字符数组的输入输出有两种方法:逐个字符输入输出,用格式符【12】 ;将整个字符串 一次输入或输出,格式符【13】 。 10.语句段char s[20]=”ABCD ”,*sp=s; sp++;puts(strcat(sp+1,”MA ”));的输出结果是【14】 。 15】 值。 二、单项选择题(每小题2分,共30分) 1.C 程序的基本单位是( ) A .语句 B .字符 C .程序行 D .函数 2.TURBO C 中float 类型变量所占字节数是( ) A .8 B .4 C .2 D .2

3.以下符号中能用作用户标识符的是() A.if B.3com C._3com D.break 4.C语言中运算对象必须是整型的运算符是() A.%= B./ C.= D.* 5.执行循环语句:for(x=0,y=0;y!=200&&x<4;x++)y+=100;其循环体共执行()次。 A.2 B.3 C.4 D.5 6.与(!a==1)等价的表达式是()。 A.(a>0)B.(!a)C.(a!=0)D.(a<0) 7.如有函数int max(float x){x++;return x;},则该函数返回值的类型为()。 A.float类型B.void类型C.int类型D.无法确定 8.能正确表示代数式ln(x+y)的C语言表达式是()。 A.log10(x+y) B.lg10(x+y) C.lg(x+y) D.log(x+y) 9.执行下面的程序段后,num的值为()。 int *p,num; num=10; p=# num=*p+20; A.30 B.20 C.10 D.40 10.若有定义:int x,*pp;则正确的赋值表达式是()。 A.pp=&x B.pp=x C.*pp=&p D.*pp=*x 11.若有定义int x=1,y=1,z=1,c;执行语句c= --x&&++y&&z++;后x、y、z的值分别是()A.0、2、2 B.0、1、1 C.0、1、2 D.0、2、1 12.字符串”\abcd\13\\”的长度是()。 A.7 B.6 C.11 D.10 13.下面程序main( ){int c1=2,c2=0; while(c1) {printf(”%d%d”,c1--,c2);}}运行的结果是()。 A.输出2 0 B.无输出内容C.陷入死循环D.输出1 0 14.下面程序运行的结果是()。 #include #define HELLO ”lin” void main( ){printf(“HELLO”);printf(HELLO);} A.HELLOHELLO B.HELLO C.HELLOlin D.linHELLO 15.下面程序的输出结果是()。

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

程序和程序设计语言(教学设计)

第 3 节程序和程序设计语言 、教学目标 知识目标:1、掌握计算机程序的概念 2、掌握计算机程序的概念、计算机语言分类及其特征。 技能目标:通过阅读程序,学生主动探寻算法与程序的关系 情感态度与价值观:编程语言没有好坏之分,应选择适合自己的语言深入学习 二、教学重点和难点 重点:1、计算机语言的概念。 2、高级语言的特征 难点:程序的编译与解释 三、教学过程 以九歌机器人七秒成诗引入新课 一)程序和程序设计 计算机能做很多的事情,包括各种控制活动,它们都是在程序的控制和指挥下进行的,可以这么说:离开了程序,计算机什么也干不了。 1、程序及其特征 (1)程序(Program):是一组操作的指令或语句的序列,是计算机执行算法的操作步骤。 2)程序的特征: 解决问题的每一个算法步骤对应着程序中的一个或多个语句实现一个或多个操作,每一个操作都有执行 对象。 在程序中被施行操作的对象称为数据。 除了有特殊的程序转向控制语句外,程序都是从第一条语句开始顺序执行。 2、程序的基本结构 1)顺序结构2)选择结构3)循环结构 3、程序设计:从分析问题、建立模型、设计算法、编写修改程序,一直到程序正确运行的整个过程。 (二)程序设计语言 程序设计语言:是指人们编制程序所使用的计算机语言。 程序设计语言的分类: 机器语言汇编语言高级语言

1、机器语言 机器语言(machine Ianguage):把直接用二进制代码表示的计算机指令系统称为机器 语言。 机器语言特点: ①用机器语言编写的程序可以被计算机直接执行,速度快,占用内存少。 ②编写程序相当繁琐。 ③程序不具有通用性。 2、汇编语言 汇编语言(assembly Ianguage):用符号和数字来代替二进制代码的计算机语言称为汇 编语言。 汇编语言特点: ①不能被计算机直接执行。 ②编写程序比机器语言方便得多。 ③程序不具有通用性。 3、高级语言 高级语言(high-level Ianguage ):由一系列按一定语法规则的语句组成(与计算机内部结构无关、通用、用其编写的程序需要“翻译”后才可执行) 咼级语言特点: ①不能被计算机直接执行。 ②易读、易改,编写程序方便。 ③程序通用性好。 补充:Basic语言的发展历程 BASIC ( Beginner' s All-purpose Symbolic Instruction Code 的缩写,即初学者通用符号指令代码)语言简单易学,适合初学者。

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤 第3章汇编语言程序格式 〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用? 〔解答〕 伪指令语句与硬指令语句的本质区别是能不能产生CPU动作; 伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。 〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成? 〔解答〕 为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。 〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。 〔解答 保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。 〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕 汇编语句有执行性语句和说明性语句; 执行性语句由标号、硬指令助记符、操作数和注释四部分组成; 说明性语句由名字、伪指令助记符、参数和注释四部分组成 〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕 ⒈编辑文本编辑程序汇编语言源程序.asm ⒉汇编汇编程序目标模块文件.obj ⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序 〔习题3.6〕区分下列概念: (1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 〔解答〕 (1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。 (2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。 (3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。 〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1)mov byte ptr [bx],1000 (2)mov bx,offset myword[si] (3)cmp mybyte1,mybyte2 (4)mov al,mybyte1+mybyte2 (5)sub al,myword (6)jnz myword 〔解答〕 (1)1000超出了一个字节范围 (2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si] (3)两个都是存储单元,指令不允许 (4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式 〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别? AND AL,OPR1 AND 0feh 〔解答〕

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

新版汇编语言程序设计习题答案(钱晓捷主编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

汇编语言程序设计

实验四程序设计 一、实验目的 学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG 中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。 二、实验题 1、已知当前数据段中DADT1和DADT2开始分别存放若干字节数据,数据个数相同,编制程序检查两数据块中数据是否相同,若相同,则在屏幕上显示1,否则显示0。 【参考程序如下】 DSEG SEGMENT DATA1 DB 'ABCDEFG3' DATA2 DB 'ABCDEF3G' CNT DW 8 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV DL,31H LEA SI,DATA1 LEA DI,DATA2 MOV CX,CNT DEC SI DEC DI AGAIN:INC SI INC DI MOV AL,[SI] CMP AL,[DI] LOOPZ AGAIN JZ DISP DEC DL DISP: MOV AH,2

INT 21H MOV AH,4CH INT 21H CSEG ENDS END START 阅读程序,理解循环程序结构及执行过程,并改成串指令实现。 2 编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。 三、实验报告 写出程序清单,记录运行结果。 改写串指令实现: DSEG SEGMENT DATA1 DB'ABCDEFG3' DATA2 DB'ABCDEF3G' CNT DW8 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV ES,AX MOV DL,31H LEA SI,DATA1 LEA DI,DATA2 MOV CX,CNT CLD

相关文档
相关文档 最新文档