实验一熟悉WinDLX的使用

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

实验一熟悉WinDLX的使用

1.实验目的:

通过本实验,熟悉WinDLX模拟器的操作和使用,了解DLX指令集结构及其特点。

2.实验内容:

(1)用WinDLX模拟器执行求阶乘程序facts。执行步骤详见“WinDLX教程”。

这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了input. s中的输入子程序,这个子程序用于读入正整数。

(2)输入数据“3”采用单步执行方法,完成程序并通过上述使用 WinDLX,总结WinDLX的特点。

(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。

3.实验程序:

求阶乘程序facts

;***********WINDLX Ex.2: Factorial*************

Program begin at symbol main

requires module INPUT

read a number from stdin and calculate the factorial (type: double) the result is written to stdout

.data

Prompt: .asciiz "An integer value >1:”

PrintfFormat: .asciiz "Factorial=%g\n\n"

.align 2

PrintfPar: .word PrintfFormat

PrintfValue: .space 8

.text

.global main

mam:

;***Read value from stdin into R1

addi r1,r0,Prompt

j al InputUnsigned;***init values

movi2fp f10,r1 ;R1一>DO DO二Count register

cvti2d f0,f10

addi r2,r0,1;1一>D2 D2..result

movi2fp fl 1,r2

cvti2d伦,fl l

movd f4,fZ;1一>D4 D4二Constant 1

;***Break loop if DO=1

Loop: led f0,f4 ;DO<=1?

bfpt Finish

;***Multiplication arid next loop

multd伦,fZ,fO

subd f0,f0,f4

j Loop

Finish:;***write result to stdout

sd PrintfValue,f2

addi r14,r0,PrintfPar

trap 5

;***end

trap 0

该程序中调用了input. s中的输入子程序

;***********WINDLX Ex. l : Read a positive integer number************* ;Subprogram call by symbol "InputUnsigned"

;expect the address of a zero-terminated prompt string in R1

;returns the read value in R1

;changes the contents of registers R1,R13,R14

.data

;***Data for Read-Trap

ReadBuffer: .space 80

ReadPar: .word O,ReadBuffer,80

;***Data for Printf-Trap

PrintfPar: .space 4

SaveR2: .space 4

SaveR3:.space 4

SaveR4: .space 4

SaveRS:.space 4

.text

.global InputUnsigned

InputUnsigned:

;***save register contents

sw SaveR2,r2

sw SaveR3,r3

sw SaveR4,r4

sw SaveR5,r5

; * * * Prompt

sw PrintfPar,rl

addi r14,r0,PrintfPar

trap 5

;***call Trap-3 to read line

addi r14,r0,ReadPar

trap 3

;***determine value

addi r2,r0,ReadBuffer

addi r1,r0,0

addi r4,r0,10 ;Decimal system

Loop:;***reads digits to end of line

lbu r3,0(r2)

seqi r5,r3,10 ;LF一>Exit

bnez rS,Finish

subi r3,r3,48;??

multu rl,rl,r4 ;Shift decimal

add rl,rl,r3

addi r2,r2,1 ;increment pointer

j Loop

Finish:;***restore old register contents 1w r2,SaveR2

1w r3,SaveR3

1w r4,SaveR4

1w rS,SaveRS

jr r31;Retur

4.实验过程截图:

相关文档
最新文档