我是MIPS中的新成員,我試圖判斷字符串中的每個字符是否都是alpha。我用ASCII代碼來幫助我判斷它,而我發現沒有代表larger than
含義的指令。所以我嘗試從我所知道的指令中實施一個not
操作。這裏是我的代碼的一部分:如何在MIPS中實現NOT操作?
isAlpha:
sltiu $t0, $s2, 123
sltiu $t1, $s2, 97
nor $t1, $t1, $t1
and $t0, $t0, $t1
sltiu $t2, $s2, 107
sltiu $t3, $s2, 81
nor $t3, $t3, $t3
and $t2, $t2, $t3
or $t0, $t0, $t2
bne $t0, $zero, countAlpha
jr $ra
但是,我無法得到我想要的結果。我設置一個斷點,發現我的not
操作似乎有一些問題:
在我的例外,$ T1應該是1和$ T2應爲0,而實際情況並非如此。
我的代碼在哪裏錯了?有什麼方法可以在MIPS中實現not
操作?或者是否有更好的方法在MIPS中實現larger than
的含義?提前致謝。
我創造了這個答案的邏輯與,但在發佈前,我找到了你的。因爲我認爲你已經足夠了,所以我幾乎不會發布我的[有一個額外的'和'指令],並且支持你的。然後,我意識到我擔心的邊緣情況是真實的。但是,無論如何,+1。看到我的答案是什麼/爲什麼 –
@Craig Estey您在回答「兩個零的xor是1」中說你確定嗎? – sfi
我想我當時睡眠不足:-) –