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

合集下载

华中科技大学标准C语言程序设计及应用习题答案

华中科技大学标准C语言程序设计及应用习题答案

第二章一.选择题1.C2.B D3.A4.A5. D6.C7.D8.C9.A 10.D 11.B 12.D 13.C 14.D 15.A16.B 17.A 18.B 100011 001111二.判断题1.错2.错3.错4.错三.填空题1. B 662. n1=%d\nn2=%d\n3. 0四.计算1(1)x|y = 0x002f(2)x^y = 0x0026(3)x&y = 0x0009;(4)~x+~y = 0xffc6(5)x<<=3 0x0068(6)y>>=4 0x00022(1) 6(2)50(3) 1(4)–16(5) 1(6)203(1)0(2) 1(3) 1(4) 4(5)8(6) 14(1)12(2)0(3) 1(4)27(6) 6(7)24(8)27(9)–295(1)0(2) 1(3) 1(4)–3(5) 2五.程序分析题程序1b=20 a=3600程序2第三章一.填空题1.s=62.963.(1) scanf("%c",&c);(2) c-32 更好的答案:c-('a'-'A')2.1main(){int a,b;printf("please input a & b:");scanf("%d%d",&a,&b);printf("\nmax is %d\n",(a>b)?a:b);}2.2int max(int x,int y);main(){int a,b,c,max;printf("please input a & b & c:");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=c>max?c:max;printf("\nmax is %d\n",max);}2.3{int i=0,sum=0;while(i<=100){sum+=i;i++;}printf("1+2+3+......+100=%d\n",sum);}2.4main(){int i;int a=10,b=-3;int c;printf("%6d%6d",a,b);for(i=2;i<10;i++){c=3*b+a;printf("%6d",c);a=b;b=c;}printf("\n");}2.5main(){int i;while(1){printf("please input a data(0:exit):");scanf("%d",&i);if(i==0)break;if(i%2==0)printf("the data %d is a even number.\n",i);elseprintf("the data %d is a odd number.\n",i); }}2.6#include <stdio.h>main(){int i;int a=8,b=1;int sum=0;for(i=0;i<10;i++){b+=3;sum += a;a+=b;printf("a%8d b:%8d\n",a,b);}printf("The Sum Of Is:%d\n",sum);}2.7#include <stdio.h>main(){float x,y;printf("please input x:");scanf("%f",&x);if(x<1.0)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%f\n",y);}2.8#include <stdio.h>main(){long a,i,b,a1;while(1){printf("please input data(1-99999):");scanf("%ld",&a);printf("a:%ld\n",a);if(a<=0||a>=100000)break;i=0;a1=0;while(a!=0){b=a%10;printf("%8d",b);a/=10;i++;a1=a1*10+b;}printf("\n i:%ld a1:%ld\n",i,a1);}}2.9#include <stdio.h>#include <time.h>#include <stdlib.h>main(){int a,b,i,k=0;randomize();a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++){printf("please guess a number:");scanf("%d",&b);if(a>b){k++;printf("\n%d:Smaller,guess again!\n",k);}else if(a<b){k++;printf("\n%d:Bigger,guess again!\n",k);}else{printf("\nYou guess right,congraturation!") ;printf("\nYou have guessed %d times",k);break;}}if(k==20)printf("\nsorry,you failed!");}2.10#include <stdio.h>main(){int a,b,c;int num;for(a=0;a<10;a++){for(b=0;b<10;b++){for(c=1;c<10;c++){num=a*100+b*10+c;if((num%3==0)&&(a==5||b==5||c==5))printf("%8d",num);}}}printf("\n\n\n");}2.11#include <stdio.h>main(){int i;int a,b;printf("please input a,b:");scanf("%d%d",&a,&b);for(i=a<b?a:b;i>0;i--){if(a%i==0&&b%i==0){printf("The max=%d",i);break;}}for(i=a>b?a:b;i>0;i++){if(i%a==0&&i%b==0){printf("\nThe min=%d",i);break;}}2.12#include <stdio.h>main(){int a,k=0;printf("please input data:");scanf("%d",&a);while(a%2==0){a=a/2;k++;}printf("\nthe number of factor(2) is %d",k); }2.13main(){long i,t=1;long sum=0;for(i=1;i<=10;i++){t*=i;sum+=t;printf("%ld!=%ld\n",i,t);}printf("sum:%ld\n",sum);}2.14#include <stdio.h>void main(){int i,x=0;for(i=9;i>=1;i--){x=2*(x+1);}printf("The first day:%d",x);}2.15#include <stdio.h>#define PI 3.141593main(){float r,h;float v;printf("please input r,h:");scanf("%f%f",&r,&h);v=1.0/3*PI*r*r*h;printf("V=%.2f",v);}2.16#include<stdio.h>#include<math.h>main(){long int sn=0;long int m=0,t=0;int a,n,i;printf("please input a n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){m=m*10+a;sn+=m;}printf("a+aa+aaa+...+aa...a=%ld\n\n",sn); }2.17#include <stdio.h>main(){int k;printf("please input k:");do{scanf("%d",&k);if(k>=0&&k<=6)break;}while(1);switch(k){case 0:printf("Sunday.\n");break;case 1:printf("Monday.\n");break;case 2:printf("Tuesday.\n");break;case 3:printf("Wednesday.\n");break;case 4:printf("Thursday.\n");break;case 5:printf("Friday.\n");break;case 6:printf("Saturday.\n");break;}}2.18#include <stdio.h>main(){int i;double x,a,b=1,sum=1;printf("please input x:");scanf("%lf",&x);a=x;for(i=1;a/b>=1e-6;i++){sum=sum+a/b;a=a*x;b=(i+1)*b;}printf("\nsum=%lf",sum);}2.19#include <stdio.h>#include <math.h>main(){float a,x1,x2;printf("input a:");scanf("%f",&a);x1=1.0;while(1){x2=1.0/2*(x1+a/x1);if(fabs(x2-x1)<1e-5)break;x1=x2;}printf("sqrt(a)=%f",x2);}第四章写出下列程序输出结果1.no 1 a=1no 1 a=0no 1 a=1no 1 a=02.a=0 b=0 c=0a=1 b=0 c=0a=2 b=0 c=03.main:x=5,y=1,n=1func:x=6,y=21,n=11main:x=5,y=1,n=11func:x=8,y=31,n=21第五章1.D2.D3.C4.65.CDABC6.(1)j+=2(2)a[i]<a[j]7.(1)s[i++]!='\0'(2)s[i-1]8.D9.B10.6(同题4)11.s[i]>='0'&&s[i]<='9'12. (1)'\0' (2)str1[i]-str2[i]5.1#include<stdio.h>int fun();int fun(){int a[3][3],sum;int i,j;sum=0;/*error*/for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);/*error*/}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}void main(){fun();}5.2#include <stdio.h>void main( void ){float Num[10];float Input,GetNum[11];int i,j;float a=6;for(i=0; i<10; i++){Num[i]=a;a=a+7.5;}Loop1: printf("Please input a Number(0-80) Input=");scanf("%f",&Input);if((Input<0)||(Input>70)==1)goto Loop1;for(i=0; i<10; i++ ){if(Input<Num[i])goto Loop2;}Loop2: for(j=0; j<i; j++ )GetNum[j]=Num[j];GetNum[j]=Input;for(j=i; j<=10; j++,i++)GetNum[j+1]=Num[i];for(j=0; j<11; j++ )printf("%3.3f ",GetNum[j]);}5.3#include "stdio.h"#include "stdlib.h"main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9;int a[3];int i;for(;;){for (i=0;i<3;i++){a[i]=rand()%3;}while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/{a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/a2=a[1]+1;a3=a[2]+1;a4=a1+3;a5=a2+3;a6=a3+3;a7=a1+6;a8=a2+6;a9=a3+6;/* make sure that each line and each row is made up with three members in different group.*//* such as: a9 a1 a5a2 a6 a7a4 a8 a3 */if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))) {printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3);return;}}}}5.4#include <stdio.h>void main(void){char input1[100],input2[100],input3[100];int i,Eng=0,eng=0,num=0,blank=0,other=0;printf("Input 3 rows of character,each row don't exceed 80 characters:\n");gets(input1);printf("The second row:\n");gets(input2);printf("The third row:\n");gets(input3);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop1;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)Eng++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)eng++;else if(('0'<=input1[i])&&(input1[i]<='9')==1)num++;else if(input1[i]==32)blank++;else other++;}/*test the second row*/Loop1: for(i=0; i<100; i++){if(input2[i]=='\0')goto Loop2;else if(('A'<=input2[i])&&(input2[i]<='Z')==1)Eng++;else if(('a'<=input2[i])&&(input2[i]<='z')==1)eng++;else if(('0'<=input2[i])&&(input2[i]<='9')==1)num++;else if(input2[i]==32)blank++;else other++;}/*test the third row*/Loop2: for(i=0; i<100; i++){if(input3[i]=='\0')goto Loop3;else if(('A'<=input3[i])&&(input3[i]<='Z')==1)Eng++;else if(('a'<=input3[i])&&(input3[i]<='z')==1)eng++;else if(('0'<=input3[i])&&(input3[i]<='9')==1)num++;else if(input3[i]==32)blank++;else other++;}Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOther characters:%d\n",Eng,eng,num,blank,other);}5.5#include <stdio.h>void main(void)char str1[80],str2[40];int i,j,k;/*Input two string*/printf("Please input the first string\n str1=");gets(str1);printf("Please input the second string\n str2=");gets(str2);/*Get the end of str1*/for(i=0; i<80; i++){if(str1[i]=='\0')break;}/*Copy str2 to str1*/for(j=i,k=0; str2[k]!='\0';k++,j++)str1[j]=str2[k];str1[i+k]='\0';puts(str1);}5.6#include <stdio.h>struct student{char name[20];int score;}stu[5],stu1;void main(void){ int i,j;printf("Input student's score and name(5),seperate using the character of ',' :\n");for(i=0; i<5; i++)scanf("%d,%s",&stu[i].score,&stu[i].name);/*sorting*/for(i=0; i<5; i++)for(j=0; j<4-i; j++)if(stu[j].score>stu[j+1].score){stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}printf("After sotred,score and name:\n");for(i=0; i<5; i++)printf("%d,%s\n",stu[i].score,stu[i].name); }5.7#include<stdio.h>main(){ int a[3][3],i,j,m,n,o,p;printf("Please input a 3*3 shuzu:\n");for (i=0;i<=2;i++)for (j=0;j<=2;j++)scanf("%d",&a[i][j]);for (i=0;i<=2;i++){ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];n=(m>a[i][2])? m: a[i][2];}for (j=0;j<=2;j++){ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];p=(o<a[2][j])? o: a[2][j];}if (n==p)printf("Andian is %d\\n",p);elseprintf("There is no andian.\\n"); }5.8#include <stdio.h>void main(void){ int a[4][3],b[3][4],i,j;for(i=0; i<4; i++){ for(j=0; j<3; j++)scanf("%d",&a[i][j]);}for(i=0; i<4; i++){printf("\n");for(j=0; j<3; j++)printf("%5d ",a[i][j]);}for(i=0; i<4; i++){for(j=0; j<3; j++)b[j][i]=a[i][j];}printf("\n");for(i=0; i<3; i++){printf("\n");for(j=0; j<4; j++)printf("%5d ",b[i][j]);}5.9#include <stdio.h>#include<math.h>void main(void){ char str[6];int i,j=0,m=0,n=0;gets(str);while(str[j]!='\0') j++;for(i=j-1;i>=0;i--){m=(str[i]-'0')*(pow(8,j-i-1));n+=m;}printf("shijinzhi %d",n);}5.10#include <stdio.h>void main(void){char input1[100];int i,num=0,blank=0;printf("Please input a row character:\n");gets(input1);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)num++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)num++;else if (input1[i]==32)blank++;}Loop: printf("Character:%d\nBlank:%d\n",num,blank);}第六章一、选择题1.D :p中记录的是a的地址,*p访问地址a的值2.D :指针数组3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;4.C:5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;6.D:7.B:8.B:二、填空题1.*(p+3) 2 222.cdefgbcdefgabcdefg73.6385三、程序分析题1.p = s[0] ;错误,应改为:p = s;或p = &s[0];2.int x , *p;错误,应改为:double x, *p;3.*p = x ;错误,应改为:p = &x ;4.声明顺序错误;应该改为:void main(void){int a;int *p = &a;a = 10;printf(“%d\n”,*p);}2.3 #include <stdio.h>#include <string.h>main(){char ch[2][5] = {"6937","8254"},*p[2]; int i,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] - '0';printf("%d\n",s);}4.1#include <stdio.h>#include <string.h>main(){int count = 0;char str1[100],str2[100];char *p1,*p2;printf("please enter string 1:");gets(str1);printf("please enter string 2:");gets(str2);printf("str1:%s\n",str1);printf("str2:%s\n",str2);p1 = str1;p2 = str2;while(*p1!='\0'&&*p2!='\0'){if(*p1++==*p2++)count++;}printf("count:%d\n",count);}4.2#include <stdio.h>#include <string.h>main()int i,j,k;int a[3];int temp;printf("please enter array a[3]:"); scanf("%d%d%d",&a[0],&a[1],&a[2]);for(i=0;i<2;i++){k = i;for(j= i+1;j<3;j++){if(a[j]<a[i])k = j;}if(k!=i){temp = a[i];a[i] = a[k];a[k] = temp;}}for(i=0;i<3;i++)printf("%d\t",a[i]);printf("\n");}4.3#include <stdio.h>#include <string.h>#define N 100main(){char s1[N], s2[N],*p;int m;printf("please enter string1:");gets(s1);p = s1;printf("enter m:");scanf("%d",&m);strcpy(s2,p+m);printf("string2:%s\n",s2);}4.4#include <stdio.h>#include <string.h>main(){char s[100]="iuiui012asdd90k890y098kkkk1234",*p; char data[100][100]={{0}};int count=0;int i;p = s;/*printf("please enter a string:");gets(p);*/printf("sssss:%s\n",s);while(*p!='\0'){i=0;while(*p>='0'&&*p<='9'){data[count][i] = *p;i++;p++;}if(i!=0)count++;p++;}printf("count:%d\n",count);for(i=0;i<count;i++)printf("%s\n",data[i]);}4.5#include <stdio.h>#define SIZE 4main()int data[SIZE][SIZE],i,j,d;int max,m=0,n=0;for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){scanf("%d",&data[i][j]);}}for(i=0;i<SIZE;i++){for(j=i+1;j<SIZE;j++){d = data[i][j];data[i][j] = data[j][i];data[j][i] = d;}}max = data[0][0];for(i=0;i<SIZE;i++){printf("\n");for(j=0;j<SIZE;j++){printf("%4d",data[i][j]);if(data[i][j]>=max){max = data[i][j];m = i;n = j;}}}printf("\nmax:%4d m:%d n:%d\n",max,m,n);}4.6#include <stdio.h>#include <string.h>main(){char *p[] = {"test","capital","index","large","small"}; char **pstr = p;int a,b,n = 5;char *temp;for(a=0;a<n-1;a++){for(b=a+1;b<n;b++){if(strcmp(pstr[a],pstr[b])>0){temp = pstr[a];pstr[a] = pstr[b];pstr[b] = temp;}}}for(a=0;a<n;a++)printf("%s\n",pstr[a]);}4.7#include <stdio.h>#include <string.h>main(){char s[100],temp;char *p = s;int i,length;printf("please enter a string: ");gets(s);while(*p++!='\0');length = p - s -1;printf("string length:%d\n",length);for(i=0;i<length/2;i++){temp = s[i];s[i] = s[length-i-1];s[length-i-1] = temp;}printf("%s\n",s);}第七章一,选择题1.A2.D3.B4.D5.C6.A7.B二.程序填空题1.(1) a[k](2) a[k](3) a[k]2.(1) a[i](2) j(3) i+1或6三.改错题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); /*此处有错误,a,b,c分别为数组a[80],b[8],c[80]的首地址*/ if(strcmp(a,b)>0) swap(a,b); /*此处有错误,字符串比较应该使用strcmp函数*/if(strcmp(b,c)>0) swap(b,c); /*此处有错误,原因同上*/if(strcmp(a,b)>0) swap(a,b); /*原算法不能实现排序,需要添加此语句*/printf("%s\n%s\n%s\n",a,b,c);}7.3.1#include <stdio.h>#include <string.h>void swap(char *pstr1,char *pstr2){char p[80];strcpy(p,pstr1);strcpy(pstr1,pstr2);strcpy(pstr2,p);}main(){char a[80]="ccc",b[80]="bbb",c[80]="aaa";/* scanf("%s%s%s",a,b,c); */if(strcmp(a,b)>0)swap(a,b);if(strcmp(b,c)>0)swap(b,c);if(strcmp(a,b)>0)swap(a,b);printf("%s\n%s\n%s\n\n\n",a,b,c);}7.4.1#include <stdio.h>int SquSum(int,int);main(){int a,b;int c;printf("enter 2 integer:");scanf("%d%d",&a,&b);c = SquSum(a,b);printf("a=%d b:%d a2+b2=%d\n",a,b,c); }int SquSum(int x,int y){int z;z = x*x+y*y;return z;}7.4.2#include <stdio.h>int GongYueShu(int,int);int GongBeiShu(int,int);{int a,b;int gbs,gys;printf("enter 2 integer:");scanf("%d%d",&a,&b);gys = GongYueShu(a,b);gbs = GongBeiShu(a,b);if(gys<0)printf("There has not gong yue shu!!!!!!\n"); elseprintf("max gong yue shu:%d\n",gys); printf("min gong bei shu:%d\n",gbs);}int GongYueShu(int x,int y){int i,gys=-1,min;min = x;if(x>y)min = y;for(i=2;i<=min;i++){if((x%i==0)&&(y%i==0))gys = i;}return gys;}int GongBeiShu(int x,int y){int i,gbs,max;max = x;if(y>x)max = y;for(i=max;i<=x*y;i++){if((i%x==0)&&(i%y==0)){gbs = i;break;}return gbs;}7.4.4#include <stdio.h>#include <string.h>void Delete_Ch(char *,char);main(){char str[80],ch;printf("please a string:");gets(str);printf("please a char:");scanf("%c",&ch);Delete_Ch(str,ch);printf("%s\n\n",str);}void Delete_Ch(char *p,char ch){while(*p){if(*p==ch){strcpy(p,p+1);}elsep++;}}7.4.5#include <stdio.h>int Is_ShuShu(int); /* return 0:shushureturn -1:no shushu*/main(){int a,ret;scanf("%d",&a);ret = Is_ShuShu(a);if(ret==0)printf("%d is a shushu!!!\n",a);elseprintf("%d is not a shushu\n",a);}int Is_ShuShu(int x){int i;for(i=2;i<x/2;i++){if(x%i==0)return -1;}if(i>=x/2)return 0;}7.4.6#include <stdio.h>#include <string.h>void StrCat(char *s1,char *s2){while(*s1!='\0')s1++;while(*s2!='\0'){*s1 = *s2;s1++;s2++;}*s1='\0';}main(){char a[200]="123456789",b[100]="ABCDEFG"; printf("pls enter string 1:");gets(a);gets(b);StrCat(a,b);printf("%s\n\n",a);}7.4.7#include <stdio.h>#include <string.h>void Stat(char *s,int *ch,int *dig,int *spa,int *oth){while(*s!='\0'){if(((*s>='a')&&(*s<='z'))||((*s>='A')&&(*s<='Z')))(*ch)++;else if((*s>='0')&&(*s<='9'))(*dig)++;else if(*s == ' ')(*spa)++;else(*oth)++;s++;}}main(){char a[200];int ch=0,dig=0,spa=0,oth=0;printf("pls enter a string :");gets(a);Stat(a,&ch,&dig,&spa,&oth);printf("ch:%d dig:%d spa:%d oth:%d",ch,dig,spa,oth); }7.4.8#include <stdio.h>#include <string.h>void reverse(char *s)if(*s){}main(){char s[] = "abcde"; reverse(s);puts(s);}7.4.9#include <stdio.h>#include <string.h>paixu(int *p,int n,int flag) {int i,j,m;int temp;for(i=0;i<n-1;i++) {m = i;for(j=i+1;j<n;j++){if(flag == 1){if(p[j]>p[m])m = j;}else{if(p[j]<p[m])m = j;}}if(m!=i){temp = p[i];p[i] = p[m];p[m] = temp;}}}main(){int a[20];int n,i;int flag;printf("please enter n(<20):"); scanf("%d",&n);getchar();printf("please enter array a:");for(i=0;i<n;i++)scanf("%d",&a[i]);getchar();printf("please enter paixu flag:\n"); printf("\t1:degression\n");printf("\t0:increasion\t:");scanf("%d",&flag);paixu(a,n,flag);printf("array a is:");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n\n");}。

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

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

