9计算机组成实验报告二 移位运算实验

时间:2024.3.19

淮海工学院计算机工程学院

实验报告书

课 程 名:《计算机组成原理》

题 目:实验二移位运算实验

班 级:^ ^

学 号:^ ^

姓 名:^ ^



1、目的与要求

验证移位运算控制的组合功能。

2、实验设备

ZYE1601B计算机组成原理教学实验箱一台,排线若干。

3、实验步骤与源程序

移位运算实验原理图如图5所示, 74LS299功能表如表1所示

文本框: 表1  74LS299功能表


1、移位操作:

(1)置数,具体步骤如图6所示。

文本框: 图6

2、移位,参照功能表改变S0 S1 T4 299-B的状态,按动微动开关KK2,观察移位的结果。

4、结果分析与实验体会

本次实验目的在于验证移位运算控制的组合功能。通过改变S0 S1 T4 299-B M的状态来观察在不同状态下数据的情况。实验由于脉冲按钮的缘故导致结果不太明显,但是经过仔细的推理,在得到的相邻两个结果加上所有实验应有的中间值就很容易 得到结果验证。

循环移位区别于一般移位的是移位时没有数位的丢失。

循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。例如:11010101

循环左移:11010101——10101011——01010111——10101110——01011101——10111010——01110101——11101010——11010101

循环右移:11010101——11101010——01110101——10111010——01011101——10101110——01010111——10101011——11010101

带进位的就是把C位一起循环移动,把你想要的位(1或0)送进C,然后经过移位送到你想要的地方.(c=0)

带进位的循环左移:

C=0, 11010101——c=1,10101010——c=1,01010101——c=0,10101011——c=1,01010110——c=0,10101101——c=1,01011010——c=0,10110101——c=1,01101010——c=0,11010101

带进位的循环右移:

C=0, 11010101——c=1,01101010——c=0,10110101——c=1,01011010——c=0,10101101——c=1,01010110——c=0,10101011——c=1,01010101——c=1,10101010——c=0,11010101

试验体会:

由于实验设备的问题,本次实验很难做出来,不过大概的实验结果就是以上,自己感觉实验比较简单,就是仪器不太好,通过本次实验,我基本掌握了移位控制的实验原理。


第二篇:计算机系统组成与体系结构 实验二实验报告


HUNAN UNIVERSITY

课程实习报告

题 目寻找80x86指令格式中寻址方式字段的编码规律

学生姓名冯玉萍

学生学号20090830102

专业班级信息安全一班

完 成 日 期3月16日

一,实验步骤及分析

实验任务:

如前所述,8086/8088每条指令长1~6个字节,指令第1个字节为操作码主体加D位W位,第2个字节为寻址方式字段。在基本实验过程中,我们将第2~6字节全部固定为00。实际上,除单字节指令外,其余指令在寻址方式字段变化时,指令功能应该有变化。

一、当第2字节变化时,指令功能有何不同?应该如何研究?怎样才能形成一张包含寻址方式字段的完整指令表?请你自行设计实验方案并完成实验,并提交简洁明了,条例清晰的实验报告。

1、分析总结寻址方式字段的规律;

2、在你得到的指令全集中,有哪些是无意义的信息?

3、找出源操作数为立即寻址方式时的指令编码规律;

(1),分析总结寻址方式字段的规律

1380:0100 0000 ADD [BX+SI],AL //存储器寻址,没有位移量

1380:0100 004000 ADD [BX+SI+00],AL //存储器寻址,有8位位移量

1380:0100 00800000 ADD [BX+SI+0000],AL //存储器寻址,有16位位移量

1380:0100 00C0 ADD AL,AL //寄存器寻址

有这四个汇编语言可以知道,第二字节的高两位是用来区分另一个操作数在寄存器中(寄存器寻址)还是在存储器中(存储器寻址)。

1380:0100 0000 ADD [BX+SI],AL //存储器寻址,没有位移量

