MIPS 字串查詢比較

2021-06-21 10:23:37 字數 1826 閱讀 8021

實驗目的

:用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...