MIPS汇编程序设计——Cousera
第一题:用系统功能调用实现简单输入输出
利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下:
如果输入的是字母(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相关推荐
- mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...
清华大学912计算机专业基础综合考试科目,2020年初试时间安排为12月22日下午14:00-17:00业务课二进行笔试,清华大学自主命题,考试时间3小时. 一.适用院系及专业 清华大学计算机科学与技 ...
- 【汇编语言与计算机系统结构笔记18】MIPS指令集与汇编程序设计 异常处理
本次笔记内容: 28.MIPS指令集与汇编程序设计-2 补充:MIPS32异常处理 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程式设计-MIPS.pd ...
- 【汇编语言与计算机系统结构笔记17】MIPS 汇编初步
本次笔记内容: 25.MIPS汇编初步-1 26.MIPS汇编初步-2 27.MIPS指令集与汇编程序设计 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录 ...
- 计算机组成原理之MIPS汇编:冒泡排序
一. 实验目的 认识和掌握MIPS汇编语言程序设计的基本方法: 熟悉PCSpim模拟器的使用. 二. 实验内容 从键盘输入10个无符号字数并从大到小进行排序,排序结果在屏幕上显示出来. 三. 实验器材 ...
- 汇编程序设计与计算机体系结构软件工程师教程笔记:内联汇编与宏
<汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...
- 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算
<汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...
- 汇编程序设计与计算机体系结构软件工程师教程笔记:指令
<汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...
- 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介
<汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...
- 第三章 系统指令与汇编程序设计 3.1 单片机指令系统
第三章 系统指令与汇编程序设计 3.1 单片机指令系统 3.1.1 寻址空间及常用符号 3.1.2 寻址方式 3.1.3 数据传送与交换指令 3.1.4 算术运算指令 3.1.5 逻辑操作指令 3.1 ...
- MIPS介绍与MIPS汇编的常用指令
描述 CTF做题时会遇见MIPS汇编的题目,而我们接触的是8086汇编,IDA是不能反汇编的需要自己了解一些MIPS方面的知识; 1. List 1 在不同的设备中,汇编语言对应着不同的机器语言指令集 ...
最新文章
- ios android安全性分析,Android与iOS的对比分析及Android安全技术的设计与实现
- 【Android开发学习笔记之一】5大布局方式详解
- Spark资源分配异常闪Bug
- rest端点_REST:使用Controller端点?
- jdbctemplate 开启事务_SpringBoot 系列教程之事务隔离级别知识点小结
- python 生成器对象_Python 生成器, 迭代器, 可迭代对象的区别
- redis演练(3) redis事务管理
- github上传文件 linux,第一次上传代码到github (Linux)
- bigemap 软件功能对比
- 毕业论文 - 写作问题总结 和 tips
- bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)
- puk码怎么查询_手机PUK码怎么查询?使用PUK码解锁手机电话SIM/USIM卡的教程
- esp32 红外接收
- 我们很高兴地宣布我们正在与 OKC 整合
- Largest Submatrix (最大全1子矩阵)
- 屏蔽百度搜索结果页的推送广告
- 推荐几款电脑测试软件
- 一、CDD在诊断开发中的作用
- YOLO系列:YOLO v3解析
- LCHub 1月低代码平台排行榜出炉:宜搭遥遥领先微搭低代码
热门文章
- _VMware_虚拟机到_KVM
- 大学计算机基础及应用课后题答案第二版,《大学计算机基础》课后题答案完整版...
- 计算机软件著作权收钱么,计算机软件著作权登记收费吗
- 网络服务器的配置与管理
- (二)注释(comment)详解
- html圆圈里面问号,UTF-8编码的html页面显示-(问号)而不是字符
- HowTo 激活非常规方式安装的正版OEM Vista
- html5 3d 图片动画制作软件,9款令人惊叹的HTML5 3D动画应用
- wintc下为什么有getchar()但屏幕却还是没有输出?
- im即时通讯开发:万人群聊技术方案实践