华中科技大学汇编语言程序设计试卷

合集下载

华中科技大学计算机学院2015年C语言程序设计试卷

华中科技大学计算机学院2015年C语言程序设计试卷

计算机学院2014-2015学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2015年 6 月 25 日专业: 班级: 学号: 姓名:题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100得分注意:试卷后面附有运算符的优先级和结合性表。

一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人是正确的,请选择正确的选项并填写到括号内,选择正确得分。

本大题共10小题,每小题1分,共10分。

)1、已知8位补码位是11111110,其原值是。

【】A、-2B、254C、-1D、-1262、下列是标识符。

【】A、B、_IPHONE_6_0C、sum[i]D、sin(x)3、下列逻辑表达式中与其它3个不等价。

其中a为int型变量。

【】A、!aB、a==0C、a==1D、!(a>0||a<0)4、下列是非法常量。

【】A、0xff00B、.1415C、'\a'D、051885、设a和b为整型变量且a值为5,表达式的值不为2。

【】A、b=a/2B、b=6-(--a)C、b=(a-3)%2D、b=a?a-3:16、适用于浮点类型数的运算是。

【】A、 |B、%C、 &D、 <7、执行语句putchar('R'+'6'-'4');的输出结果是。

【】A、RB、SC、TD、 U8、在工程中引用其它文件定义的全局变量,需要使用存储类型。

【】A、autoB、externC、staticD、register9、下列是变量a的定义,sizeof(a)为9的是。

【】A、char a[]=”c:\\file\\”B、char a[]=”123456789”C、int a[9]D、float a[9]10、下列给出的程序片段,其中while循环体执行的次数是。