DA3? DB?31H,32H
DA4? EQU? $-DA3
DA5? EQU? 1234H
DATA?ENDS
4. 阅读如下程序:
ADRR? DB? XXH,XXH,……,XXH;定义的字节数组元素
NUM?
EQU?$-ADRR
RET_VLAUE?DW ?
…?
MOV?CX,NUM
MOV?BX,-1
NEXT: INC?BX
CMP?ADRR[BX],0
LOOPNZ?NEXT
JZ?DONE
MOV?BX,OFFH
DONE: MOV?RET_VLAUE,BX
HLT
请问:(1)该程序完成的功能是什么?
功能:在以 ADRR 为起始地址的数组中,查找第一个是 0 的数据。
(2)程序执行后指出 RET_VLAUE 单元中的内容是什么?
A.1FFFH;
B.1998H;
C.1FFEH;
D.2002H。
1.A 2. C 3.A 4.D 5.B 6.A 7.C 8.B 9.D 10.C
二、指出下列指令的出错原因,并改正。(每小题 2 分,共 12 分)
1. MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或 MOV BX,DX
int 21h
code ends
end start
2.以 Buffer 为首地址的存储区,存放有长度为 N 有符号字数组,编写一程序求出其中负数的平均
值(所有负数的和>-32768),并存放在 M_average 单元中。(本小题 10 分)
data SEGMENT
Buffer DW XXXX,XXXX,……,XXXX;N 个字
LEA? SI,BUFFER

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

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

