北邮实验三----DLX处理器程序设计

合集下载

DLX指令集实验

DLX指令集实验

DLX指令集实验
实验报告
北京交通大学计算机与信息技术学院计科1104(进修生)03班
房皓13410801
2014/3/26
一.实验目的
1. 熟悉DLX的指令集格式。

二.实验内容
1. 熟悉winDLX模拟器,并确定指令格式中各个域的具体值。

包括如下内容:
①将附件中的WinDLX.Zip文件解压到你的电脑中。

②阅读附件中的wdlxtut.pdf文件,并按其中的步骤操作、学习winDLX
模拟器。

③对于FACT.S程序,请从中选出10条程序,并对于其中每条指令,指
出它是哪种指令(R-type,I-type,还是J-type),并参照教科书57
页图,填写指令格式中各个域的二进制值(提示:将程序载入到模拟
器后,可在CODE子窗口中观察到)。

为了清楚,最好用填表的形式。

2. 用DLX汇编语言编写一个冒泡排序程序。

并在模拟器上调试成功。

要求:
①独立完成。

(如果你想了解多DLX指令集,可自己在百度上搜索。


②程序有比较详细的注释。

③对程序的设计思路有一个比较清楚的说明。

三.实验结果
1、对于FACT.S程序中所选的10条指令的分析:
分析所用的是code子窗口中提供的内容,如下图所示
图1:code子窗口
分析结果:
四.实验总结
通过本次实验,我锻炼了自己动手操作能力,并对理论知识有了进一步的了解,对winDLX流水线模拟器有了初步的了解,并熟悉了DLX的指令集格式。

北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。

二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。

3. 用DEBUG 将可执行文件调入,并进行调试。

1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。

2) 用U 命令对目标代码反汇编,观察反汇编后的结果。

注意发现源程序的起始位置,并记录这个起始地址。

3) 用T 命令作单步跟踪调试。

比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。

北邮程序设计实验报告

北邮程序设计实验报告

实验名称:程序设计实验实验时间:2023年X月X日实验地点:北邮计算机实验室一、实验目的1. 熟悉C语言编程环境,掌握基本的程序设计方法。

2. 通过实际编程,提高逻辑思维和问题解决能力。

3. 理解算法设计的重要性,掌握常用的算法设计方法。

二、实验内容本次实验主要分为以下几个部分:1. 编写一个计算两个整数相加的程序。

2. 编写一个计算两个整数相减的程序。

3. 编写一个计算两个整数相乘的程序。

4. 编写一个计算两个整数相除的程序(要求考虑除数为0的情况)。

5. 编写一个判断两个整数是否相等的程序。

三、实验步骤1. 打开C语言编程环境,创建一个新的项目。

2. 编写计算两个整数相加的程序:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数相加的结果为:%d\n", sum); return 0;}```3. 编写计算两个整数相减的程序:```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sub = a - b;printf("两个整数相减的结果为:%d\n", sub); return 0;}```4. 编写计算两个整数相乘的程序:```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);mul = a b;printf("两个整数相乘的结果为:%d\n", mul);return 0;}```5. 编写计算两个整数相除的程序(考虑除数为0的情况):```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0,请重新输入。

北邮微机原理硬件实验报告

北邮微机原理硬件实验报告

北邮微机原理硬件实验报告实验目的本次实验主要是通过对微机原理的学习,掌握多种硬件器件的基本使用,包括程序寄存器(PRG)、数据寄存器(DR)、累加器(AC)等,也希望能够初步了解微机系统的结构和工作原理。

实验内容1. 按以下程序编写汇编程序ORG 0HLOOP: MOV A,NUMADD BINC R5MOV MEM,R5SJMP LOOPENDNUM: DB 50HB: DB 35HR5: EQU 25HMEM: DS 1编写程序后,运行该程序,观察程序在8051微处理器上执行的情况。

2. 制作简易流水灯电路使用LED等元器件,制作一个简单的流水灯电路。

同时,编写相应的汇编程序,实现流水灯的基本效果。

3. 实现双向流水灯效果在完成流水灯电路的基础上,通过改变程序实现双向流水灯的效果。

在这个过程中,需要仔细分析程序的实现方式,并且结合8615芯片的具体情况,理解程序在底层机器中的工作方式。

