体系结构实验-DLX指令集-输入

来源:互联网 发布:衡水数控编程招聘 编辑:程序博客网 时间:2024/05/17 21:42
体系结构实验-DLX指令集-输入-伪汇编

;*********** WINDLX Ex.1: Read a positive integer number*************

;-----------------------------------------------------------------------------
;Subprogram call by symbol "InputUnsigned"
;expect the address of a zero-terminated prompt string inR1
;returns the read value in R1
;changes the contents of registers R1,R13,R14
;-----------------------------------------------------------------------------

.data

;*** Data for Read-Trap
ReadBuffer: .space 80
ReadPar: .word 0,ReadBuffer,80

;*** Data for Printf-Trap
PrintfPar: .space 4

SaveR2: .space 4
SaveR3: .space 4
SaveR4: .space 4
SaveR5: .space 4

.text
.global InputUnsigned

InputUnsigned:
;*** save register contents;(sw:存储字)
sw SaveR2,r2
sw SaveR3,r3
sw SaveR4,r4
sw SaveR5,r5

;*** Prompt
sw PrintfPar,r1
addi r14,r0,PrintfPar ;r14=r1
trap 5

;*** call Trap-3 to read line
addi r14,r0,ReadPar ;r14=ReadPar
trap 3

;*** determine value确定值
addi r2,r0,ReadBuffer ;r2=ReadBuffer
addi r1,r0,0 ;r1清零
addi r4,r0,10         ; Decimalsystem

Loop: ;*** reads digits to end of line
lbu r3,0(r2) ;加载
seqi r5,r3,10 ;LF -> Exit
subi r3,r3,48
              bnez r5,Finish

multu r1,r1,r4 ;Shift decimal改变小数
add r1,r1,r3
addi r2,r2,1 ;increment pointer增加指针
j Loop
Finish: ; restore old register contents
lw r2,SaveR2
lw r3,SaveR3
lw r4,SaveR4
lw r5,SaveR5
jr r31 ; Return
原创粉丝点击