汇编语言程序设计参考答案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对数据交换的控制,数据传送速度快,但这种方式电路结构复杂,硬件开销大。

《汇编语言程序设计》第1次作业

《汇编语言程序设计》第1次作业

一、单项选择题(只有一个选项正确,共10道小题)1.十进制数-100的8位二进制数的补码为()。

(A) 10011100(B)11100100(C) 11001110(D) 011001002.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。

(A) 无符号十进制数136(B) 压缩型BCD码十进制数88(C) 8位二进制数-8的补码表示(D) 带符号十进制数-1203.指令MOV AX,[BX][SI]中源操作数采用的寻址方式是()。

(A) 寄存器(B) 基址变址(C) 寄存器间接(D) 寄存器相对4.下面有语法错误的指令是( )。

(A) ADD [BP+2],DA1(DA1是变量名)(B) ADD [BX+3],AL(C) ADD AL,AH(D) ADD AH,[DI]5.在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是( )(A) 12FAH(B) 1305FH(C) 015FH(D) 130FFH6.下列指令中,执行后,不改变标志位ZF的是()。

(A) AND AL,AL(B) TEST AL,0FFH(C) CMP AL,BL(D) ROR AL,CL7.DATA SEGMENTDA1 DB 32 DUP(?)DA2 DW 1456H,789AHDA3 DW DA2DATA ENDS…MOV BX, DA3上述指令执行后,BX中的内容是( )。

