湖南工业大学汇编语言模拟试题1
汇编语言期末考试试题及答案

汇编语言模拟试题及答案一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分)1.指令JMP FAR PTR DONE属于参考答案为:CA.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址[解析]略2.下列叙述正确的是参考答案为:CA.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令[解析]对于无符号数和有符号数的比较都采用CMP指令;CMPS指令是串比较指令;对两个无符号数的条件转移指令应是:JAE、JNB、JBE、JNA;对两个有符号数的条件转移指令应是:JGE、JNL、JLE、JNG。
3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:CA.12CSBHB.12B6BHC.12C59HD.12BFEH[解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为:首字单元的物理地址+(128-1)×2即 12ABH×10H+00ABH+(128-1)×2=12C59H。
4.在下列指令的表示中,不正确的是参考答案为:CA.MOV AL,[BX+SI]B.JMP SHORT DONIC.DEC [BX]D.MUL CL[解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如DEC BYTE PTR [BX] 或 DEC WORD PTR [BX]但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。
最新湖南工业大学C语言考试题目.doc

湖南工业大学C语言题目1、#include <conio.h> 改错#include <stdio.h>int arrmax( int arr[3][3]){ int i,j,max;max=arr[0][0];/************found************/for ( i=0; i<3; i++) 此处将1改为0,并且去掉等号for ( j=0; j<3; j++)if (max < arr[i][j]){max = arr[i][j];}return (max);}void main(){ int a[3][3]={4,4,34,7,3,12,5,6,5},i,j;/************found************/printf("The max is: %d\n",arrmax(a)); 将arrmax(a[0][0])改为arrmax(a)2、#define M 10#include<stdio.h>void main( ){ int i,a[100],t;//clrscr();for(i=0;i<M;i++)/**************found************/a[i]=i+1;/**************found************/for(i=0;i<M/2;i++)a[M-i-1]=a[i];for(i=0;i<M;i++)printf("%5d",a[i]);printf("\n");}3、#include <conio.h> 编辑#include <stdio.h>int fun(int m){/***********begin***********/int a1,a2,a3,s;a1=m/100;a2=m%100/10;a3=m%10;s=a1+a2+a3;return(s);/************end************/}void main(){ int m,s;//clrscr();printf("Enter m :\n");scanf("%d",&m);s=fun(m);printf("Result is: %d\n",s);4、#include <conio.h> 改错#include <stdio.h>main(){ int a[10]={10,4,2,7,3,12,5,34,5,9},i,s;clrscr();s = 0;/************found************/for ( i=0; i<10; i++) 去掉等号if (a[i] % 2 == 0)/************found************/s = s + a[i]; 将i改为a[i] printf("The result is: %d\n", s);5、#include <stdio.h> 填空#include <conio.h>void main( ){int num,k;//clrscr() ;/************found************/k=0; 给k赋值printf("Please enter a number:") ;scanf("%d",&num) ;do{/************found************/k=k+num%10 ; num%10可求出num的各位 num/=10;} while(num) ;printf("\n%d\n",k) ;}6、#include <conio.h> 改错#include <stdlib.h>#include <math.h>void main(){ int i,j,x,p;//clrscr();x=1;/************found************/j=12;while(j>1) 去掉等号{ p=(x+1)*2;/************found************/x=p;j--;}printf("total is %d\n",p);7、#include "stdio.h" 改错void main(){ long int f[20]={1,1};int i;//clrscr();/**************found************/f[0]=1;f[1]=1; 赋初值for(i=0;i<20;i++){f[i+2]=f[i]+f[i+1]; 保证前面两个数要输出,所以要这样改/**************found************/if(i%5==0) printf("\n"); i%5==0保证一行5个数输出printf("%8ld",f[i]);}printf("\n");}8、#include <stdio.h> 编辑#include <math.h>#include <stdlib.h>double fun(double x){/***********begin***********/int q;double n,t,s;n=1;s=0;t=1;q=1;while(fabs(t)>=x){s=s+t;n=n+2;q=-q;t=q/n;}return s;/***********end***********/}void main(){double x,sum;printf("Enter x:\n");scanf("%lf",&x);sum=fun(x);printf("sum=%.4f\n",sum)NONO( );}9、#include <conio.h> 改错#include <stdio.h>int max;fun ( int arr[],int n ){ int pos,i;max = arr[0];pos = 0;for ( i=1; i<n; i++)if (max <arr[i]){max = arr[i];/************found************/pos= i;}return (pos);}void main(){int a[10]={1,4,2,7,3,12,5,34,5,9},n;//clrscr();/************found************/n = fun(a,10);printf("The max is: %d ,pos is: %d\n", max , n); }#include "math.h"#include "conio.h"#include "stdlib.h"void main(){ int m=6,n=45,t,i,temp;/***********begin***********/temp=n*m;while(m!=0){i=n%m;n=m;m=i;t=temp/n; 注:此时最大公约数是n,要通过此程序会求最大公约数} 最小公倍数等于两个数的乘积除以它们的最大公约数 /************end************/printf("The Lowest Common Multiple of %d and %d is %d\n",m,n,t); NONO(m,n,t);}11、#include <math.h> 填空#include <conio.h>#include <stdio.h>main(){int m,n,i,t;long int s=0;//clrscr();scanf("%d,%d",&m,&n);if( m>n ){ t=m; m=n; n=t;}/************found************/for (i=m;i<=n;i++)if ( i%3==0 && i%7==0 )s += i;/************found************/printf("Sum is : %ld\n",s );}void main(){ long s, t, sl=1;int d;//clrscr();printf("\nPlease enter s:"); scanf("%ld", &s);t = 0;while ( s > 0){ d = s%10;/************found************/if (d%2==0) 判断余数{ t=d * sl + t;sl *= 10;}/************found************/s =s/10; 遇到奇数退出寻环后的处理 }printf("The result is: %ld\n", t);}13、#include "stdio.h" 填空#include "string.h"void main(){ char s[10]; int i;long int n;//clrscr();/**************found************/n=0; 赋初值scanf("%s",s);for(i=0;i<strlen(s);i++)/**************found************/n=n*10+s[i]-'0'; 将字符串转换成整数的方法printf("n=%ld\n",n);}14、#include "stdio.h" 编辑#include "math.h"#include "stdlib.h"double fun(int n){/***********begin***********/ double y=1.0;int i;for(i=2;i<=n;i++)y+=1.0/(i*i);return (y)/************end************/ }void main(){ double s;int n;//clrscr();printf("Enter s:\n");scanf("%d",&n);s=fun(n);printf("s= %.3f\n",s);NONO( );}15、一样的….16、#include "stdio.h" 编辑 #include "math.h"#include "stdlib.h"double fun(double x){/***********begin***********/ 跟第8题一样这个…我也不知道了/***********end***********/}void main(){double x,sum;printf("Enter x:\n");scanf("%lf",&x);sum=fun(x);printf("sum=%.4f\n",sum);17、#include <conio.h> 编辑#include <stdio.h>int fun(int a[3][3]){/***********begin***********/int max=a[0][0];int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(max<a[i][j]){max=a[i][j];}/************end************/}void main(){ int a[3][3]={1,2,3,4,9,5,7,8,6};int i,j,max;// clrscr();printf("array is:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%5d",a[i][j]);printf("\n");}max=fun(a);printf("Result is: %d\n",max);}18、#include <conio.h> 改错#include <stdio.h>void main(){ int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; //clrscr();max = min = a[0][0];for ( i=0; i<3; i++)/************found************/for ( j=0; j<3; j++) 将1改为0{ if ( max < a[i][j] )max = a[i][j];/************found************/if (min >a[i][j]) 小于号改为大于号 min = a[i][j];}printf("The max is: %d\n", max);printf("The min is: %d\n", min);}19、#include <conio.h> 填空#include <stdio.h>double average( int arr[ ], int n ){ int k=0,i; double s;s = 0;for ( i=0 ;i<n; i++)/************found************/if (arr[i] % 2 ==1) 是恒等号{ s = s + arr[i]; k++; }return (s/k) ;}void main(){int a[12]={10,4,2,7,3,12,5,34,5,9,21,18};double s;// clrscr();/************found************/s = average(a,12); 和第一题结果类似printf("The result is: %.2f\n", s);}20、#include "stdio.h" 编辑#include "math.h"#include "conio.h"#include "stdlib.h"void main(){ int m=76,n=40,t,i;/***********begin***********/i=n*m;int r;while(n!=0){r=m%n;m=n;n=r;}t=m;/************end************/printf("The Highest Common Divisor of %d and %d is %d\n",m,n,t); NONO(m,n,t);}NONO( int m,int n,int t){ FILE *f;f=fopen("D:\\exam\\01700311\\PROGOUT.DAT","w");fprintf(f,"Maximal Common Divisor Of %d and %d is %d\n",m,n,t); fclose(f);}21、#include <math.h> 填空#include <conio.h>#include <stdio.h>long int fun(int x){long int s=1; int i;for (i=1;i<=x;i++)s*=i;/************found************/return (s);}void main(){ long int m=12,n=2,s1,s2,s3;//clrscr();s1=fun(m);s2=fun(n);s3=fun(m-n);/************found************/printf("Cmn is : %ld",s1/(s2*s3));}22、#include "stdio.h"编辑#include "math.h"#include "conio.h"#include "stdlib.h"void main(){ int m=1234,a,b,c,d;/***********begin***********/a=m%10;b=m%100/10; 这里补充的4行是求四位数各个数位的表示方法c=m%1000/100;d=m/1000;/************end************/printf("m=%d,%d %d %d %d\n",m,a,b,c,d);NONO(m,a,b,c,d);}NONO( x,a,b,c,d )int x,a,b,c,d;{ FILE *f;f=fopen("D:\\exam\\01701219\\PROGOUT.DAT","w");fprintf(f,"x=%d: %3d%3d%3d%3d####\n",x,a,b,c,d);fclose(f);}23、 #include <math.h>#include <conio.h>#include <stdio.h>void main(){ int a[10]={2,3,5,7,8,9,10,11,12,13},i,j,k,count;// clrscr();count = 0;for ( i=0; i<10; i++){k=sqrt(a[i]);for ( j=2; j<=k; j++)if (a[i] % j == 0)break;/************found************/if(j>k)count++;}/************found************/printf("prime number(s) is(are): %d",count);}24:求一维数组a中值为奇数的元素之和。
汇编语言在线测试及答案(1)

汇编语言在线测试及答案(1)习题一1.在计算机内部,计算机能够直接执行的程序语言是。
A.汇编语言B.C++语言C.机器语言D.高级语言2.在堆栈段中,存放栈顶地址的寄存器是。
A.IP B.SP C.BX D.BP3.指令指针寄存器IP用来存放代码段中的偏移地址。
在程序运行的过程中,它始终指向。
A.下一条指令的首地址B.下一条指令的地址C.当前指令的首地址D.当前指令的地址4.编译程序的功能是。
A.检查源程序中的语法错误和逻辑错误B.将源程序编译成目标程序C.改正源程序中的语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。
A.目标程序B.源程序C.可执行程序D.汇编程序6.计算机中用来存储程序、数据等信息的记忆装置是。
A.控制器B.运算器C.CPUD.存储器7.在宏汇编中,源程序必须通过____编译_______生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。
习题二1 当 SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理地址是()A.30100H B.30098H C.30102H D.300FEH2 设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是()A.-82、-126、-2 B.-2、-125、126C.-2、-126、-125 D.-82、-125、1253 标志寄存器中属于控制标志位的是()A. DF,OF,SFB. DF,IF,TFC. OF,CF,PFD. AF,OF,SF4 设(AX)=4544H,在执行指令”SUB AH,AL”之后,()A.CF=0,OF=0 B.CF=0,OF=1C.CF=1,OF=0 D.CF=1,OF=15 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为______19____________。
汇编语言试题及答案

汇编语言试题及答案一、选择题1. 汇编语言是一种:A. 高级语言B. 低级语言C. 机器语言D. 标记语言答案:B2. 汇编程序的编译过程包括:A. 预处理、编译、链接B. 编译、链接、运行C. 编译、预处理、链接D. 链接、编译、预处理答案:A3. 下列哪项是汇编语言的指令:A. MOV AX, BXB. int main()C. print "Hello, World!"D. System.out.println("Hello, World!");答案:A二、填空题4. 在汇编语言中,指令______用于将数据从内存传送到寄存器。
答案:MOV5. 汇编语言中的______指令用于实现无条件跳转。
答案:JMP6. 汇编语言中的______指令用于实现条件跳转。
答案:JZ 或 JE(零标志跳转)三、简答题7. 简述汇编语言的特点。
答案:汇编语言是一种低级语言,它非常接近机器语言,通常用于编写硬件操作和系统软件。
其特点是执行效率高,但编程复杂度高,可读性和可移植性较差。
8. 汇编语言与机器语言有何区别?答案:汇编语言是一种符号化的机器语言,它使用助记符代替机器语言中的二进制代码,更易于人类理解和编写。
机器语言则是计算机硬件直接执行的指令集,通常以二进制形式存在。
四、编程题9. 编写一段汇编语言程序,实现将AX寄存器的值加1。
答案:INC AX10. 编写一段汇编语言程序,实现将内存地址[100]处的值与BX寄存器的值相加,并将结果存回内存地址[100]。
答案:MOV AX, [100]ADD AX, BXMOV [100], AX五、论述题11. 论述汇编语言在现代计算机系统中的作用和局限性。
答案:汇编语言在现代计算机系统中主要用于系统底层开发、硬件驱动编写、嵌入式系统编程等领域。
其作用在于能够直接控制硬件,实现高效的资源利用。
然而,由于其复杂度高、可读性差、可移植性低,它在高级应用开发中的使用受到限制。
汇编语言模拟题答案-(3)

第3章自测练习一、选择题(四选一)1.表示一条处理器指令所在存储单元的符号地址是 C。
A变量 B常量 C标号 D偏移量2.汇编语言中的变量有多种类型属性,但错误的类型是B 。
A字节型byte B字符型charC字型word D双字型dword3.执行mov bx,seg var指令,BX得到变量var的B 。
A物理地址 B段地址 C偏移地址 D内容4.MASM语句中,采用C 分隔标号和指令。
A逗号 B分号 C冒号 D空格5.欲设定从偏移地址100H开始安排程序,可使用A 伪指令。
Aorg 100h Bstart=100hCstart db 100h Dstart equ 100h6.与“mov bx,offset var”指令等效的指令是 D 。
A movbx,varB 1dsbx,varCles bx,var D1ea bx,var.7.下条语句buf db l0 dup(3 dup(?,10),3,10)汇编后,变量buf占有的存储单元字节数是B 。
A 100B 80C 40D 208.数据定义语句“numl dw(12 or 6 and 2) ge 0eh”,定义的num1单元的内容是 B。
A 0B 0FFFFHC 1D 0FFH9.要求将A、B两个字符的ASCII码41H和42H顺序存放在连续两个字节存储单元中,可选用的语句是 A 。
A db`AB'B dw `AB'C db 0ABHD dw 0ABH10.在汇编语言程序中,对END语句叙述正确的是C 。
AEND语句是一可执行语句BEND语句表示程序执行到此结束CEND语句表示源程序到此结束DEND语句在汇编后要产生机器码11.下面的数据传送指令中,错误的操作是D。
Amov ss:[bx+di],byte ptr 10h Bmov dx,l000hCmov word ptr[bx],1000h Dmov ds,2000h12.下面指令执行后,变量dab中的内容是C 。
汇编语言程序设计-模拟题

汇编语言程序设计模拟题一、单选题1.下列表示中,不是合法的立即数是().A.DFHB.98C.21CHD.0526[答案]:A2.(BX)=637DH,(SI)=2A9BH,位移量=7237H,直接寻址方式的有效地址是().A.8E18HB.D5B4HC.637DHD.7237H[答案]:D3.计算4321H+62A0H之后,根据结果设置的标志位SF,ZF,CF,OF的值为().A.0000B.1001C.0010D.0110[答案]:B4.(DX)=00B9H,(CL)=3,(CF)=1,指令SHRDX,1执行后DX中的值为().A.0072HB.05C8HC.0017HD.005CH[答案]:D5.在汇编语言程序中,对END语句的叙述正确的是().A.END语句是一可执行语句B.END语句表示程序执行到此结束C.END语句表示源程序到此结束D.005CHD.END语句在汇编后要产生机器码[答案]:C6.以下寄存器中,不能用作间接寻址的寄存器是().A.BXB.SIC.BPD.DX[答案]:D7.设DS=8225H,DI=3942H,指令INCBYTEPTR[DI]操作数的物理地址是().A.85B92HB.86192HC.BB690HD.12169H[答案]:A8.下面指令执行后,有可能改变AL寄存器内容的指令是().A.TESTAL,02HB.ORAL,ALC.CMPAL,BLD.ANDAL,BL[答案]:D9.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是().A.MOV AL,00HB.ANDAL,00HC.XORAL,ALD.SUBAL,AL[答案]:A10.假设(AX)=4652H,(DX)=0234H,依次执行SUBAX,0F0F0H和SBBDX,0F0F0H两条指令后,寄存器AX和DX的值分别为().A.5562H和1142HB.5562H和1143HC.5562H和1144HD.4652H和0234H[答案]:B11.执行指令moval,12h,movbl,12h,movdl,02h,cmpxchgbl,dl后,al的值为().A.12HB.02HC.1HD.0H[答案]:B12.V AR是数据段中定义的变量,指令MOV AX,[SI+V AR]源操作数的寻址方式是().A.寄存器寻址B.寄存器间接寻址C.寄存器相对寻址D.基址变址寻址[答案]:C13.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是().A.名字项B.操作项C.操作数项D.注释项[答案]:B14.当一个带符号数大于20H时程序转移,需选用的条件转移指令是().A.JLB.JNLEC.JNLD.JLE[答案]:B15.连续完成下面指令,moveax,12345678h和bteax,5后()标志位的第5位变成了1.A.CFB.CFC.ZFD.OF[答案]:A二、判断题1.TurboC嵌入式汇编方式的注释使用汇编的注释符.[答案]:错误2.重复汇编伪指令FORC按参数个数重复.[答案]:错误3.movax,[ebx]是错误的指令.[答案]:错误4.00FFH与5555H相与运算后得00FFH.[答案]:错误5.在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址和3015:002A不一样. [答案]:错误6.SF记录运算结果的符号,结果为正是置1.[答案]:错误7.语句“ADCBYTEPTR[BX],BYTEPTR[SI]”语法正确.[答案]:错误8.注释项用于说明程序段或是一条和几条指令的功能,一般用分号表示注释的开始. [答案]:正确9.汇编语言是用指令的助记符.符号地址.标号等符号书写程序的语言.[答案]:正确10.伪指令告诉CPU要执行的操作,在程序运行时执行.[答案]:错误10.8086用于寻址外设端口的地址线为16条,所以端口最多为16个.[答案]:错误11.在上电或复位后,32位80x86CPU首先初始化为实地址方式.[答案]:正确12.在1MB的存储器里,每个存储单元都有一个唯一的20位物理地址.[答案]:正确13.运算结果为0时ZF置0.[答案]:错误14.指令MOVDL,[DX]错误.[答案]:错误15.需独立运行的程序必须包含一个代码段.[答案]:正确。
汇编语言习题 (1)

第1章自测练习一、选择题(四选一)1.某个加法运算结果使标志ZF=1,则标志SF为。
A 0B 1C 不改变原来的状态D 不确定2.可以为存储器操作数提供偏移地址的寄存器组是。
A AX、BX、CX、DXB BX、BP、SI、DIC SP、IP、BP、DXD CS、DS、ES、SS3.8086/8088确定下一条执行指令物理地址的计算表达式为。
A DS× 16+EAB ES× 16+EAC SS×l6+SPD CS×l6+IP4.某系列微机对存储器分段,如果每个段最多的字存储单元(16位二进制)是32K,那么表示段内字节单元偏移地址的二进制位数应是位。
A 14B 15C 16D 205.十进制数-100的8位二进制数的补码为。
A 10011011B 01100100C 10011101D 100111006.下列各个8位二进制数的补码中,绝对值最大的是。
A 10001000B 11111110C 00000100D 000000017.16位有符号数的补码所表示的十进制数的范围是。
A -32767~+32768B -32768~+32767C -65535~+65536D 0~655358.对数值83A7H作逻辑非运算后的结果是——·A 83A8H B、73A8H C、7C59H D、7C58H9.指令“mov cx,[bp+16]”的源操作数采用的段寄存器是。
A CSB SSC DSD ES10.指向程序堆栈区的段寄存器是。
A CSB SSC DSD ES11.有效地址是指。
A 存储器操作数的物理地址B 存储器操作数的段地址C 存储器操作数的偏移地址D 立即数的偏移地址12.寄存器间接寻址方式中,操作数在中。
A 通用寄存器B 段寄存器C 主存单元D 堆栈13.指令“mov ax,es:[bx][si]”源操作数的物理地址是。
A 16×CS+BX+SIB 16×SS+BX+SIC 16×DS+BX+SID 16×ES+BX+S114.算术运算类指令的寻址和转移类指令的寻址,两者的不同之处是。
汇编语言期末考试试题及答案

汇编语言模拟试题及答案一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分)1.指令JMP FAR PTR DONE属于参考答案为:CA.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址[解析]略2.下列叙述正确的是参考答案为:CA.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB 指令[解析]对于无符号数和有符号数的比较都采用CMP指令;CMPS指令是串比较指令;对两个无符号数的条件转移指令应是:JAE、JNB、JBE、JNA;对两个有符号数的条件转移指令应是:JGE、JNL、JLE、JNG。
3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:CA.12CSBHB.12B6BHC.12C59HD.12BFEH[解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为:首字单元的物理地址+(128-1)×2即 12ABH×10H+00ABH+(128-1)×2=12C59H。
4.在下列指令的表示中,不正确的是参考答案为:CA.MOV AL,[BX+SI]B.JMP SHORT DONIC.DEC [BX]D.MUL CL[解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如DEC BYTE PTR [BX] 或 DEC WORD PTR [BX]但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖
南
工
业
大
学
考
试
试
卷
纸
系
(
院
)
课
程
名
称
班
级
姓
名
学
号
密
封
线
课程名称:
适用专业年级: 考试时间100分钟
题号 一 二 三 四 五 六 七 八 九 十 总分
统分人
签
名
题分 30 30 5 10 5 10 10 100
得分
考生注意事项:1、本试卷共 2 页,试卷如有缺页或破损,请立即举手报告以便更换。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。(答案请写在
密封线内和纸卷正面,否则不记分)
一、填空(每题1分,共30分)
1. 以下()源操作数的寻址方式是立即寻址方式:
A..AND AX,BX B.MOV AX, BUF C.MOV AX,DSEG D.ADD AX,[SI]
2. 操作数所在的当前段是DS,选择基址变址寻址时使用哪个寄存器放基址:
A. BX B.BP C.DX D.AX
3.下列指令没有错误的是:
A.POP CS B. MOV SP,[BX]
C.MUL AX,10 D.INC SP,1
4.下列符号中,不合乎命名规则的是:
A.STAR 1 B. $STAR C.STAR.1 D. STAR
5. XOR BX,0889H是:
A. 将BX的 第1,3,7,10位取反;
B.将BX的 第0,3,7,11位取反;
C. 将BX的 第1,3,7,11位置1;
D. 将BX的 第1,3,7,10位置0;
6.8086/8088CPU在执行MOV DX,1300 /IN AL,DX指令时,是:
A.将1300号端口中的内容读到AL寄存器;
B.将立即数1300送DX,再从寄存器中读到AL寄存器;
C.将数据总线1300H内容读到AL寄存器;
D.将AL寄存器内容送1300端口.
7.没有默认指定寄存器AL/AX的指令是:
A.STOS B.LOOP C.XLAT D.IN
8.下列属于控制标志位的是:
A.AF B.OF C. ZF D. TF
9.在宏定义中可以用于求参数值的符号是:
A.& B. # C. % D.$
10.关于串操作重复前缀的执行条件正确的是:
A. REP的重复条件是CX等于0;
B. REPZ的重复条件是CX不等于0且 ZF不等于0;
C. REPNZ的重复条件是CX不等于0且 ZF不等于0;
D. REP的重复条件是CX不等于0且 ZF不等于0;
11.当使用DOS功能调用时,使用 存放功能号
A.AL B.AH C.DL D.DX
12.下列指令中没有语法错误的是:
A.XCHG DATA1,DATA2 B.ADD BYTE PTR[AX], 265H
C.MOV ES,DSEG D.OUT DX, AL
13.数据段定义如下,则哪个是正确的:
S1 DW 0,1,2,3,4,5
S2 DB ‘12345’
S3 DD 20 DUP(0)
A.TYPE S2=2 B.SIZE S3=80 C. LENGTH S3=1 D. TYPE S1=1
14.执行指令:MOV AH,0FFH
INC AH
则AH=
A.0 B.1 C.80H D.0FFH
15.下列指令中,在移动方向的最后一定补零的是:
A.ROL B.SAR C.SAL D.RCR
16.下面指令中为无符号数大于等于跳转的是:
A.JMP B.JO C.JGE D.JAE
17.如下程序是要找出在字符串STRING中是否有字符’G’,则使用的重复前缀是:
A. REPZ B. REPNZ C. REP D.不使用
CLD
LEA DI,ES:STRING
MOV AL,’G’
MOV CX,10
( ) SCASB
HLT
18.以下程序段执行后,能跳转到L2的是:
A. MOV AL,60H B. MOV BL,98H
CMP AL,6BH ADD BL,0FFH
JLE L2 JO L2
C. MOV BL,80H D. MOV AL,4BH
SUB BL,0FEH TEST AL,0FFH
JC L2 JNP L2
第 1 页 共 2 页
湖
南
工
业
大
学
考
试
试
卷
纸
系
(
院
)
课
程
名
称
班
级
姓
名
学
号
密
封
线
19采用DOS功能,从将中断矢量表中取中断矢量的功能号是: A.25H B. 35 H C.25 D.35 20.不可屏蔽中断引脚是: A.NMI B.RESET C. GND D.INTR 21.8086CPU中确定访问是内存还是输入输出端口的引脚是: A.RD^ B.WR^ C.M/IO^ D.DT/R^ 22.:8086总线周期是由几个时钟周期组成的。 A.0 B. 1 C. 2 D. 4 23.当需要选择存储一个字偶单元的引脚状态是: A.BHE^=0且A0=0 B. BHE^=0且A0=1 C. BHE^=1且A0=0 D. BHE^=1且A0=1 24.以下哪个引脚是可屏蔽中断允许访问的应答信号,低电平有效。 A.TEST^ B.INTA^ C. DEN^ D.BHE^ 25.以下不是80486微处理器工作模式的是: A.实地址工作模式 B.保护工作模式 C.虚拟8086工作模式 D.双工模式 26.层次化存储结构的最高层和最低层是: A.EPROM和内存 B.闪存和DROM C. 静态ROM和外存 D.双极型或氧化金属物型ROM 27.8086的中断系统中断向量表中最大可以容纳多少中断向量: A.64K B.64 C. 256 D.0FFFFH 28. 以下不是内存的分区结构中的是: A.基本内存区 B.扩展内存区 C. 高端内存区 D.寄存器组 29.目前与未处理器速度相匹配的存储器是。 A.ROM B.DRAM C. SRAM D.cache 30.设置串操作方向的标志位是: A.DF B.IF C. SF D.PF 二、填空题(每空2分,共30分) 1. 外存储器中的内容必须通过(1)才能读取。 2. 8086的外部中断分(2)和(3)两类。 3.汇编程序上机的过程是:用(4)编辑器编写扩展名为.ASM汇编源程序,用(5)命令汇编产
生扩展名为.OBJ的目标文件,用(6)命令生成扩展名为.EXE 可执行文件。
4.在DEBUG中,用(7)命令查看寄存器和标志位,用(8)查看存储单元,用(9)命令进行反
汇编。
5.一个基本的总线周期由(10)时钟周期或时钟状态组成。在(11)状态CPU往多路复用总线
上发出地址信息,在(12)状态后面可能插入TW等待周期,在两个总线周期之间可能插入(13)
周期。
6.如果已知中断号为n,则其中断向量IP:CS在中断向量表的(14)和(15)位置。
三、
定义一个数据段DSEG,要求:1.定义一个字符串STR‘I AM STUDING ASSEMBLY
LANGUAGE!$’。
2.字节类型变量XBB,值为:12,34,?
3.字型变量XWW值为:127,256,376
4.双字型变量XDD为1个单元的未知值。
5.变量XXBB,预留20个字。(5分)
四、定义一个名为DISP的宏,将任意16位通用数据寄存器内容逻辑左移任意位,结果仍存于
任意16位寄存器或存储单元。
(10分)
五、
定义一个名为INT60的过程,要求向屏幕输出一字符串。(5分)
六、
编写程序片段:如果状态端口号为12H,数据输出端口的端口号为13H,用查询方式,向输
出端口输出字(假设字已经准备好),状态字的最高位为1表示输出设备就绪。(10分)
七、
用题三的数据段编程,写出代码段:
1)将题三中的数据段中,XBB的第二个数左移4位,,将结果放在XXBB;
2) 输出‘I AM STUDING ASSEMBLY LANGUAGE!’
3)写出实参下的宏扩展。
要求调用题四,题五的宏和过程。(10分)
第 1 页 共 2 页
第 页 共 页 湖南工业大学考试试卷纸 系(院) 课程名称 班级 姓名 学号 密封线 第 页 共 页