第一题:用系统功能调用实现简单输入输出

利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下:

如果输入的是字母(A~Z,区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,对应关系见下表
若输入的不是字母或数字,则在屏幕上输出字符“*”
每输入一个字符,即时转换并在屏幕上显示
支持反复输入,直到按“?”键结束程序

第一题代码:

 .data
suc: .asciiz "\nSuccess!!!Location:"
fail: .asciiz "\r\nFail!!!\r\n"
buf: .space 100.text.globl main
main: la $a0, bufla $a1, 100li $v0, 8  #8 means to input a stringsyscall# $a0 = address of input bufferll# $a1 = maximum number of characters to read
inputchar:  li $v0, 12  # input a charsyscall addi $t7, $0, '?'sub $t6, $t7, $v0beq $t6, $0, exitadd $t0, $0, $0la $s1, buf
find_loop:      lb $s0, 0($s1)addi $t2, $0, '\n'sub $t2, $v0, $t2beq $t2, $0, nonesub $t1, $v0, $s0beq $t1, $0, successaddi $t0, $t0, 1slt $t3, $t0, $a1beq $t3, $0, failedaddi $s1 $s1, 1j find_loop
none:j inputchar
success:la $a0, sucli $v0, 4 # 4 means to print a stringsyscalladdi $a0, $t0, 1li $v0, 1syscallj inputchar
failed:la $a0, failli $v0, 4syscallj inputchar
exit:li $v0, 10syscall  

第二题:字符串查找比较

利用系统功能调用从键盘输入一个字符串,然后输入单个字符,查找该字符串中是否有该字符(区分大小写)。具体要求如下:

如果找到,则在屏幕上显示:“Success! Location: X”,其中,X为该字符在字符串中第一次出现的位置
如果没找到,则在屏幕上显示:“Fail!”
输入一个字符串后,可以反复输入希望查询的字符,直到按“?”键结束程序
每个输入字符独占一行,输出查找结果独占一行,位置编码从1开始
提示:为避免歧义,字符串内不包含“?”符号
格式示例如下:

abcdefgh
a
Success! Location: 1
x
Fail!

第二题代码:

.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:  .word0,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:  .word0,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:   .word0,6,13,21,28,36,43,50,59,67.text.globl main
main:       li $v0, 12 # read charactersyscallsub $t1, $v0, 63 # '?'beqz $t1, exitsub $t1, $v0, 48 # '0'slt $s0, $t1, $0 # if t1 < 0 then s0 = 1bnez $s0, others# is number?sub $t2, $t1, 10 # numberslt $s1, $t2, $0 # if t2 < 0 then s1 = 1bnez $s1, getnum# is capital?sub $t2, $v0, 91slt $s3, $t2, $0 # if v0 <= 'Z' then s3 = 1sub $t3, $v0, 64 sgt $s4, $t3, $0 # if v0 >='A' then s4 = 1and $s0, $s3, $s4 # if s3 == 1 && s4 == 1 bnez $s0, getuword# is lower case?sub $t2, $v0, 123slt $s3, $t2, $0 # if v0 <= 'z' then s3 = 1sub $t3, $v0, 96 sgt $s4, $t3, $0 # if v0 >= 'a' then s4 = 1and $s0, $s3, $s4bnez $s0, getlwordj othersgetnum:     add $t2, $t2, 10sll $t2, $t2, 2la $s0, n_offsetadd $s0, $s0, $t2lw $s1, ($s0)la $a0, numberadd $a0, $a0, $s1li $v0, 4syscallj main# upper case word
getuword:   sub $t3, $t3, 1sll $t3, $t3, 2la $s0, uw_offsetadd $s0, $s0, $t3lw $s1, ($s0)la $a0, u_wordadd $a0, $s1, $a0li $v0, 4syscallj main# lower case word
getlword:   sub $t3, $t3, 1sll $t3, $t3, 2la $s0, lw_offsetadd $s0, $s0, $t3lw $s1, ($s0)la $a0, l_wordadd $a0, $s1, $a0li $v0, 4syscallj mainothers:     and $a0, $0, $0add $a0, $a0, 42 # '*'li $v0, 11 # print charactersyscallj mainexit:       li $v0, 10 # exitsyscall

MIPS汇编程序设计——Cousera相关推荐

  1. mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...

    清华大学912计算机专业基础综合考试科目,2020年初试时间安排为12月22日下午14:00-17:00业务课二进行笔试,清华大学自主命题,考试时间3小时. 一.适用院系及专业 清华大学计算机科学与技 ...

  2. 【汇编语言与计算机系统结构笔记18】MIPS指令集与汇编程序设计 异常处理

    本次笔记内容: 28.MIPS指令集与汇编程序设计-2 补充:MIPS32异常处理 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程式设计-MIPS.pd ...

  3. 【汇编语言与计算机系统结构笔记17】MIPS 汇编初步

    本次笔记内容: 25.MIPS汇编初步-1 26.MIPS汇编初步-2 27.MIPS指令集与汇编程序设计 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录 ...

  4. 计算机组成原理之MIPS汇编:冒泡排序

    一. 实验目的 认识和掌握MIPS汇编语言程序设计的基本方法: 熟悉PCSpim模拟器的使用. 二. 实验内容 从键盘输入10个无符号字数并从大到小进行排序,排序结果在屏幕上显示出来. 三. 实验器材 ...

  5. 汇编程序设计与计算机体系结构软件工程师教程笔记:内联汇编与宏

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  6. 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  7. 汇编程序设计与计算机体系结构软件工程师教程笔记:指令

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  8. 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  9. 第三章 系统指令与汇编程序设计 3.1 单片机指令系统

    第三章 系统指令与汇编程序设计 3.1 单片机指令系统 3.1.1 寻址空间及常用符号 3.1.2 寻址方式 3.1.3 数据传送与交换指令 3.1.4 算术运算指令 3.1.5 逻辑操作指令 3.1 ...

  10. MIPS介绍与MIPS汇编的常用指令

    描述 CTF做题时会遇见MIPS汇编的题目,而我们接触的是8086汇编,IDA是不能反汇编的需要自己了解一些MIPS方面的知识; 1. List 1 在不同的设备中,汇编语言对应着不同的机器语言指令集 ...

最新文章

  1. ios android安全性分析,Android与iOS的对比分析及Android安全技术的设计与实现
  2. 【Android开发学习笔记之一】5大布局方式详解
  3. Spark资源分配异常闪Bug
  4. rest端点_REST:使用Controller端点?
  5. jdbctemplate 开启事务_SpringBoot 系列教程之事务隔离级别知识点小结
  6. python 生成器对象_Python 生成器, 迭代器, 可迭代对象的区别
  7. redis演练(3) redis事务管理
  8. github上传文件 linux,第一次上传代码到github (Linux)
  9. bigemap 软件功能对比
  10. 毕业论文 - 写作问题总结 和 tips
  11. bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)
  12. puk码怎么查询_手机PUK码怎么查询?使用PUK码解锁手机电话SIM/USIM卡的教程
  13. esp32 红外接收
  14. 我们很高兴地宣布我们正在与 OKC 整合
  15. Largest Submatrix (最大全1子矩阵)
  16. 屏蔽百度搜索结果页的推送广告
  17. 推荐几款电脑测试软件
  18. 一、CDD在诊断开发中的作用
  19. YOLO系列:YOLO v3解析
  20. LCHub 1月低代码平台排行榜出炉:宜搭遥遥领先微搭低代码

热门文章

  1. _VMware_虚拟机到_KVM
  2. 大学计算机基础及应用课后题答案第二版,《大学计算机基础》课后题答案完整版...
  3. 计算机软件著作权收钱么,计算机软件著作权登记收费吗
  4. 网络服务器的配置与管理
  5. (二)注释(comment)详解
  6. html圆圈里面问号,UTF-8编码的html页面显示-(问号)而不是字符
  7. HowTo 激活非常规方式安装的正版OEM Vista
  8. html5 3d 图片动画制作软件,9款令人惊叹的HTML5 3D动画应用
  9. wintc下为什么有getchar()但屏幕却还是没有输出?
  10. im即时通讯开发:万人群聊技术方案实践