4. 实现用数码管显示数字的功能使用7段数码管,将程序输出的结果显示在数码管上。

在这个过程中,我们需要灵活处理I/O端口和存储器的读写,以及处理各类中断信号。

实验过程1. 编写并调试汇编程序我们首先使用Keil软件编写了相应的汇编程序,并在8051单片机上运行。

在运行过程中发现,程序能够成功地对NUM与B进行加法运算,并将结果存储在MEM中。

2. 制作流水灯电路我们使用LED、电阻等元器件,制作了一个简单的流水灯电路,并测试了该电路的基本工作情况。

由于电路较为简单,因此没有出现特别明显的问题。

3. 实现双向流水灯效果为了实现双向流水灯效果,我们对程序进行了修改。

在这个过程中,初步出现了一些问题,包括倒计时初始值不正确、程序中断启动终止不及时等。

经过反复调试,我们成功地实现了这一功能。

4. 实现用数码管显示数字的功能最后,我们将流水灯程序变更为用数码管显示数字的程序。

在这个过程中,我们主要用到了表格查找和存储器读写等基本操作,成功将结果在数码管上显示。

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。

·实验准备................................................................................ 错误!未定义书签。

·实验环境................................................................................ 错误!未定义书签。

·实验步骤................................................................................ 错误!未定义书签。

·实验内容及要求.................................................................... 错误!未定义书签。

·实验过程............................................................................. 错误!未定义书签。

·实验总结............................................................................. 错误!未定义书签。

实验二指令流水线相关性分析 ............................................... 错误!未定义书签。

·实验目的............................................................................. 错误!未定义书签。

DLX使用实验

DLX使用实验

1.1为程序逐行标注注释,阐述程序的作用和运行原理.data ;数据段开始.global Count ;声明全局变量CountCount: .word 10 ;声明Count为word型数据,值为10 .global Table ;声明全局变量TableTable: .space Count*4 ;声明Table为一段空的存储空间,大小为4*Count .text ;代码段开始.global main ;声明main为全局变量main: ;程序开始;*** Initializationaddi r1,r0,0 ;初始化r1的值为0,r1指向Tableaddi r2,r0,2 ; 初始化r2的值为2;*** Determine, if R2 can be divided by a value in tableNextV alue: addi r3,r0,0 ; 初始化r3的值为0,r3指向TableLoop: seq r4,r1,r3 ;如果r1=r3,那么r4=1,否则r4=0。

即r1与r3重合bnez r4,IsPrim ;r4不为零的话转到IsPrimlw r5,Table(R3) ;将r3所指的存储单元里的数据送给r5寄存器divu r6,r2,r5 ;r2除以r5的商送给r6multu r7,r6,r5 ; r5乘以r6的乘积送给r7subu r8,r2,r7 ;r2减r7的结果送r8beqz r8,IsNoPrim ;r8里面数据为0就跳到IsNoPrimaddi r3,r3,4 ;r3加4j Loop ;继续循环IsPrim: ;*** Write value into Table and increment indexsw Table(r1),r2 ;将r2里的数据写到r1所指向的存储单元里面addi r1,r1,4 ;r1往下移一个单元;*** 'Count' reached?lw r9,Count ;将10赋给r9srli r10,r1,2 ;r1右移2位给r10sge r11,r10,r9 ;如果r10>=r9,r11=1bnez r11,Finish ;r11不为0的话就结束IsNoPrim: ;*** Check next valueaddi r2,r2,1 ;increment R2 ;r2自加1j NextV alue ;进行下一个数的判断Finish: ;*** endtrap 0 ;退出判断若干个整数是否为素数。

北邮大三下 计算机系统结构实验报告 实验一到五 WINDLX模拟器