【】i=1,j=0; while(i+j<=10) if(i>j)j++;else i++;A、5B、9C、 10D、11二、 多项选择题(下面每小题的A 、B 、C 、D 备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。

《汇编语言程序设计》期末考试-试卷及答案

《汇编语言程序设计》期末考试-试卷及答案

《汇编语言程序设计》期末考试-试卷及答案一、 选择题(每题1分,共20分)1、下面存储器中属于辅助存储器的是:(、下面存储器中属于辅助存储器的是:(CDE CDE CDE)) A. RAM B. ROM C.C.磁盘磁盘 D.D.光盘光盘 E. 硬盘2、通常说计算机的内存为32M 32M、、64M 或128M 指的是:(指的是:(C C )A. RAM 的容量B. ROM 的容量C. RAM 和ROM 的容量D.硬盘的容量3、下面的说法正确的是:(、下面的说法正确的是:(AE AE AE))A. 存储器是计算机中存放程序和数据的记忆部件。

存储器是计算机中存放程序和数据的记忆部件。

B. 存储器中的信息被读出后即从存储器中消失。

存储器中的信息被读出后即从存储器中消失。

C. 存储器中如果已经存有数据,则不能再向其中写入新的数据。

D. 半导体存储器的存取速度比CD-ROM 的存取速度要慢。

的存取速度要慢。

E. 辅助存储器需要CPU 通过I/O 接口访问,因而速度较慢。

4、下面属于系统软件的有(、下面属于系统软件的有(A A )A. WINDOWS A. WINDOWSB. MASMC. Visual C++D. WORD 5. 5. 汇编语言的优点不包括汇编语言的优点不包括汇编语言的优点不包括__D_____D_____D___。

A A 直接有效地控制硬件直接有效地控制硬件直接有效地控制硬件B B B 生成的代码序列短小生成的代码序列短小生成的代码序列短小C C 运行速度快运行速度快运行速度快D D 编程容易6. 6. 下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( AB) A 、AX AX,,BX BX,,CX CX,,DX B 、BX BX,,BP BP,,SI SI,,DI C 、SP SP,,IP IP,,BP BP,,DX D 、CS CS,,DS DS,,ES ES,,SS7. 7. 可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是(可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( D D))。

华中科技大学2003-2006级信息学院《C语言程序设计》考试试题及答案(DOC)

华中科技大学2003-2006级信息学院《C语言程序设计》考试试题及答案(DOC)

2003级信息学院《C语言程序设计》考试试题系班级姓名学号成绩一. 判断下列语句或程序的对错。

(“×”表示错,“√”表示对)(10分)1int x=y=z=20; ( ×) y,z需要在前定义2 #define M 50; ( ×) 不能有分号3 printf(“%\t”,(40,50,60)); ( √)4float a[100],*p;p=a++; ( ×) 数组名是地址常量,不能做++操作5char str[20];str[20]=0; ( ×) str[20]单元不可用6int data[4]={0,1,2,3,4}; ( ×) 0,1,2,3,4是5个元素,与data[4]不匹配7int x=’\014’; ( √)8int xyz.1=2; ( ×) xyz.1不是合法的标识符(变量名)9char *p=”c:\test\prg.c”; ( ×) 修改为c:\\test\\prg.c10int *p;*p=20; ( ×) 指针不能用常量进行赋值二. 计算下列表达式的值(10分)设unsigned int a=15,b=21,c=5,d=1;float f;(1) f=b/c ( 4.0 ) b/c是整数除,先得到4,然后赋值给f(2) !(a+b)+c-1&&b+c/2 ( 1 )(3) a^b+b&0x55+c<<3|015 ( 0x000f )(4) d*=c--%b++ ( 5 )(5) a%=(c%=2) ( 0 )三.程序改错(10分)1从键盘上输入三个字符串,然后按字典(从小到大)顺序进行输出# include <stdio.h># include<string.h>void swap(char *,char *);//函数声明需要分号结束main(){char a[80],b[80],c[80];scanf(“%s%s%s”,&a,&b,&c); //去掉&号,数组名即表示地址if(a>b)swap(a,b); strcmp(a,b)>0 a,b比较需要用字符串比较函数if(b>c)swap(b,c); strcmp(b,c)>0 b,c比较需要用字符串比较函数printf(“%s\n%s\n%s\n”,a,b,c);}void swap(char *pstr1,char *pstr2){char *p; //char p[80];p=pstr1; //strcpy(p,pstr1);字符串赋值需要用拷贝函数pstr1=pstr2; //strcpy(pstr1,pstr2);pstr2=p; //strcpy(pstr2,p);}(2)求某班30个学生数学成绩的最高分和平均分.# include <stdio.h>flaot process(float *p1,int n,int *p2); 添加函数声明main(){float a[30],aver;int ;for(m=0;m<30;m++)scanf(“%f”,&a[m]);max=process(a,30,&aver);pr intf(“max=%f,ave=%f\n),max,aver);}float process(float *p1,int n,int *p2){char x;int temp; //float temp 与函数返回类型匹配for(x=0;x<=n;x++) //for(x=0;x<n;x++) 不能要等号{if (p1[x]>temp)temp=p1[x];*p2+=p1[x];}p2=p2/n; //*p2=*p2/n;return temp;}四.程序填空(1)有一分数系列:2/1,3/2,/5/3,8/5,13/8,21/13……求出这数列的前50项和# include <stdio.h>main(){int m;float__ ________; // t,s=0,a=2,b=1for(m=1;___ _______;m++) //m<=50{s=s+a/b;t=a;a=_a+b_____;b=_t_;}printf(“sum=%f\n:,s);(2)按如图所示格式打印杨辉三角形的前10行11 11 2 11 3 3 11 4 6 4 1………main(){int m,n,a[10][10];for(m=0;m<10;m++){a[m][0]=1;__________________; a[m][m]=1;}for(__m=2___;m<10;m++)for(___n=1____;__n<m__________;n++)a[m][n]=a[m-1][n-1]+a[m-1][n];for(m=0;m<10;m++){for(n=0;__n<=m_____________;n++)printf(“%6d”,a[m][n]);_printf(“%5d”,a[m][n]);}}五.写输出结果(1)#include <stdio.h>void main(){int m,n,p,s;s=0;for(m=1;m<=4;m++){for(n=1;n<=m;n++){ p=1;for(n=1;n<=m;n++)p=p*n;}s=s+p;}printf(“s=%d\n”,s);S = 33; //1!+2!+3!+4!;(2)# include <stdio.h>void auto_static();int g_val;main(){int m;for(m=0;m<5;m++)auto_static();}void auto_static(){int au=0;static int st=0;printf(“au=%d,st=%d,g_val=%d\n”,au++,++st,g_val++);}au=0,st=1,g_val=0au=0,st=2,g_val=1au=0,st=3,g_val=2au=0,st=4,g_val=3au=0,st=5,g_val=4(3)# include <stdio.h>main(){int i,j,a[][3]={2,4,6,1,2,3};int *p[2]={a[0],a[1]};for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%3d\t”,*(p[i]+j));printf(“\n”);}}2 4 61 2 3(4)# include <stdio.h># include <string.h>struct person{char name[20];int count;};void main(){struct person leader[3]={{“li”,0},{“zhang”,0},{“wang”,0}}; char name[20],m,n;for(m=1;m<7;m++){scanf(“%s”,name);for(n=0;n<3;n++)if(!strcmp(name,leader[j].name)){leader[j].count++;break;}}printf(“\n”);for(m=0;m<3;m++){printf(“%s:%d\n”,leader[m].name,leader[m].count);}}当程序运行时,键入情况如下:liwangleiliwangzhang写出程序的输出结果。

华科2013年C语言程序设计试卷-A卷及参考答案(正式用卷)

华科2013年C语言程序设计试卷-A卷及参考答案(正式用卷)

计算机学院2012-2013学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2013年 7 月 5 日专业班级学号学生姓名题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100得分注意:试卷后面附有运算符的优先级和结合性表。

一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人是正确的,请选择正确的选项并填写到括号内,选择正确得分。

本大题共10小题,每小题1分,共10分。

)1、以下为正确的标识符是【】A、forB、u.3C、3cD、DO2、以下为合法的整型常量是【】A、-1UB、01111001BC、ffffD、01383、下列数据中属于字符串常量的是【】A、'a'B、"a"b"c"C、'123'D、"a\"b\"c"4、表达式-a+++b中记号(token)的个数是【】A、3个B、4个C、5个D、6个5、 -3的16位补码是【】A、0xfffdB、0x1011C、0x7ffdD、0x00036、以下为正确的转义字符是【】A、'\'B、'\\'C、'\0x12'D、'\0f1'7、设有声明:enum {U,V,W=0,X,Y=0,Z} a; 则值为1的枚举常量的个数是【】A、1个B、2个C、3个D、4个8、设有声明: 【】union U{ long a; short b; char c; char s[20];} v={0x01020304},*p=&v;则下列选项正确的是A、printf("%d\n",sizeof(v))输出4B、printf("%d\n",p->s[0])输出4C、printf("%d\n",v.c)输出1D、printf("%x\n",v.b)输出1029、设有声明和语句:FILE *fp; fp=fopen("c:\\abc.dat","r+"); 【】则下列选项正确的是A、打开文件的文件名为\abc.datB、打开的是二进制文件C、打开的是文本文件D、打开的文件只能进行读操作10、设有如下代码片段:【】int a[]={1,2,3,4,5},i;char *p=(char *)a;for(i=0;i<3;i++)printf("%d ",*((p+=sizeof(int))-sizeof(int)));printf("\n");则该代码片段的输出结果是A、1 2 3 4 5B、1 2 3C、1 1 1D、2 3 4二、 多项选择题(下面每小题的A 、B 、C 、D 备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。

(完整版)华中科技大学80X86汇编语言程序设计试卷

(完整版)华中科技大学80X86汇编语言程序设计试卷

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______一、改错题(10分,每题1分,在错误处划线,线下写上正确答案)1. SHR BH, 82. ADD [BX], –153. LEA POINT, BUF4. IN DX, 2005. PUSH DH6. MUL 257. XLAT BX, TAB8. REPNZ MOVSW9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI]二、单选题(20分,每题1分)1.MOV指令的特点是________。

A.影响DF B.影响SF C.影响CF D.不影响标志位2.使用寄存器间接寻址方式访问堆栈中某变量时,要选用________寄存器。

A.BX B.BP C.SI D.SP3.8086标志寄存器中的三个控制标志是________。

A. IF、PF、SF B.DF、OF、CF C.DF、IF、TF D.TF、AF、IF 4.若有符号数运算的结果溢出,则置________为1。

A.OF B.CF C.SF D.IF5.若某存贮器操作数的偏移地址在SI中,访问该操作数应采用________寻址方式。

A.立即B.寄存器C.寄存器问址D.直接6.串操作指令中,目的串的逻辑地址应为________。

A.DS:[SI] B.DS:[DI] C.ES:[DI] D.ES:[SI] 7.不在本模块定义而在本模块中引用的符号称________符号。

A.公共B.局部C.自定义D.外部8.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX,CL”后,(AX)=________。

A.0FFFFH B.0FFF0H C.0F0FFH D.0FFFH9.已知AL中存放着一个压缩BCD码,为实现AL减1操作,应选用________指令序列。

汇编语言程序设计期末考试试卷及参考答案

汇编语言程序设计期末考试试卷及参考答案

【汇编语言程序设计】期末考试-试卷及参考答案执行上述两条指令后,正确的结果是( B )。

A.(AX)=1001H; B.(AX)=0FFFH;C.(AX)=1000H; D.(AX)=0111H。

6.串指令中的目的操作数地址一定是由____A_ _提供。

()A.ES:[DI] ; B.SS:[BP];C.DS:[SI] ; D.CS:[IP]。

7.将DX的内容除以2,正确的指令是( C )。

A.DIV? 2 ;B.DIV ? DX,2 ;C.SAR? DX,1;D.SHL? DX,1。

8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。

A.目标程序; B.汇编语言源程序;C.可执行程序; D.汇编程序。

9.用一条指令仅实现将AX←BX+SI的方法是( D )。

A.XCHG AX,[BX][SI] ;B.MOV AX,[BX+SI];C.LEA AX,BX[SI] ;D.LEA AX,[BX][SI]。

10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。

A.1FFFH; B.1998H;C.1FFEH; D.2002H。

2. C二、指出下列指令的出错原因,并改正。

(每小题2分,共12分)1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为MOV BX,DSADD AX,BX4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为MOV SI,CXTEST BX,[SI]5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX]SUB AX,[BP+SI]或:MOV AL,[BX]SUB AL,[BP+SI]6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分)1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。

