汇编实验报告(详细版).doc
文本预览下载声明
计算机组成与汇编语言
(实验报告)
内 容: 实验一、六、七、八
院系专业: 计算机学院 计算机科学与技术
姓 名: xxxxxxxxx
学 号: 2011004xxxxx
完成时间:2012 年 12月 1日
计算机组成与汇编语言实验报告
姓名xxxx学号2011004xxxxx计分专业软件工程班级xxxx实验日期2012年 12 月 1日实验名称实验一 数制转换实验目的
● 熟悉各种进制数据之间的相互转换方法。
● 掌握二-十进制数据的相互转换程序设计。实验内容
1.将编写好的程序1输入、编译、连接并运行。
程序1清单
#includestdio.h
#includestring.h
#includestdlib.h
void main()
{
int i,l,s0=0,s=0;
char a[17];
while(l!=16)
{
printf(请输入一个16位的二进制数:\n);
gets(a);
l=strlen(a);
for(i=0;i16;i++)
{
if(a[i]!=0a[i]!=1)
{
printf(输入的二进制数不正确!!);
break;
}
}
}
if(a[15]==1)
s++;
for(i=1;i16;i++)
{
if(a[15-i]==1)
s+=(1i);
}
printf(二进制: );
puts(a);
printf(对应的十进制为: );
printf(%d\n,s);
}程序1运行结果:
说明:如果不是16位二进制则会提示错误。
2.将编写好的程序2输入、编译、连接并运行。
程序2清单
#includestdio.h
#includemath.h
void main()
{
int t0,t1,t2,t3,i,j;
int a[16];
printf(请输入一个十进制数:);
scanf(%d,t0);
t1=t0;
for(i=0;i16;i++)
{
t2=t1/2;
if(t21)
a[i]=t1%2;
else if(t1==1)
{
a[0]=1;
for(i=1;i16;i++)
a[i]=0;
}
else if(t1==2)
{
a[i]=0;
a[i+1]=1;
for(j=i+2;j16;j++)
a[j]=0;
break;
}
else if(t1==3)
{
a[i]=1;
a[i+1]=1;
for(j=i+2;j16;j++)
a[j]=0;
break;
}
else
a[i]=0;
t1=t2;
}
for(i=0;i8;i++)
{
t3=a[i];
a[i]=a[15-i];
a[15-i]=t3;
}
printf(十进制数: %d\n,t0);
printf(对应的二进制数是: );
for(i=0;i16;i++)
printf(%d,a[i]);
printf(\n);
}
程序2运行结果:
实验情况与体会:
运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。转换方法主要是除二求余的方法。注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告
姓名xxxx学号2011004xxxx计分专业软件工程班级xxxxx实验日期2012年 12 月 1日实验名称实验六 分支结构程序设计实验目的
● 熟悉有符号定点数的表示。
● 掌握原码、补码、反码之间的相互转换程序设计。 实验内容
1.调试程序1:求无符号字节变量X,Y之差的绝对值,存储于字节变量A中。
源程序如下:
DATA SEGMENT
X DB 23
Y DB 45
A DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, X
显示全部