實驗目的
:用mips的
精簡指令實現
x86中
複雜的串指令的功能,
體會其區別
實驗內容
:利用系統功能呼叫從鍵盤輸入乙個字串,然後輸入單個字元,查詢該字串中是否有該字元。具體要求如下:
(1)
如果找到,則在螢幕上顯示:
success!!! location: x
其中,x
為該字元在字串中第一次出現的位置
(2)
如果沒找到,則在螢幕上顯示:
fail!!!
(3)
輸入乙個字串後,可以反覆輸入希望查詢的字元,直到按esc
鍵結束程式
(4)
程式結束時,在螢幕上顯示本人的姓名全拼和學號
(5)
每個輸入字元獨佔一行,輸出查詢結果獨佔一行,位置編碼從0
開始,格式
示例如下:
abcdefgh
asuccess!!! location: 0 j
fail!!!
.data
myname: .asciiz "\r\nname: wu yiting\r\n"
myid: .asciiz "id: 1200012875\r\n"
suc: .asciiz "\nsuccess!!!location:"
fail: .asciiz "\r\nfail!!!\r\n"
buf: .space 100
.text
.globl main
main:
la $a0, buf
la $a1, 100
li $v0, 8 #input a string
syscall
# $a0 = address of input bufferll
# $a1 = maximum number of characters to read
inputchar:
li $v0, 12 # input a char
syscall
addi $t7, $0, '?'
sub $t6, $t7, $v0
beq $t6, $0, exit
add $t0, $0, $0
la $s1, buf
find_loop:
lb $s0, 0($s1)
sub $t1, $v0, $s0
beq $t1, $0, success
addi $t0, $t0, 1
slt $t3, $t0, $a1
beq $t3, $0, failed
addi $s1 $s1, 1
j find_loop
success:
la $a0, suc
li $v0, 4
syscall
addi $a0, $t0, 1
li $v0, 1
syscall
j inputchar
failed:
la $a0, fail
li $v0, 4
syscall
j inputchar
exit:
la $a0, myname
li $v0, 4
syscall
la $a0, myid
li $v0, 4
syscall
li $v0, 10
syscall
沒什麼難度,依次比對各字元即可,輸出時可直接輸出數字,相對x86簡單很多
MIPS學習筆記 1 字串 string 比較
1 題目是這樣的 要求輸入乙個短字串,與事先存好的乙個長字串比較,看輸入字串是否為該字串的子串。2 要點 字串的儲存方式。mips中字串按照byte方式儲存,字串的結束標誌是00,所以判斷乙個字串結束是可以利用 zero來判斷。但是本題比較特殊,因為主串結尾處沒有加 n 0a 而從鍵盤輸入的子串最後...
字串的比較 查詢 替換
1 public boolean equals object anobject 區分大小寫的比較 2 public boolean equalsignorecase string anotherstring 不區分大小寫的比較 3 public nt compareto string another...
比較字串
其實這是在 c 從入門到精通 上摘抄的,由於不知道漢字怎麼排序,就查了查書,寫在這裡也可以幫助其他初學者更方便的找到漢字的排序方法。用於排序 int compare string str1,string str2 int compare string str1,string str2,bool ig...