2010-04-06 53 views

回答

2

你可能想看看,看看這些鏈接會幫助你。

http://en.wikipedia.org/wiki/MIPS_architecture#MIPS_Assembly_Language

http://chortle.ccsu.edu/AssemblyTutorial/index.html#part8

您也可以有所幫助: http://www.uni-koblenz.de/~avolk/MIPS/Material/MIPSFloatingPointInstructions.pdf

它已經,因爲我做了彙編語言編程很長的時間,但是,如果您通過100 < mul.s乘>那麼你將號碼複製到一個整數寄存器,然後如果你用100 < div分>,那麼你將只有右側的兩個數字。我期望,小數點左邊的數字在LO中,右邊的數字應該在HI中。

+0

嗯,這是有道理的,當你做mul.s除非,你需要把它放在一個「f」寄存器。 – Roger 2010-04-06 01:19:22

+0

對,你會做mul.s,然後將結果複製到一個整數寄存器中,然後進行分割。 – 2010-04-06 01:22:06

+0

啊我看到...謝謝,貢納嘗試,然後我就發表評論,並讓你知道如何去。謝謝詹姆斯。 – Roger 2010-04-06 01:23:30

2

最簡單的事情是:

  1. 乘100(mul.d)的值,
  2. 輪的整數,(round.l.d),
  3. 轉換回浮點(cvt.d.l)和
  4. 除以100(div.d)。
1

爲了實現截斷(不四捨五入)的MIPS,你可以做以下

# Note: The number you want to truncate is in $f12 

##### Load 100 ##### 
li $t5,100        # t5 = 100 (word),  t5 (word) 
mtc1 $t5,$f5       # f5 = t5 (word),  f5 (word) 
cvt.s.w $f5,$f5       # f5 = wordToSingle(f5), f5 (single) 

##### Multiply f12(single) by 100 (single) #####  
mul.s $f12,$f12,$f5      # f12 = f12 (single) * f5 (single), f12 (single) 

##### Truncate single to word ##### 
trunc.w.s $f12,$f12      # f12 = truncWordToSingle(f12 (single)), f12 (word) 

##### Convert from word to single ##### 
cvt.s.w $f12,$f12      # f12 = convertWordToSingle(f12 (word)), f12 (single) 

##### Divide by 100 ##### 
div.s $f12,$f12,$f5      # f12 = f12 (single)/f5 (single), f12 (single)