(A) 0031H(B) 0032H(C) 0020H(D) 0021H8.完成将累加器AX清零,下面错误的指令是()。

(A) OR AX,00H(B) AND AX,00H(C) XOR AX,AX(D) SUB AX,AX9.数据段有如下数据定义VAR DB 4 DUP(1,5 DUP(?)),1,2执行指令MOV AL,SIZE VAR后AX寄存器的值是多少()。

(A) 4(B) 1(C) 5(D) 2010.内存中(2000H)=3000H,(3000H)=A01FH,MOV BX,[2000H]MOV AX,[BX]执行上述指令AX的内容是()。

20042005学年(下)学期《汇编语言程序设计》试卷(A卷)和答案

20042005学年(下)学期《汇编语言程序设计》试卷(A卷)和答案

华南师范大学计算机学院2004/2005学年(下)学期期末试卷《汇编语言程序设计》试卷(A卷)专业____________年级 04级本班级_______姓名________学号_______(要求:前四题直接写在试卷上)一、填空题:(每小题2分,共10分)1.数-27的补码表示是__11100101____(8位),扩展到16位为__1111111111100101_。

2.一个字5678H存到地址[1234H]单元中,则56H存放在 1235H 单元,78H存放在 1234H 单元。

3.堆栈的栈顶由堆栈指针寄存器指出,非栈顶字由基址指针寄存器指出。

4.编程用的操作数有立即数、寄存器操作数、内存操作数。

5.中断向量是中断子程序的入口,中断向量表是计算机中断服务程序中的一个向量表,它纪录着全部的中断向量二、改错题(每小题2分,共20分)(在不改变原题意的前提下,在试卷上画出每小题的错误之处,并在右边予以改正。

)1.MOV CX,SEG DATAMOV ES,CXMOV DS,ES MOV DS,CX2.B DW 100MOV AL,B MOV AX,B3.MOV DI,30HMOV [DI],16H MOV WORD PTR [DI],16H4.MOV AX,BX,IN AX,BX IN AX,DX5.ADD SI,BX ADD AL,BLDAA6.MOV DX,30SUB [DX],CX SUB WORD PTR [DX],CX7.PUSH AL PUSH AX8.MOV BX,16MOV AL,256 MOV AX,2569.INC AX,1 INC AX10.ADD 80H,AL ADD AL,80HIN 80H,AL IN AL,80H三、阅读程序(根据题目要求写出结果每小题6分,共30分)(可以给指令另加注释,也可以不加。

)1.下面程序的功能是什么?MOV AX,XCMP AX,YJGE LABXCHG AX,YLAB:MOV X,AX选择X,Y中的较大值存入X中2. 执行下列指令后AX、BX寄存器的内容?MOV SI,10HMOV AX,1234HMOV [SI+12H],AXLEA BX,[SI]MOV [SI+14H],BXLES BX,DWORD PTR [SI+12H] AX为1234H,BX为22H3. 下面程序的功能是什么?MOV CH,4LAB:MOV CL,4ROL BX,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,3AHJL PRINTADD DL,7PRINT:MOV AH,02INT 21HDEC CHJNZ LAB显示输出BX寄存器里的内容4. 下面程序的功能是什么?STRING DB 100 DUP(?) MOV AX,SEG STRINGMOV DS,AXLEA SI,STRINGMOV CX,100LAB: MOV AL,[SI]CMP AL,’a’JB LAB1CMP AL,’z’JA LAB1SUB AL,32MOV [SI],ALAB1: INC SILOOP LAB将STRING里的小写字母’a’-‘z’转成相应的大写字母’A’-‘Z’5. 下面程序的功能是什么?MOV AX,SEG STRINGMOV DS,AXLEA DX,STRINGMOV AH,0AHINT 21HXOR BX,BXMOV CX,BXMOV CL,STRING[1]LEA SI,STRING[2]MOV AL,’A’LAB:CMP AL,[SI]JNZ LAB1INC BXLAB1:INC SILOOP LAB用BX记录输入缓冲区中有多少个字符‘A’四、问答题(共10分)1.简述上机运行汇编语言程序的过程。

80x86汇编语言程序设计教程答案

80x86汇编语言程序设计教程答案

80x86汇编语言程序设计教程答案【篇一:《80x86汇编语言程序设计》教案及答案(第二版)】汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1. 汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2. 汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3. 本教材共有十一章,其内容安排如下:(1). 第一、二章为汇编语言所用的基础知识。

(2). 第三章详细介绍80x86系列cpu的指令系统和寻址方式。

(3). 第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4). 第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5). 第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6). 第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7). 第九章说明bios和dos系统功能调用的使用方法。