汇编语言程序设计试题参考答案

汇编语言程序设计试题参考答案

汇编语言程序设计参考答案A卷一、单项选择题(本大题共8小题,每小题2分,共16分)1.C2.B3.B4.A5.C6.A7.A8.C9.D 10.B二、名词解释(本大题共5小题,每小题4分,共20分)11.微处理器:也成中央处理器(CPU),是微型计算机的核心部件,包含运算器、控制器、寄存器组及总线接口等,负责对计算机系统各部件进行统一的协调和控制。

12.寻址方式:就是寻找操作数或操作数地址的方式,根据寻址方式可方便地访问各类操作数。

13.伪指令:是发送给汇编程序的命令,在汇编过程中由汇编程序进行处理,如定义数据、分配存储区、定义段及定义过程等。

14.中断源:指能引起中断的外部设备或内部原因。

15.汇编语言:是一种面向CPU指令系统的程序设计语言,采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址。

三、简答题(本大题共4小题,每小题5分,共20分)16.微型计算机系统软件的主要特点是什么?计算机系统软件的主要特点是简化计算机操作,支持应用软件的运行并提供相关服务,通常包括操作系统、语言处理程序等。

17.什么是逻辑地址?他由哪两部分组成?计算机存储器中给每个逻辑段编址的地址称逻辑地址。