1380:0100 0008 ADD [BX+SI],CL

1380:0100 0010 ADD [BX+SI],DL

1380:0100 0028 ADD [BX+SI],CH

1380:0100 0020 ADD [BX+SI],AH

1380:0100 0030 ADD [BX+SI],DH

1380:0100 0038 ADD [BX+SI],BH

1380:0100 0018 ADD [BX+SI],BL

由上面的八个汇编语言可以看出,第二字节的3,4,5位是规定一个寄存器操作数。

1380:0100 0000 ADD [BX+SI],AL

1380:0100 0001 ADD [BX+DI],AL

1380:0100 0005 ADD [DI],AL

由上面可以看出第二字节的0,1,2位。R/M 字段受MOD 字段控制。若MOD=11,为寄存器方式,R/M 字段将指出第二操作数所在寄存器编号。MOD=00,01,10 为存储器方式,R/M 则指出如何计算存储器中操作数地址。

综上所述,得第二字节的格式如下:

(2),在你得到的指令全集中,有哪些是无意义的信息?

在得到的指令中当第一字节为FF,寻址方式字段由FC开使得到的指令是无意义的。

二、为了得到寻址方式字段的完整指令表,你一定使用了DOS的输入输出重定向功能,该输入文件的内容是完全人工输入的,其实这个.txt文件的内容是一些很有规律的debug命令,你能尝试编程序自动生成这个文件吗?(用任何你熟悉的语言编程)

算术运算指令:

ADD ADC INC AAA DAA .

SUB SBB DEC NEC CMP AAS DAS MUL IMUL AAM DIV IDIV AAD CBW CWD CWDE CDQ

数据传送指令:

MOV MOVSX MOVZX PUSH POP BSWAP

XCHG XADD XLAT IN OUT LEA

LDS LES LFS LGS LSS LAHF

SAHF

逻辑运算指令:

AND OR . XOR NOT TEST SHL SAL SHR SAR ROL ROR RCL RCR .

程序控制指令:

JMP CALL RET/RETF JAE/JNB. JB/JNAE JBE/JNA JG/JNLE JGE/JNL JL/JNGE JLE/JNG

JE/JZ JNE/JNZ JC JNC JNO

JNP/JPO JNS JO JP/JPE. JS LOOP LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ JECXZ INT INTO IRET HLT . WAIT .

ESC LOCK NOP STC CLC

CMC STD CLD STI CLI

C语言程序如下所示:

#include

#include

main()

{

FILE *fp; //fp为指向文件的指针

fp=fopen("in1.txt","w"); //表示以写的方式打开文件

if(fp==NULL)

printf("file open error\n");

else

{

char ch[60]="e 100 00 00 00 00 00 00";

fprintf(fp,"%s\n",ch);

char ch1[20]="e 101 ";

char ch3[20]="u 100 105";

char b='q';

int i=0,n=0;

while(n<256)

{

fprintf(fp,"%s%x\n",ch1,n); //向文件中写入e 101 十六进制数

fprintf(fp,"%s\n",ch3); //向文件中写入u 100 105,表示反汇编100至105

n++;

}

fprintf(fp,"%c\n",b); //在文件末尾写入q,表示退出debug

fclose(fp); //关闭文件

}

}

在debug中利用重定向输入和输出将生成in1.txt和out1.txt,使得生成的out1.txt文件中是经过反汇编语言的代码。通过观察这些代码,我们也可以得到关于8086指令集的一些构成规律。

生成的两个文件如下所示:

三,实验日志

20##年4月16日 星期六

1,在完成基本要求之后,开始做了第一个较高要求,这个较高要求并不难,只是考察我们的分析和对8086汇编语言指令格式的掌握程度,我通过找到几组汇编语言指令,分析了第二字节寻址方式字段的规律,并且根据要求在汇编语言集中找到了一些无意义的指令和立即寻址的指令格式,便于我们今后的计算机组成的学习,通过亲自操作增加对8086格式的理解,增强对编码的熟悉。