北邮大三下 计算机系统结构实验报告 实验一到五 WINDLX模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院 2011211311班薛玥(2011211432)目录实验一 WINDLX模拟器安装及使用 (3).实验准备 (3).实验环境 (4).实验步骤 (5).实验内容及要求 (5).实验过程 (5).实验总结 (11)实验二指令流水线相关性分析 (12).实验目的 (12).实验环境 (12).实验步骤 (12).实验过程 (12).实验总结 (19)实验三DLX处理器程序设计 (20).实验目的 (20).实验环境 (20).实验步骤 (20).实验过程 (20)A.向量加法代码及性能分析 (20)B.双精度浮点加法求和代码及结果分析 (26).实验总结 (31)实验四代码优化 (32).实验目的 (32).实验环境 (32).实验原理 (32).实验步骤 (32).实验过程 (32).实验总结+实习体会 (37)实验五循环展开 (38).实验目的 (38).实验环境 (38).实验原理 (38).实验步骤 (38).实验过程 (38)矩阵乘程序代码清单及注释说明 (38)相关性分析结果 (43)增加浮点运算部件对性能的影响 (43)增加forward部件对性能的影响 (43)转移指令在转移成功和转移不成功时候的流水线开销 (43).实验总结+实习体会+课程建议 (43)实验一 WINDLX模拟器安装及使用·实验准备1.了解DLX的基本结构和原理DLX是一种典型的Load/Store型指令集结构。

它具有一套简单的Load/Store 指令集;它注重指令流水效率;它简化指令的译码;它高效支持编译器。

2.了解DLX中的寄存器DLX中有32个通用寄存器(GPRs),分别将其命名为R0,R1...R31。

每个通用寄存器长度为32位。

另外,DLX中有32个浮点寄存器(FPRs),分别将其命名为F0,F1 (31)3.了解DLX数据类型DLX提供了多种长度的整型数据和浮点数据。

北邮实验三 DLX处理器程序设计

北邮实验三    DLX处理器程序设计

北京邮电大学计算机学院《计算机系统结构》课程实验2015年4月实验三DLX处理器程序设计实验类别:综合型实验目的:学习使用DLX汇编语言编程,进一步分析相关现象实验学时:4实验组人数:1/1实验设备环境:DLX汇编语言环境实验原理:掌握向量运算算法和编程方法。

教学要点与学习难点:DLX汇编语言实验内容和要求:自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并输出结果。

向量长度>=16。

观察程序中出现的数据/控制/结构相关实验步骤:(1)熟悉DLX汇编语言。

(2)编写两双精度浮点一维向量的加法运算程序。

(3)对此程序完成上面实验二中1)、2)、3)、4)方面的分析。

程序代码.data;初始化两个用于相加的一维向量(双精度浮点数),向量长度为20a: .double , , , , , , , , , ,,,,,,,,,,b: .double , , , , , , , , , ,,,,,,,,,,PrintfFormat: .asciiz "The result is\n\n%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\n\n" .align 2PrintfPar: .word PrintfFormatr: .space 200;r为保存相加结果的向量空间.text.global mainmain:addi r1,r0,0 ;r1计数相加的次数addui r4,r0,8 ;r4为常数8loop: ;循环计算向量相加结果subi r2,r1,20 ;r1=20时,跳转到finishbeqz r2,finishmultu r3,r1,r4 ;r3为当前分量相对于向量基址的偏移(每个分量占8B)ld f0,a(r3) ;取a中第r1个分量ld f2,b(r3) ;取b中第r1个分量addd f4,f0,f2 ;相加结果放在f4中sd r(r3),f4 ;将相加结果放入结果向量r中addi r1,r1,1 ;下一分量j loopfinish: ;输出向量相加的结果addi r14,r0,PrintfPartrap 5trap 0运行结果Statistics可以看到具体数据情况和产生相关的比例等结果分析数据相关由Statistics中的知道,发生了%的数据相关。

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

北京邮电大学
计算机学院
《计算机系统结构》课程实验
2015年4月
实验三DLX处理器程序设计
一、实验类别:综合型
二、实验目的:学习使用DLX汇编语言编程,进一步分析相关现象
三、实验学时:4
四、实验组人数:1/1
五、实验设备环境:
DLX汇编语言环境
六、实验原理:掌握向量运算算法和编程方法。

七、教学要点与学习难点:DLX汇编语言
八、实验内容和要求:
自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并输出结果。

向量长度>=16。

观察程序中出现的数据/控制/结构相关
九、实验步骤:
(1)熟悉DLX汇编语言。

(2)编写两双精度浮点一维向量的加法运算程序。

(3)对此程序完成上面实验二中1)、2)、3)、4)方面的分析。

相关文档
最新文档