(8). 第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计,清华大学出版社,1991年3. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4. 沈美明、温冬婵、张赤红编著,ibm–pc汇编语言程序设计—实验教程,清华大学出版社,1992年5. 周明德,微型计算机ibm pc/xt(0520系列)系统原理及应用(修订版),清华大学出版社,19916. 郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957. 王士元、吴芝芳,ibm pc/xt[长城0520] 接口技术及其应用,南开大学出版社,19908. 杨素行,微型计算机系统原理及应用,清华大学出版社,19959. 戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610. 张昆藏,ibm pc/xt微型计算机接口技术,清华大学出版社,199111. 孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/pentium),学苑出版社,199312. 吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 ....................................................................................................... .. (1)1.1 进位计数制与不同基数的数之间的转换 (1)1.2 二进制数和十六进制数的运算 ....................................................................................................... .. (2)1.3 计算机中数和字符的表示 ....................................................................................................... . (3)1.4 几种基本的逻辑运算 ....................................................................................................... (3)第 2 章 80x86计算机组织 ....................................................................................................... . (4)2.1 80x86微处理器 ....................................................................................................... . (4)2.2 基于微处理器的计算机系统构成 ....................................................................................................... . (4)2.3 中央处理机 ....................................................................................................... . (5)2.4 存储器 ....................................................................................................... (6)2.5 外部设备 ....................................................................................................... .. (7)第 3 章 80x86的指令系统和寻址方式 ....................................................................................................... .. (8)3.1 80x86的寻址方式 ....................................................................................................... (8)3.2 程序占有的空间和执行时间 ....................................................................................................... . (10)3.3 80x86的指令系统 .......................................................................................... .. (10)第 4 章汇编语言程序格式 ....................................................................................................... .. (26)4.1 汇编程序功能 ....................................................................................................... . (26)4.2 伪操作 ....................................................................................................... . (26)4.3 汇编语言程序格式 ....................................................................................................... .. (30)4.4 汇编语言程序的上机过程 ....................................................................................................... .. (33)第 5 章循环与分支程序设计 ....................................................................................................... . (35)5.1 循环程序设计 ....................................................................................................... . (35)5.2 分支程序设计 ....................................................................................................... . (36)5.3 如何在实模式下发挥80386及其后继机型的优势 (36)第 6 章子程序结构 ....................................................................................................... .. (37)6.1 子程序的设计方法 ....................................................................................................... .. (37)6.2 子程序的嵌套 ....................................................................................................... . (38)6.3 子程序举例 ....................................................................................................... .. (38)第 7 章高级汇编语言技术 ....................................................................................................... .. (39)7.1 宏汇编 ....................................................................................................... . (39)7.2 重复汇编 ....................................................................................................... . (40)7.3 条件汇编 ....................................................................................................... . (41)第 8 章输入/输出程序设计 ....................................................................................................... . (42)8.1 i/o设备的数据传送方式 ....................................................................................................... .. (42)8.2 程序直接控制i/o方式 ....................................................................................................... . (43)8.3 中断传送方式 ....................................................................................................... . (43)第 9 章 bios和dos中断 ....................................................................................................... . (46)9.1 键盘i/o ....................................................................................................... .. (46)9.2 显示器i/o ....................................................................................................... . (48)9.3 打印机i/o ....................................................................................................... . (49)9.4 串行通信口i/o ....................................................................................................... .. (50)第 10 章图形与发声系统的程序设计 ....................................................................................................... ........... 51 10.1 显示方 (51)10.2 视频显示存储器 ....................................................................................................... .................................. 51 10.3 ega/vga图形程序设计 ....................................................................................................... .................... 52 10.4 通用发声程序 ....................................................................................................... ...................................... 53 10.5 乐曲程序 ....................................................................................................... . (54)第 11 章磁盘文件存取技术 ....................................................................................................... ........................... 55 11.1 磁盘的记录方式 ....................................................................................................... .................................. 55 11.2 文件代号式磁盘存取 ....................................................................................................... .......................... 56 11.3 字符设备的文件代号式i/o ....................................................................................................... ................ 57 11.4 bios磁盘存取功能 ....................................................................................................... .. (58)附录:《ibm—pc汇编语言程序设计》习题参考答案 ............................................................................... 59 第一章.第二章.第三章.第四章.第五章.第六章.第七章.第八章.第九章.第十章.第十一章. 习题 ....................................................................................................... ................. 59 习................. 60 习题 ....................................................................................................... ................. 61 习题 ....................................................................................................... ................. 74 习题 ....................................................................................................... ................. 79 习题 ....................................................................................................... ................. 97 习题 ....................................................................................................... ............... 110 习题 ....................................................................................................... ............... 117 习题 ....................................................................................................... ............... 122 习题 ....................................................................................................... ............... 125 习题 ....................................................................................................... (136)错误!未指定书签。

计算机等级考试(国家)-80x86微处理器与汇编语言程序设计模拟1

计算机等级考试(国家)-80x86微处理器与汇编语言程序设计模拟1

80x86微处理器与汇编语言程序设计模拟1一、选择题1、下列______不是80386所具有的特点。

A. 保护虚地址存储方式,扩充了通用寄存器的功能B. 32位的运算能力C. 程序中可同时使用四个数据段D. 采用了PCI标准的局部总线2、在普通的微处理芯片中,主要有CISC和RISC两种不同的体系结构。

80386的体系结构为______。

A. CISC结构B. 融合了CISC结构和RISC结构C. RISC结构D. 不具有上述两种结构3、下述______不是奔腾处理器Pentium与80386相比所具有的新特点。

A. 错误检测及功能冗余校验技术B. 增强的64位数据总线C. 保护虚地址存储方式,扩充了通用寄存器的功能D. 采用了PCI标准的局部总线4、Pentium4微处理器进行存储操作时,在时钟周期T1期间,完成______操作。

A. W/R信号变为高电平B. 发送存储器地址C. 读操作码D. 读操作数5、Pentium微处理器的内部数据总线宽度是______。

A. 16位B. 32位C. 36位D. 64位6、Pentium微处理器中共有几个段寄存器?______。

A. 4个B. 5个C. 6个D. 7个7、Pendum4微处理器可寻址的最大存储空间是______。

A. 256MBB. 4GBC. 64GBD. 64TB8、假设Pentium微处理器的段描述符中基地址是00280000H,段的界限是00010H,粒度G=1,则该描述符所寻址的结束地址是______。

A. 00280010HB. 00290000HC. 0028000FHD. 00370000H9、执行下列指令后,(CL)=______。

STR1 DW 'AB'STR2 DB 16DUP(?)CNT EQU $-STR1MOV CX,CNTMOV AX,STR1HLTA. 10HB. 0EHC. 12HD. 0FH10、上题执行后(AX)=______。

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

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