逻辑地址是在程序中使用的地址,他由段地址和偏移地址两部分构成。

18.一个完整的汇编源程序由那些逻辑段组成?各逻辑段的主要作用是什么?一般情况下汇编语言源程序应该由以下3个逻辑段组成:①数据段:用来在内存中建立一个适当容量的工作区,以存放常数,变量等程序需要对其进行操作的数据;②堆栈段:用来在内存中建立一个适当容量的堆栈区,以便在中断、子程序调用时使用;③代码段:包括了许多以符号表示的指令,其内容就是程序需要执行的具体操作。

19. DMA数据传送方式的特点是什么?DMA数据传送方式把外设与内存交换信息的操作与控制交给DMA控制器,简化了CPU对数据交换的控制,数据传送速度快,但这种方式电路结构复杂,硬件开销大。

(完整)汇编语言程序设计试卷2答案,推荐文档

(完整)汇编语言程序设计试卷2答案,推荐文档

汇编语言程序设计试卷2答案注意:答案全部写在最后一张试卷纸上,要求表明题号,字迹清楚,答在试卷上不给分一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题2分,共20分)1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。

(A) 无符号十进制数136(B) 带符号十进制数-120(C) 压缩型BCD码十进制数88(D) 8位二进制数-8的补码表示2.指令指针寄存器是()。