2,做第二较高要求时,因为对C语言中文件部分掌握不扎实,一开始看题目是对文件的操作编C语言有些害怕了,但是后来随着自己一边看以前的C语言的书一边编程实现一些功能,最后终于用C语言实现了较高实验的要求。

更多相关推荐:
计算机组成原理实验报告

计算机组成原理实验报告软件学院计算机组成原理实验报告专业班级学号日期学生姓名指导教师计算机组成原理实验报告运算器组成实验一实验目的1熟悉双端口通用寄存器堆的读写操作2熟悉简单运算器的数据传送通路3验证运算器74...

《计算机组成与结构》实验报告1

1实验目的1学习和了解TEC20xx十六位机监控命令的用法2学习和了解TEC20xx十六位机的指令系统3学习简单的TEC20xx十六位机汇编程序设计2实验内容1使用监控程序的R命令显示修改寄存器内容D命令显示存...

《计算机组成原理》运算器实验报告

《计算机组成原理》实验报告学院:专业:班级学号:AP0804114学生姓名:实验日期:指导老师:成绩评定:五邑大学信息学院计算机组成原理实验室实验一一、实验名称:运算器实验二、实验目的:1、掌握运算器的组成及工…

计算机组成原理实验报告

上海大学计算机学院计算机组成原理实验报告5姓名盛俊学号11121763教师王雪娟时间周一57机位11报告成绩实验名称综合应用1一实验目的1了解实验仪器数据总线的控制方式和运算器的使用2设计并实现一条新指令二实验...

计算机组成实验报告

湖南师范大学工学院计算机组成原理实验报告姓名年级专业计算机科学与技术学号任课教师开课时间20xx20xx学年第一学期湖南师范大学职业技术学院工学院实验数据报告单实验课程计算机组成原理实验题目基本运算器实验实验日...

计算机组成原理实验报告1

计算机组成原理实验报告1姓名学号教师时间地点机位实验名称数据传送实验一实验目的1理解自然语言形式命令的人工译码过程2学习系统部件和数据总线间传送数据的操作二实验原理寄存器的作用是用于保存数据的CP226实验仪用...

计算机组成原理实验报告

昆明理工大学信息工程与自动化学院学生实验报告20xx20xx学年第二学期课程名称计算机组成原理含数字逻辑开课实验室信自楼50420xx年4月12日目录实验一LED显示2页实验二运算器4页实验三存储器9页实验四总...

计算机组成ALU实验报告

计算机组成与系统结构实验报告院系计算机科学与技术学院专业班级学号姓名同组者指导教师实验时间20xx年3月28日实验目的1进一步熟悉AltebraQuartusII开发环境包括各种输入方法功能仿真综合实现等2进一...

计算机组成原理实验一报告

实验一基础汇编语言程序设计1实验目的1学习和了解TECXP教学实验系统监控命令的用法2学习和了解TECXP教学实验系统的指令系统3学习简单的TECXP教学实验系统汇编程序设计2实验内容1学习联机使用TECXP教...

计算机组成原理实验报告2

上海大学计算机组成原理实验报告二姓名学号座位号上课时间教师报告成绩一实验名称运算器实验二实验目的1学习数据处理部件的工作方式控制2学习机器语言程序的运行过程三实验原理CP226实验仪的运算器由一片CPLD实现包...

计算机组成原理实验报告

计算机组织与体系结构实验报告班级031013学号03101283姓名黄辉煌实验地点E区311实验时间20xx611实验一存储器实验一实验目的1掌握FPGA中lpmROM的设置作为只读存储器ROM的工作特性和配置...

计算机组成原理与汇编实验报告

计算机组成原理与汇编课程设计实验报告学院信息科学与工程学院专业班级信息安全1301班指导老师何小贤学号0906130119姓名田泽佳目录一课程设计目标3二课程设计基本要求3三课程设计的内容3四课程设计的要求5五...

计算机组成实验报告(21篇)