MIPS:字符串查找比较

实验目的:用MIPS精简指令实现x86复杂的串指令的功能,体会其区别

实验内容:利用系统功能调用从键盘输入一个字符串,然后输入单个字符,查找该字符串中是否有该字符。具体要求如下:

(1) 如果找到,则在屏幕上显示:

Success!!! Location: X

其中,X为该字符在字符串中第一次出现的位置

(2) 如果没找到,则在屏幕上显示:

Fail!!!

(3) 输入一个字符串后,可以反复输入希望查询的字符,直到按ESC键结束程序

(4) 程序结束时,在屏幕上显示本人的姓名全拼和学号

(5) 每个输入字符独占一行,输出查找结果独占一行,位置编码从0开始,格式示例如下:

   abcdefgh

   a

Success!!! Location: 0

  j

  Fail!!! 

 .data
myname: .asciiz "\r\nNAME: Alsa\r\n"
myid: .asciiz "ID: Alsa\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简单很多

######################################################################################

转载于:https://my.oschina.net/alsavictoria/blog/219636

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值