(A) IP(B) SP(C) BP(D) PSW3.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是()。

(A) 表示结果中含1的个数为偶数(B) 表示结果中含1的个数为奇数(C) 表示该数为偶数(D) 表示结果中低八位含1的个数为偶数4.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是()。

(A) MOV AL,00H(B) AND AL,00H(C) XOR AL,AL(D) SUB AL,AL5.下列指令执行后总是使CF=0,OF=0的是()。

(A) AND(B) NEG(C) NOT(D) INC6.完成同指令XCHG AX,BX相同功能的指令或指令序列是()。

(A) MOV AX,BX(B) MOV BX,AX(C) PUSH AXPOP BX(D) MOV CX,AXMOV AX,BXMOV BX,CX7.设AH=0,AL=06H,BL=09H,执行指令ADD AL,BLAAA之后,其结果应是()。

(A) AH=01,AL=05(B) AH=1 AL=15(C) AH=0 AL=0FH(D) AH=0 AL=058.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为()。

(A) OF=1,CF=0(B) OF=1,CF=1(C) OF=0,CF=0(D) OF=0,CF=19.在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学计算机科学与技术二学位《80X86汇编语言程序设计》试卷样例考试时间:2011年7月2日(第19周周六)下午14:30-17:00考试地点:西十二教学楼(S402-0904,S403-0905,S404-0906)班级学号姓名一、单项选择填空:(共10 分,每小题1 分)(1) 指令“MOV AX, ES:[BP]”中的源操作数在当前_________中。

(B)A. 数据段B. 附加数据段C. 堆栈段D. 代码段(2) 将AL中的无符号数压入堆栈,下面的方法不正确的是_________。

(A)(A) CBWPUSH AX(B) MOV AH,0PUSH AX(C) MOVZX AX, ALPUSH AX(D) XOR AH, AHPUSH AX(3) 只有寄存器_________能作基址和变址寄存器。

(C)(A) AX、BX、CX、DX(B) SI、DI、BP、SP(C) BX、SI、DI、BP(D) AX、CX、SI、DI(4) 两负数相加,结果为正,则标志位_________均为1.(D)(A) ZF、SF、CF、DF(B) ZF、CF、DF(C) SF、CF、OF(D) CF、OF(5) 指令"ADD [BX], 2"的错误原因为________.(B)(A) 源操作数和目的操作数不能同时为存贮器操作数.(B) 两个操作数类型模糊(C) 源操作数不能为立即方式(D) BX不能用于寄存器间接方式(6) 已知源操作数在堆栈段,语句“MOV AX,[BP+BX]存在语法错误,现改正为以下四种形式,但只有________是正确的。

