资源描述:
《实验一 熟悉WinDLX的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、HUNANUNIVERSITY实验一熟悉WinDLX的使用学生班级:计科2班学生姓名:杨凌霄一.实验目的:通过本实验,熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。二.实验内容:(一)WinDLX的安装:1.WinDLX是一个基于Windows的模拟器,能够演示DLX流水线是如何工作的。WinDLX包含windlx.exe和windlx.hlp文件。同时,还需要一些扩展名为.s的汇编代码文件。按以下步骤在Windows下安装WinDLX:⑴WinDLX创建目录,例如D:WINDLX⑵解压WinDLX软件包或拷贝所有
2、的WinDLX文件(至少包含windlx.exe,windlx.hlp)到这个WinDLX目录。2.启动和配置WinDLX:双击WinDLX图标,将出现一个带有六个图标的主窗口,双击这些图标会弹出子窗口.为了初始化模拟器,点击File菜单中的Resetall菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。(二)程序介绍1.求阶乘程序fact.s这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。 该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。1.程序gcm
3、.sgcm.s程序从标准输入读入两个整数,求他们的greatestcommonmeasure,然后将结果写到标准输出。3.求素数程序prim.sprim.s程序计算若干个整数的素数。三、实验程序1.求阶乘程序Fact.s:;------------------------------------------------------------------------;Programbeginatsymbolmain;requiresmoduleINPUT;readanumberfromstdinandcalculatethefactoria
4、l(type:double);theresultiswrittentostdout;--------------------------------------------------------------------------.dataPrompt:.asciiz"Anintegervalue>1:"PrintfFormat:.asciiz"Factorial=%g".align2PrintfPar:.wordPrintfFormatPrintfValue:.space8.text.globalmainmain:;***Rea
5、dvaluefromstdinintoR1addir1,r0,PromptjalInputUnsigned;***initvaluesmovi2fpf10,r1;R1->D0D0..Countregistercvti2df0,f10addir2,r0,1;1->D2D2..resultmovi2fpf11,r2cvti2df2,f11movdf4,f2;1->D4D4..Constant1;***BreakloopifD0=1Loop:ledf0,f4;D0<=1?bfptFinish;***Multiplicationandnextloo
6、pmultdf2,f2,f0subdf0,f0,f4jLoopFinish:;***writeresulttostdoutsdPrintfValue,f2addir14,r0,PrintfPartrap5;***endtrap02.输入子程序Input.s;-------------------------------------------------------------------;Subprogramcallbysymbol"InputUnsigned";expecttheaddressofazero-terminatedprom
7、ptstringinR1;returnsthereadvalueinR1;changesthecontentsofregistersR1,R13,R14;-----------------------------------------------------------------------------.data;***DataforRead-TrapReadBuffer:.space80ReadPar:.word0,ReadBuffer,80;***DataforPrintf-TrapPrintfPar:.space4SaveR2:.
8、space4SaveR3:.space4SaveR4:.space4SaveR5:.space4.text.globalInputUnsignedInputUnsigned:;*