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: 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简单很多
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值