(C)(A) MOV AX,SS:[BP+BX](B) MOV WORD PTR [DI],[BP](C) MOV AX,SS:[BX+SI] (当基址寄存器BR=BX时,系统默认操作数在DS中)(D) MOV AX,[BX+DI] (当基址寄存器BR=BP时,系统默认操作数在SS中)(7) 设V AR 为字变量, A为符号常量,下面四个语句中有一个错误的,这个错误语句是________.(C)(A) MOV V AR , A (B) MOV AX , V AR(C) MOV A , AX (D) MOV AX, A(8) 在使用除法指令作字除法时,被除数应放在寄存器________中。

(C)(A) BX和AX(B) CX和AX(C) DX和AX(D) AX(9) 在下列数据段中,(A+2)和TT的值各为________。

(B)DATA SEGMENTA DW 10,20,30TT =$-AB DB 2 DUP(0)DATA ENDS(A) 30,6 (B) 20,6(C) 30,3 (D) 20,3(10) 已知(AX)=a,(BX)=b,a、b均为无符号数,请选择合适的转移指令,使得(AX)>(BX)时转L处执行。

(A)CMP AX,BX_______ L(A) JA (B) JB(C) JG (D) JL二、填空:(共10 分,每空1 分)(1) 若(AX)=1234H,则(AL)= 34H 。

(2) 在语句INC BYTE PTR [BP]中,操作数使用的段寄存器是SS 。

(3) 举出一个目的操作数使用变址寻址方式的指令语句例子MOV 2[SI],AX 。

(4) 写出一条指令语句,其中一个操作数必须是CS寄存器MOV AX,CS 。

(5) 地址表达式中出现的变量或标号,均是取它们的偏移地址(或EA) 参加运算。

(6) CPU中IP(或EIP、指令指示器) 寄存器的内容会被平时作业编写的程序中的任何一条指令所修改。

(7) 列出4种能修改SP寄存器内容的指令PUSH POP PUSHA POPA 。

(还有PUSHAD、POPAD、PUSHF、POPF、PUSHFD、POPFD、CALL、RET等,写MOV的话要写完全,如MOV SP, AX)三、改错,不必说明错误原因:(共10分,每题1 分)(1) MOV DX,[DX] -> MOV DX, [BX](2) AND BL,CX -> AND BX, CX(3) ADD AX,IP-> ADD AX, BP(4) CMP [EBX],0 -> CMP BYTE PTR [EBX], 0(5) MOV [BX+BP+5],AX -> MOV [BX+SI+5],AX(6) PUSH CH -> PUSH CX(7) IN AL,100H -> IN AL, 10H(8) ADD 10,SP -> ADD SP, 10(9) MOV [EAX],BYTE PTR [SI] -> MOV AL, [SI] MOV [EAX], AL(10) MOV AX,(BX)-> MOV AX, [BX]四、简答:(共10分)(1)下列程序段的功能是什么?(3分)B: CMP AX,0JGE EXITNEG AXEXIT: ……求(AX)的绝对值→AX(2) 简单叙述CBW语句和MOVSX语句的相同点和不同点?(4分)相同点:对位数较少(或低精度)的有符号数进行符号扩展,变成位数较多(或高精度)的有符号数。

不同点:CBW指令不带操作数,隐含操作数在AL和AH中,即将AL中的符号扩展到AH中。

MOVSX是双操作数指令,OPD必须是16位或32位寄存器,且位数大于源操作数,源操作数不能是立即数。

(3) 简述“REPNZ SCASB”语句的功能。

(3分)根据方向标志位所指定的方向,CX所指定的串的长度,逐一搜索DS:[SI]所指向的串的每一个字节,直到找到等于(AL)的字节,或是串搜索完为止。

如果搜索到,设置ZF=1,否则ZF=0。

五、程序填空:(共10分,每空2分)(1)以下程序段的功能为:统计BUF中所含字符‘A’的个数→BL,请在程序空白处填入空缺的代码。

