第一次互评作业:MIPS汇编程序设计
2017-10-03 18:03
246 查看
第一题:用系统功能调用实现简单输入输出
利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下:
(1) 如果输入的是字母(A~Z,区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,对应关系见下表
(2) 若输入的不是字母或数字,则在屏幕上输出字符“*”,
(3) 每输入一个字符,即时转换并在屏幕上显示,
(4) 支持反复输入,直到按“?”键结束程序。
第二题:字符串查找比较
利用系统功能调用从键盘输入一个字符串,然后输入单个字符,查找该字符串中是否有该字符(区分大小写)。具体要求如下:
(1) 如果找到,则在屏幕上显示:
Success! Location: X
其中,X为该字符在字符串中第一次出现的位置
(2) 如果没找到,则在屏幕上显示:
Fail!
(3) 输入一个字符串后,可以反复输入希望查询的字符,直到按“?”键结束程序
(4) 每个输入字符独占一行,输出查找结果独占一行,位置编码从1开始。
提示:为避免歧义,字符串内不包含"?"符号
格式示例如下:
abcdefgh
a
Success! Location: 1
x
Fail!
利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下:
(1) 如果输入的是字母(A~Z,区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,对应关系见下表
(2) 若输入的不是字母或数字,则在屏幕上输出字符“*”,
(3) 每输入一个字符,即时转换并在屏幕上显示,
(4) 支持反复输入,直到按“?”键结束程序。
.data u_word: .asciiz "Alpha ","Bravo ","China ","Delta ","Echo ","Foxtrot ", "Golf ","Hotel ","India ","Juliet ","Kilo ","Lima ", "Mary ","November ","Oscar ","Paper ","Quebec ","Research ", "Sierra ","Tango ","Uniform ","Victor ","Whisky ","X-ray ", "Yankee ","Zulu " uw_offset: .word 0,7,14,21,28,34,43,49,56,63,71, 77,83,89,99,106,113,121,131, 139,146,155,163,171,178,186 l_word: .asciiz "alpha ","bravo ","china ","delta ","echo ","foxtrot ", "golf ","hotel ","india ","juliet ","kilo ","lima ", "mary ","november ","oscar ","paper ","quebec ","research ", "sierra ","tango ","uniform ","victor ","whisky ","x-ray ", "yankee ","zulu " lw_offset: .word 0,7,14,21,28,34,43,49,56,63,71, 77,83,89,99,106,113,121,131, 139,146,155,163,171,178,186 number: .asciiz "zero ", "First ", "Second ", "Third ", "Fourth ", "Fifth ", "Sixth ", "Seventh ","Eighth ","Ninth " n_offset: .word 0,6,13,21,28,36,43,50,59,67 .text .globl main main: li $v0, 12 # read character syscall sub $t1, $v0, 63 # '?' beqz $t1, exit sub $t1, $v0, 48 # '0' slt $s0, $t1, $0 # if t1 < 0 then s0 = 1 bnez $s0, others # is number? sub $t2, $t1, 10 # number slt $s1, $t2, $0 # if t2 < 0 then s1 = 1 bnez $s1, getnum # is capital? sub $t2, $v0, 91 slt $s3, $t2, $0 # if v0 <= 'Z' then s3 = 1 sub $t3, $v0, 64 sgt $s4, $t3, $0 # if v0 >='A' then s4 = 1 and $s0, $s3, $s4 # if s3 == 1 && s4 == 1 bnez $s0, getuword # is lower case? sub $t2, $v0, 123 slt $s3, $t2, $0 # if v0 <= 'z' then s3 = 1 sub $t3, $v0, 96 sgt $s4, $t3, $0 # if v0 >= 'a' then s4 = 1 and $s0, $s3, $s4 bnez $s0, getlword j others getnum: add $t2, $t2, 10 sll $t2, $t2, 2 la $s0, n_offset add $s0, $s0, $t2 lw $s1, ($s0) la $a0, number add $a0, $a0, $s1 li $v0, 4 syscall j main # upper case word getuword: sub $t3, $t3, 1 sll $t3, $t3, 2 la $s0, uw_offset add $s0, $s0, $t3 lw $s1, ($s0) la $a0, u_word add $a0, $s1, $a0 li $v0, 4 syscall j main # lower case word getlword: sub $t3, $t3, 1 sll $t3, $t3, 2 la $s0, lw_offset add $s0, $s0, $t3 lw $s1, ($s0) la $a0, l_word add $a0, $s1, $a0 li $v0, 4 syscall j main others: and $a0, $0, $0 add $a0, $a0, 42 # '*' li $v0, 11 # print character syscall j main exit: li $v0, 10 # exit syscall
第二题:字符串查找比较
利用系统功能调用从键盘输入一个字符串,然后输入单个字符,查找该字符串中是否有该字符(区分大小写)。具体要求如下:
(1) 如果找到,则在屏幕上显示:
Success! Location: X
其中,X为该字符在字符串中第一次出现的位置
(2) 如果没找到,则在屏幕上显示:
Fail!
(3) 输入一个字符串后,可以反复输入希望查询的字符,直到按“?”键结束程序
(4) 每个输入字符独占一行,输出查找结果独占一行,位置编码从1开始。
提示:为避免歧义,字符串内不包含"?"符号
格式示例如下:
abcdefgh
a
Success! Location: 1
x
Fail!
.data msg_s: .asciiz "\r\nSuccess! Location: " msg_f: .asciiz "\r\nFail!\r\n" s_end: .asciiz "\r\n" buf: .space 100 .text .globl main main: la $a0, buf # address of input buffer la $a1, 100 # maximum number of characters to read li $v0, 8 # read string syscall inputchar: li $v0, 12 # read character syscall addi $t7, $0, 63 # '?' 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, fail addi $s1 $s1, 1 j find_loop success: la $a0, msg_s li $v0, 4 # print string syscall addi $a0, $t0, 1 li $v0, 1 # print integer syscall la $a0, s_end li $v0, 4 syscall j inputchar fail: la $a0, msg_f li $v0, 4 syscall j inputchar exit: li $v0, 10 syscall
相关文章推荐
- 计算机组成第一次互评作业:MIPS汇编程序设计
- Coursera - 计算机组成 - W3 - MIPS汇编程序设计
- c程序语言设计第七次课后作业
- 设计一个学生作业完成情况的管理程序
- 汇编,C,C++,计算机硬件,数据结构算法,计算机网络,设计模式,这些任何一门不精通,你根本就不懂程序,更不可能成为大牛,Hack就更谈不上了。
- linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作
- 201521123118《java程序与设计》第七次作业
- 第三次C程序语言设计作业
- 作业2设计一个随机生成小学四则运算的程序
- 程序设计实践(一)作业之二分查找
- 2017 程序设计实习之C++部分作业题汇总 - B:面向对象基础
- 王爽汇编 第六章包含多个段的程序 作业
- 实时软件控制设计第一次作业
- 第一次交的程序大作业 -八皇后问题(1)
- 程序设计实践-规则汇编
- 第一次尝试汇编:一个简单C程序的分析。
- 第一次作业 图解汇编代码以及分析计算机是如何工作的
- 我的第一次汇编作业!
- 编写计算“两个整数的最大公约数”程序 (第一次作业)
- 32位环境下的16汇编程序设计