汇编语言程序设计试题及答案1.对于有符号的数来说,下列哪个值最大(D)A:0F8HB:11010011BC:82 D:123Q2.下列有关汇编语言中标号的命名规则中,错误的是(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 AXB.NOT AXC。

INC AX D。

DEC AX6.8086/8088系统执行传送指令MOV时( A)A.不影响标志位 B。

影响DF方向标志C。

影响SF符号标志 D.影响CF进位标志7.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用(B)A:NOT B:OR C:AND D:XOR8.下列指令中段默认为堆栈段的是( 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.ENDM12.BUF1 DB 3 DUP(0,2 DUP (1,2),3)COUNT EQU $-BUF1符号COUNT等价的值是( B)A。

80x86前三章答案解析

80x86前三章答案解析

第一章答案Tarzan版题1.1 与机器语言相比,汇编语言有何特点?与高级语言相比,汇编语言有何特点?答:与机器语言相比,汇编语言的的特点有:1、易于记忆2、容易理解3、方便调试4、便于维护与高级语言相比,汇编语言的特点有:1、与机器指令关系密切2、执行效率高3、源程序繁琐4、调试比较困难题1.2 汇编语言有何优缺点?答:汇编语言的优点有:1、与机器语言相比易于记忆,容易理解,方便调试和维护;2、与高级语言相比更加接近硬件和底层,对机器控制更加直接;3、执行效率高,特别在一些特殊场合,如需要实时处理的地方;汇编语言的缺点:1、与高级语言相比,汇编语言还是比较繁琐;2、调试比较复杂,维护交流以及移植都很困难;题1.3 汇编程序的作用是什么?汇编程序与编译程序有何不同?答:汇编程序的作用是将汇编语言源程序翻译成目标程序;汇编程序是将汇编语言源程序翻译成用机器语言表示的目标程序;而编译程序是用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序,两者区别主要是处理的对象不同;题1.4 哪些场合需要使用汇编语言?答:需要使用汇编语言的场合有:1、对软件的执行时间或存储容量有较高要求的场合;2、需要提高大型软件性能的场合;3、软件与硬件关系密切,软件要有直接和有效控制硬件的场合;4、没有合适的高级语言的场合;题1.5 在计算机系统中,如何表示西文字符和汉字符?答:在计算机系统中,西文字符主要由ASCII码表示;而汉字符主要采用变形国标码表示;题1.6 什么是BCD码?答:为了符合人们的书写阅读习惯,常采用二进制编码的十进制,简称为BCD码;BCD码由4个二进制数编码表示0-9十个数字;8421BCD码比较常见;题1.7 说明字节、字和双字之间的关系。

答:字节(byte)由8个二进制,即8bit组成;字(word)由16个二进制,即16bit组成;双字(Dual word)为32bit;1 Dual word=2 word= 4 byte题1.8 到目前为止,Intel的80X86家族有哪些成员?这些成员有何特征?答:到目前为止,Intel的80X86的成员有:name Process Transistor Frequency Register Address DataIntel 4004 10mm 2300 <740KHz 4bit ? ?Intel 4040 10mm ? <740KHz 4bitintel 8008 10mm 3500 <0.8MHz 8bit 16bit 16bitIntel 8080 10mm ? <2MHz 8bit 16bit 16bitIntel 8085 10mm ? <6MHz 8bit 16bit 16bit Intel 8086 ? 29000 <10MHz 16bit 20bit 16bitIntel 8088 ? 29000 <5MHz 16bit 20bit 8/16bit Intel 80186 ? ? <20MHz 16bit 20bit 16bitIntel 80188 ? ? <20MHz 16bit 20bit 8bitIntel 80286 1.5mm 134K <25MHz 16bit 24bit 16bit Intel 80386 1mm 275K <40MHz 32bit 32bit 32bit Intel 80376 1mm 275K <20MHz 32bit 32bit 16/32bit Intel 80486 0.8/1mm 1.185M <100MHz 32bit 32bit 32bitIntel Pentium 0.6mm 3.2M <200MHz 32bit 64bit 32bitIntel Pentium MMX 0.35mm 4.5M <300MHz 32bit 64bit 32bit Intel Pentium Pro 0.35mm 5.5M <200MHz 32bit 64bit 32bitIntel Pentium IIIntel Pentium IIIIntel Pentium IV第二章答案Tarzan 版题 2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器?答:8086/8088通用寄存器的通用性表现在:这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果;8个通用寄存器的专门用途如下:AX 字乘法,字除法,字I/OBX 存储器指针CX 串操作或循环控制中的计数器DX 字乘法,字除法,间接I/OSI 存储器指针(串操作中的源指针)DI 存储器指针(串操作中的目的指针)BP 存储器指针(存取堆栈的指针)SP 堆栈指针其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器?答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容:MOV AX,1234HMOV AL,98HMOV AH,76HADD AL,81HSUB AL,35HADD AL,AHADC AH,ALADD AX,0D2HSUB AX,0FFH答:MOV AX,1234H AX=1234HMOV AL,98H AX=1298HMOV AH,76H AX=7698HADD AL,81H AX=7619HSUB AL,35H AX=76E4HADD AL,AH AX=765AHADC AH,AL AX=D15AHADD AX,0D2H AX=D22CHSUB AX,0FFH AX=D12DH题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?答:8086/8088标志寄存器中定义了9个标志,如下:CF: Carry FlagZF: Zero FlagSF: Sign FlagOF: Overflow FlagPF: Parity FlagAF: Auxiliary Carry FlagDF: Direction FlagIF: Interrupt-enable FlagTF: Trap Flag这些标志可分为两类,分别为:1、运算结果标志;2、状态控制标志;采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;采用CLC可清除CF,置CF到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5 请说说标志CF和标志OF的差异。

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

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

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

”“MOV AX, ES:[BP] 指令(1)C. 堆栈段D. 代码段 A. 数据段B. 附加数据段_________。

(A) AL(2) 将中的无符号数压入堆栈,下面的方法不正确的是CBW (A)PUSH AXMOV AH,0(B)PUSH AXMOVZX AX, AL (C)AX PUSHAH, AH XOR (D)PUSH AX(C) 能作基址和变址寄存器。

(3) 只有寄存器_________ DX 、、(A) AXBX、CXSP (B) 、、、DIBP SI SIBX 、、、BP DI(C)SICXAX(D) 、、、DI1.(D) ,均为则标志位_________结果为正两负数相加(4) , CFSF、ZF、DF 、(A)DF (B) 、CFZF、(C) CF、SF、OF1 / 11(D) CF、OF(5) 指令??嬠塂?㈠的错误原因为________.(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 , VAR(C) MOV A , AX (D) MOV AX, A(8) 在使用除法指令作字除法时,被除数应放在寄存器________中。

80x86汇编语言程序设计

80x86汇编语言程序设计

80x86汇编语言程序设计80x86汇编语言程序设计是一门专门研究如何使用汇编语言在80x86架构的计算机上编写程序的学科。

80x86架构是Intel公司开发的一种微处理器架构,它包括了8086、80286、80386、80486等处理器,以及后来的Pentium系列。

汇编语言是一种低级语言,它与机器语言非常接近,通常用于编写性能要求极高的程序或者进行底层系统开发。

汇编语言基础汇编语言的指令与机器指令一一对应,但使用助记符来代替二进制代码,使得程序更加易于编写和理解。

汇编语言的基本元素包括指令、寄存器、内存地址和立即数。

- 指令:是汇编语言的基本操作单位,用于执行特定的操作,如数据传输、算术运算、逻辑运算等。

- 寄存器:是CPU内部的存储单元,用于快速存取数据。

80x86架构有多个寄存器,包括通用寄存器、段寄存器、指令指针寄存器等。

- 内存地址:是存储在RAM中的数据的位置,汇编语言可以通过内存地址访问和操作数据。

- 立即数:是指令中直接给出的数值,不需要通过寄存器或内存地址访问。

汇编语言指令80x86汇编语言提供了丰富的指令集,用于执行各种操作。

以下是一些基本的指令类型:- 数据传输指令:如MOV(移动数据)、PUSH(将数据压入堆栈)、POP(从堆栈中弹出数据)等。

- 算术指令:如ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等。

- 逻辑指令:如AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR (逻辑异或)等。

- 控制流指令:如JMP(无条件跳转)、JE(等于时跳转)、JNE(不等于时跳转)、LOOP(循环)等。

汇编程序结构一个典型的汇编程序包括以下部分:1. 程序声明:声明程序的名称和起始点。

2. 数据定义:定义程序中使用的数据和常量。

3. 代码段:包含程序的指令和逻辑。

4. 堆栈段:用于存储临时数据和调用函数时的参数。

5. 常量段:定义程序中使用的常量。

6. 外部引用:引用其他程序或库中的代码和数据。

汇编语言程序设计_第2章 80x86编程的硬件基础(参考答案)

汇编语言程序设计_第2章  80x86编程的硬件基础(参考答案)

第2章80x86编程的硬件基础本章要点:80x86的寄存器的分类、作用以及有关寄存器的特定用法,内存及其分段,逻辑地址和物理地址,I/0端口地址。

一、单项选择题2.1.1 80x86的寄存器中,8位的寄存器共有(C)个。

A. 4B. 6C. 8D. 102.1.2 总是指向下一条要执行的指令,由此实现程序的自动执行的寄存器是(B)。

A. BPB. IPC. SPD. IR2.1.3 标志寄存器用来保存算术逻辑运算的结果状态,其中用于表示当前运算结果是否为0的标志位是(D)。

A. CFB. OFC. SFD. ZF2.1.4 80x86CPU执行算术运算时,FLAGS共有(B)个标志位受影响。

A. 5B. 6C. 7D. 92.1.5 一个16位相对位移的范围是(C)。

A. -128~127B. 0~65535C. 8000H~7FFFHD. 8000H~FFFFH2.1.6 如果某一存储单元的物理地址为12345H,则它的逻辑地址为(D):0345H。

A. 12000HB. 0012HC. 0120HD. 1200H2.1.7 通常我们所说的32位机,是指这种计算机的CPU(C)。

A. 由32个运算器组成B. 包含32个寄存器C. 能够同时处理32位二进制数D. 一共有32个运算器和控制器2.1.8 下列寄存器组中,用于提供段内偏移地址的寄存器组是(B)。

A. AX,BX,CX,DXB. BX,BP,SI,DIC. SP,BP,IP,DXD. CS,DS,ES,SS2.1.9 在80x86系统中,约定用于形成堆栈段数据物理地址的寄存器有(B)。

A. DS,DX,BXB. SS,BP,SPC. SS,BX,BPD. DS,BP,SP2.1.10在程序的运行过程中,确定下一个指令的物理地址的计算表达式是(C)。

A. D S×16+SIB. E S×16+DIC. CS×16+IPD. S S×16+SP二、填空题2.2.1 在80x86的16位寄存器中,可以用来指示存储器地址的有_10__个,它们分别是__BX BP SI DI IP SP DS CS ES SS____________________;既可以用来指示存储器地址又可以用来存放操作数的有__5__个,它们分别是__BX BP SI DI SP____________。

计算机等级考试(国家)-80x86微处理器与汇编语言程序设计模拟2.doc

计算机等级考试(国家)-80x86微处理器与汇编语言程序设计模拟2.doc

80x86微处理器与汇编语言程序设计模拟2一、选择题K指令周期是________ oA.机器周期B・CPU执行一条指令的吋间C・CPU从主存储器取一条指令的时间D・CPU从主存储器取岀一条指令并执行该条指令的时间2、 CPU中程序计数器PC屮存放的是______ oA.指令B.指令地址C.操作数D.操作数地址3、若内存中每个存储单元为16位,则________ oA.其地址线也为16位B.其地址线与16无关C.其地址线与16有关D.-其地址线也为32位4、在80x86微处理器的标志寄存器中,有可能受算术运算指令影响的标志位是__________ oA.工F(中断标志) B・DF(方向标志)C・OF (溢出标志) D・TF (陷阱标志)5、Pentium微处理器的突发式存储器读/写总线周期包含__________ 个CPU时钟周期。

A. 2B. 3C. 4D. 56、Pentium微处理器执行程序时,若遇到异常则进行异常处理。

如果处理完毕后仍返回出现异常的指令重新执行,则这种异常属于________ 类型。

A.故障(Fault)B.陷阱(Trap)C.终止(Abrot)D. (Interrupt)7、口前市场上出售的台式PC机屮,Pentium4微处理器的主频一•般在________ 。

A. 0.5GHz左右B. 2LGHZ左右C. 3GHz左右D・5GHz以一上8、Pentium处理器具有基木总线周期和突发式总线周期两种总线时序,一个突发式总线周期能够传送数据_______ 次。

A. 2B. 3C. 4D. 59、下而是关于Pentium微处理器实地址模式和虚拟8086模式的描述,其中错谋的是___________ 。

A.这两种模式总是具有相同的物理地址空间B.在这两种模式下都可以运行16位应用程序C.虚拟8086模式具有保护机制,而实地址模式下无此功能D.虚拟8086模式下的程序在最低特权级3级上运行,而实地址模式下运行的程序不分特权级10>具有两条流水线的CPU, —般情况下每个时钟周期可以执行___________ oA. 一条指令B.两条指令C.三条指令D.四条指令11> Pentium微处理器的每个突发式总线周期传送多少数据?___________ 。

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66) 第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

《80x86汇编语言程序设计》(第2版)习题答案

《80x86汇编语言程序设计》(第2版)习题答案

习题参考答案1第1章1-1汇编的主要功能:输入:汇编语言源文件输出:目标文件处理:对源文件进行语法检查;将符号指令翻译为机器指令。

连接的主要功能:输入:1个或多个目标文件与库文件输出:可执行文件处理:浮动地址的重定位;多模块的连接。

1-2 (1)2EH (2)0D2H (3)0FFH(4)80H (5)7FH (6)0FEH1-3 (1)7FH (2)0FF80H (3)0FFFFH285286(4)0FFD2H (5)8000H (6)0FFH1-4 无符号数范围:0~2n-1;带符号数范围:-2n−1~2n−1-11-5 (1)压缩BCD码:58H;非压缩BCD码:x5x8H。

(2)压缩BCD码:1624H;非压缩BCD码:x1x6x2x4H。

1-6 (1)字符'1'的ASCII码;十进制数31的压缩BCD码;十进制数1的非压缩BCD码;十进制数49的十六进制表示。

(2)十进制数-1的8位二进制补码表示;带符号数255的16位二进制补码表示;无符号数255的8位二进制形式。

(3)十进制数-1的16位二进制补码表示;带符号数65535的32位二进制补码表示;无符号数65535的16位二进制形式。

1-7 (1)作为无符号数为159,等值的16位和32位形式均为9FH;作为带符号数为-97,等值的16位和32位形式分别为0FF9FH与0FFFFFF9FH。

(2)作为无符号数和带符号数均为104,等值的16位和32位形式均为68H。

(3)作为无符号数为192,等值的16位和32位形式均为0C0H;作为带符号数为-64,等值的16位和32位形式分别为0FFC0H与0FFFFFFC0H。

1-8 (1)AND 0FH (2)OR 30H(3)右移4位可得高位的值;将原值AND 0FH可得低位的值。

(4)XOR 00101010B(5)AND 8000H,若结果为0,则是正数,否则为负数。

第2章2-1 系统总线是CPU与内存和I/O子系统之间进行数据交换的通道,包括数据总线、地址总线和控制总线,分别负责在CPU与内存和I/O子系统之间传送数据、地址和控制信息。

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

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

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______一、改错题(10分,每题1分,在错误处划线,线下写上正确答案)1. SHR BH, 82. ADD[BX], –153. LEA POINT, BUF4. IN DX, 2005. PUSH DH6. MUL257. 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操作,应选用________指令序列。

A.DEC AL B.SBB AL,0C.SUB AL,1D.SUB AL,1 AAS DAS AAS DAS10.要将BL中的8位数据送到1234H端口号的外部设备中去,应选用________指令序列。

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

《汇编语言程序设计》网络学院模拟试卷一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操作,应选用________指令序列。

A.DEC AL B.SBB AL,0 C.SUB AL,1 D.SUB AL,1AAS DAS AAS DAS10.要将BL中的8位数据送到1234H端口号的外部设备中去,应选用________指令序列。

A.OUT 1234H, BL B.MOV DX,1234HOUT DX, BLC.MOV AL, BL D.MOV DX,1234HMOV DX,1234H MOV AL, BLOUT DX,AL OUT AL, DX11.已知AX,BX中均为有符号...数据,当进行字.除法时,应采用________指令序列。

A.XOR DX,DX B.CBW C.IDIV BX D.CWDDIV BX IDIV BX IDIV BX 12.要将DX 的内容送入堆栈中从当前栈顶起第10个字中,应使用________语句。

A .MOV 18[SP],DX B .MOV 18[BP],DXC .MOV BP ,SPD .PUSH 18[DX] MOV 18[BP],DX13.要将CL 中8位有符号数送入SI 中去,应采用________。

A .MOV SI , CLB .MOV BYTE PTR SI , CLC .MOV CH ,OD .MOV AL ,CL MOV SI , CX CBWMOV SI , AX 14.8086指令系统中的PUSH 操作,会对SP 自动进行________操作。

A .减1B .加2C .减2D .加1 15.下列指令执行后,对源、目的操作数均无影响的指令是________。

A .XCHG AX ,BX B .CMP AX ,BXC .SBB AX ,[BX]D .MOV AX ,BX16.用REPE SCASB 指令对某字符串进行扫描,若当扫描结束时CX ≠0,则表示________。

A .在字符串中有一个与(AL )不同的字符B .在字符串中找到了第1个与(AL )不同的字符C .在字符串中有一个与(AL )相同的字符D .在字符串中找到了第1个与(AL )相同的字符 17.条件转移指令J NLE 的转移条件是________。

A .SF ⊕ OF= 0,且ZF= 0 B .SF ⊕ OF= 1,且ZF= 0C .SF ⊕ OF= 0,且ZF= 1D .SF ⊕ OF= 1,且ZF= 1 18.表示宏定义结束的伪指令是________。

A .ENDMB .ENDSC .ENDPD .END 19.设(SS )= 448AH ,(SP )= 450H ,执行PUS HFAXPUS H 后,当前栈顶的物理地址=_______。

A .44CE6HB .44CECHC .44CF4HD .44CF2H 20.下列数据定义伪指令中,________是错误的。

A .DB 12H B .DW 1234HC .DB ' ABCD ' D .DW ' ABCD ' 三、填空题(10分,每题1分)1.要清除AX 中的D 15~11位,需采用___AND 0FFFH______________指令来实现。

2.已知(AX )= 789AH ,问执行指令CBW 后,(AX )=_______FF9AH_____________。

3.使用DOS 中2号功能调用时,需先将_____要显示的字符的ASCII 码______送入DL 中。

4.在MOV AX , –5[BX] [DI]中,源操作数采用是_____相对基址加变址______寻址方式。

5.已知在DATA 数据段中已定义有变量DUF ,AA 等,问与AX DS , MOV DATA AX MOV 中划线语句等效的指令是________________。

6.与MOV AX , OFFSET BUF 等效的LEA 指令是____LEA AX,BUF_______________。

7.与J NL 指令等同的指令操作符是_______JNB______________。

8.中断类型号为25H 的中断服务程序的中断矢量存放在内存 94H ~ __96H 单元中。

9.主、子程序间参递参数的常用三种方式是___寄存器传递__、约定内存传递__和_堆栈传递___法。

10.要对DX 中的内容求绝对值,在横线上应填入何指令。

___AND DX, 7FFFH________AND DX , DX J NS L 1∶ TEST BX ,80HJNE TJMP NT T :… NT :…∶______________ L 1:…… ∶四、作图及填充题(10分)已知数据段定义如下: DATA SEGMENTC1 DB ' 0AH ', 2 DUP ( ' 12 ' , 1), –7 C2 DW ' 0A ',–7 C3 EQU $ – C2 ORG 20 C4 DW C2+2 DATA ENDS1.画出数据在主存中的分配图(细化到字节)(5分) 2.在划线处填上执行结果。

① MOV AX , C2-3 ;(AX)= __________ ② MOV DX , C2+2 ;(DX)= __________ ③ MOV BL , C1+5 ;(BL)= __________ ④ MOV BX , OFFSET C1+3 ;(BX)= __________ ⑤ MOV CL, C3-4 ;(CL)= __________五、程序分析题(每小题3分,共24分)1.已知 BX=0F0FH ,请判别右边程序段执行 后,程序转向_______执行。

2.设A 变量的偏移地址为100 A DW 5665H , 1234H∶LEA SI, A 左边程序段的二条指令执行后 (S I ) =________ LDS BX, A (BX )=________ ∶3.如果在执行以下程序段前堆栈为空栈, 且程序其余处也未用堆栈操作指令。

要求:① 画出执行完①时堆栈变化示意图 ∶ CALL PRO1 B1: ……∶B2: ……∶PRO1 PROCPUSH CXPUSH BX ① ∶POP BX ②从子程序能返回到主程序B1处吗?为什么?RET ______________________________________ PRO1 ENDP ______________________________________∶4.已知DS和ES指向同一个段,且当前数据段偏离0000H~00FFH的存贮单元中依次存放的内容为0~0FFH,请回答下列程序段执行后0000H~0009H单元中的内容为:∶___________________________________________。

MOV SI, 0000HMOV DI, 0001HMOV CX, 10CLDREP MOVSW∶5.∶STR1 DB ' COMPUTERNDPASCAXZ 'SZM DB ' E '∶MOV AL, SZMLEA DI, STR1 问左边程序段执行到NEXT处时,MOV CX, 17 (CX)=__________CLD (ZF)=__________REPNE SCASBNEXT: …∶6.已知:AX=0D800H, DX=0003H∶MOV CX, 2L:SHL AX, 1 问左边程序段执行后RCL DX, 1 (AX)=__________LOOP L (DX)=__________∶7.程序段的功能是将数组的最大数送AL,请在各空白处填上一条合适的指令。

AA DB 3,7,32,10,100, ……N EQU $ – AA∶MOV CX, NMOV DI, OFFSET AAMOV AL, [DI]BB: INC DI__________________①J AE CCMOV AL, [DI]CC: ___________________②。

8.∶A DW ?B DW ?∶MOV AX, AMOV BX, B 左边程序段为判A、B两字变量是否同为正数。

是,置AX为0,否则,置AX为非零。

请在各空白处填上一条合适的条件转移指令。

XOR AX , BX_________________① TEST BX, 8000H _________________③ MOV AX, 0 NEXT:…… ∶9.读下面程序,回答下列问题:①当输入为:ABCD ↙ 时,输出什么?_____。

②在程序中的宏指令的;后,写出其宏扩展的形式。

③当输入字符串为①所述,则(BUF1+1)=________。

④若漏写了一条DEC SI 指令,程序结束后又显示什么?____________。

相关文档
最新文档