┇BUF DB ‘ABC 589TREAUBAATT’C EQU $-BUF (写17也算对)┇LEA SI,BUFMOV CX,CMOV BL,0P: CMP BYTE PTR [SI], ‘A’JNE LOPINC BLLOP: INC SILOOP P(2)以下程序段的功能为:计算无符号数A1÷B1,商放入C1,余数放入D1┇A1 DW 0F252HB1 DW 20HC1 DW ?D1 DW ?┇MOV AX,A1MOV DX,0DIV B1MOV C1,AXMOV D1, DX六、数据段定义如下,按要求回答问题。

(10分)DATA SEGMENT USE16BUFA DB 0dH,0aH,‘$’,0A DW 25,-1,BUFBAlen EQU $ - ABUFB DB ‘BUFB’,2 DUP (Alen ,2 DUP(77H))B DW $ - A, 3DATA ENDS1、以字节为单位画出它们在存储单元中的存放形式,在图中标明各变量的起始位置。

(7分)BUFAABUFBB2、执行下列语句后,AL, BX, CX寄存器的值是多少(3分)MOV AL, BUFA+1LEA BX, BUFA+2MOV CX, Alen(AL)=0AH (BX)=02H (CX)=06H七、编写程序段(不要求完整程序):(10分)(1)已知数据段中有语句“XY DD 25637”,请写出实现(XY)*88/12+10 → ESI的程序段(注:不考虑溢出)(6分) MOV EAX, XYMOV EBX, 88IMUL EBX ; EAX*EBX => EDX:EAXMOV EBX, 12IDIV EBX ; EDX:EAX/EBX = EAX(商)ADD EAX,10MOV ESI, EAX(2)使用两种方法实现交换AH与AL中的内容(4分)XCHG AH, AL MOV BH, ALMOV AL, AHMOV AH, BH八、编写程序(20分)设在以BUF为首址的字存储区中连续存储了多个有符号数(数据个数由编程者自己设定),试编写一完整的程序,按照下面的格式将其打印出来,数字之间以空格作为分隔:非负数:XXXXH,例如10H打印为0010H负数:-XXXXH,例如0C898H打印为-3768H。

要求:设计一个子程序PRINT、以上面指定的格式显示有符号数,参数传递采用自定的寄存器。

画出主程序和子程序的流程图含不少于4条重要注释的完整程序清单。

DATA SEGMENT USE16BUF DW 1, -10H, 2000H, 0, 30H, -50H, 0FFFFHNUM EQU ($-BUF)/2PLUS DB 4 DUP(?), 'H', ' ', '$'MINUS DB '-', 4 DUP(?), 'H', ' ', '$'TAB DB '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX,DATAMOV DS,AXLEA BX, BUFMOV CX, NUM ;初始化寄存器L1: MOV AX, [BX]CALL PRINTADD BX, 2LOOP L1 ;没有处理完,继续循环MOV AH,4CHINT 21HPRINT PROCPUSH BX ;保护现场CMP AX, 0JGE P0NEG AXLEA SI, MINUS+1LEA DI, MINUS ;处理负数JMP P1P0: LEA SI, PLUSLEA DI, PLUS ;处理非负数P1: MOV BL, AHSHR BL, 4MOV DL, TAB[BX]MOV BYTE PTR [SI], DL ;最高位MOV BL, AHAND BL, 0FHMOV DL, TAB[BX]MOV BYTE PTR [SI+1], DL ;次高位MOV BL, ALSHR BL, 4MOV DL, TAB[BX]MOV BYTE PTR [SI+2], DL ;次低位MOV BL, ALAND BL, 0FHMOV DL, TAB[BX]MOV BYTE PTR [SI+3], DL ;最低位MOV AH, 9MOV DX, DIINT 21HPOP BX ;恢复现场RETPRINT ENDPCODE ENDSEND BEGIN11 / 11。

相关文档
最新文档