系统功能调用实现简单输入输出

实验目的:熟悉MIPS的指令,掌握简单的汇编程序结构。

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

(1) 如果输入的是字母(A~Z,不区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,对应关系见下表

(2) 若输入的不是字母或数字,则在屏幕上输出字符“*”

(3) 每输入一个字符,即时转换并在屏幕上显示,需考虑显示结果的清晰美观

(4) 支持反复输入,直到按?键结束程序

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

例:在键盘上输入“U2011/”,对应输出内容为“Uniform two zero one one *”

A

Alpha

N

November

1

one

B

Bravo

O

Oscar

2

two

C

Charlie

P

Papa

3

three

D

Delta

Q

Quebec

4

four

E

Echo

R

Romeo

5

five

F

Foxtrot

S

Sierra

6

six

G

Golf

T

Tango

7

seven

H

Hotel

U

Uniform

8

eight

I

India

V

Victor

9

nine

J

Juliet

W

Whisky

0

zero

K

Kilo

X

X-ray

L

Lima

Y

Yankee

M

Mike

Z

Zulu

.data

myname:.asciiz "\r\nNAME:locusxt\r\n"

id:.asciiz "ID:locusxt\r\n"

aa:.asciiz "Alpha " #以下是字母对应的字符串

bb:.asciiz "Bravo "

cc:.asciiz "Charlie "

dd:.asciiz "Delta "

ee:.asciiz "Echo "

ff:.asciiz "Foxtrot "

gg:.asciiz "Golf "

hh:.asciiz "Hotel "

ii:.asciiz "India "

jj:.asciiz "Juliet "

kk:.asciiz "Kilo "

lll:.asciiz "Lima "

mm:.asciiz "Mike "

nn:.asciiz "November "

oo:.asciiz "Oscar "

pp:.asciiz "Papa "

qq:.asciiz "Quebec "

rr:.asciiz "Romeo "

ss:.asciiz "Sierra "

tt:.asciiz "Tango "

uu:.asciiz "Uniform "

vv:.asciiz "Victor "

ww:.asciiz "Whisky "

xx:.asciiz "X-ray "

yy:.asciiz "Yankee "

zz:.asciiz "Zulu "

zero:.asciiz "zero " #以下是数字对应的单词

one:.asciiz "one "

two:.asciiz "two "

three:.asciiz "three "

four:.asciiz "four "

five:.asciiz "five "

six:.asciiz "six "

seven:.asciiz "seven "

eight:.asciiz "eight "

nine:.asciiz "nine "

star:.asciiz "* "

alphabet: .word aa, bb, cc, dd, ee, ff, gg, hh, ii, jj, kk, lll, mm, nn, oo, pp ,qq, rr, ss, tt, uu, vv, ww, xx, yy, zz

num: .word zero, one, two, three, four, five, six, seven, eight, nine

backspace:.asciiz "\b"

.text

.globl main

main:

li $s0, 'z'

li $s1, 'a'

li $s2, 'Z'

li $s3, 'A'

li $s4, '9'

li $s5, '0'

getKey:

li $v0, 12

syscall

#addi $t0, $v0, 0

#la $a0, backspace

#li $v0, 4

#syscall

#addi $v0, $t0, 0

compare:

li $t0, '?'

beq $v0, $t0, deal

#判断是不是小写字母

slt $t0, $s0, $v0 #s0 < v0 ?

bne $t0, $0, dispstar

slt $t0, $v0, $s1 #v0 < s1 ?

beq $t0, $0, dispalph

#判断是不是大写字母

slt $t0, $s2, $v0

bne $t0, $0, dispstar

slt $t0, $v0, $s3

beq $t0, $0, dispalphc

#判断是不是数字

slt $t0, $s4, $v0

bne $t0, $0, dispstar

slt $t0, $v0, $s5

beq $t0, $0, dispnum

j dispstar

dispalphc:#大写字母+32变小写

addi $v0, $v0, 32

dispalph:#处理字母

sub $v0, $v0, $s1 #v0 -= 'a'

sll $v0, $v0, 2

la $t0, alphabet

add $t0, $t0, $v0

lw $a0, ($t0)

li $v0, 4

syscall

j getKey

dispnum:#处理数字

sub $v0, $v0, $s5 #v0 -= '0'

sll $v0, $v0, 2

la $t0, num

add $t0, $t0, $v0

lw $a0, ($t0)

li $v0, 4

syscall

j getKey

dispstar:

la $a0, star

li $v0, 4

syscall

j getKey

deal:#处理问号

la $a0, myname

li $v0, 4

syscall

la $a0, id

li $v0, 4

syscall

==================

syscall 里好像没有不回显的从键盘读

输出"退格"也是不行的,好像直接输出了个空格.

也有可能是mars模拟器太弱了.

这里以及另外一道的esc结束,都替换成了'?'结束

mips 系统桥_系统功能调用实现简单输入输出(mips)相关推荐

  1. 安卓手机如何打开php文件夹,Android_Android中调用系统的文件浏览器及自制简单的文件浏览器,调用系统自带的文件浏览器- phpStudy...

    Android中调用系统的文件浏览器及自制简单的文件浏览器 调用系统自带的文件浏览器这很简单: /** 调用文件选择软件来选择文件 **/ private void showFileChooser() ...

  2. centos 8 的图形操作界面在哪_商显首款基于安卓系统的图形化调用API软件—智微智能SPIRIT测评...

    出色优美的数字显示可谓是商业展示的灵魂所在,可迅速吸引人们的目光,智能多样化地进行信息展示.随着各种数字显示产品与技术的进步,新型数字商用显示在生活中随处可见.各类数字标牌.POS设备.自助服务终端. ...

  3. java 摄像头 win7_Win7系统下JAVA摄像头调用_实例代码介绍

    Win7系统下JAVA摄像头调用_实例代码介绍.由于要搞个人脸识别登录(JAVACV),百度谷歌了一下午,找了网上简单的样例代码来试,可是老是调试不过,出现CaptureDeviceManager.g ...

  4. mysql ibata文件_重装系统后,怎么调用之前mysql的数据_mysql

    重装系统后,如何调用之前mysql的数据 前提是:必须保留之前的数据库数据 在介绍此方法之前,提醒各位最好的转移数据的方法为: 在原来MYSQL服务器导出SQL文件,然后再在新的MYSQL服务器导入数 ...

  5. 系统架构_软件架构风格概述

    系统架构_软件架构风格概述                                    转载自:http://jpkc.whu.edu.cn/jpkc/dxqyxxxtfgnjg/dzja/ ...

  6. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  7. 电脑格式化后需要重装系统吗_电脑经常重装系统对电脑有影响吗

    平时大家的电脑总会遇到一些问题,如果无法解决的话,很多人就会选择为电脑重装系统,但是很多小伙伴都有疑问,重装系统此时过多会对电脑有什么影响,凡事都有利弊,下面,笔者就来跟大家讲解经常重装系统对电脑有什 ...

  8. webservice 实现与his系统对接_[Share] EDI 及其他常见系统对接技术

    近期,有客户提及:你们有没有对接技术相关的介绍,不同系统之间的对接技术,现在企业内部系统比较多,有自主开发的,有外部采购的,所以我们想了解一下对接技术相关的信息. 小知马不停蹄的做了下功课, 整理了相 ...

  9. 车路协同 智能路侧决策系统边缘计算系统功能技术要求

    1 范围 车路协同 智能路侧决策系统边缘计算系统功能技术要求. 本文件旨在规定车路协同 智能路侧决策系统中路侧计算系统的功能要点.软件架构.数据结构和性能参数等.该系统可以统一接入各类型感知设备,以标 ...

  10. 21 _ 服务调用失败时有哪些处理手段?

    通过前面的学习你应该可以理解,微服务相比于单体应用最大的不同之处在于,服务的调用从同一台机器内部的本地调用变成了不同机器之间的远程方法调用,但是这个过程也引入了两个不确定的因素. 一个是调用的执行是在 ...

最新文章

  1. MPL,MIL和MCL
  2. LOJ#2230. 「BJOI2014」大融合
  3. 与众不同 制作会唱歌的WinRAR - imsoft.cnblogs
  4. linux 下安装maven
  5. 数据结构之红黑树(三)——删除操作
  6. 项目中遇到的所有ECharts图表集合
  7. SNMPv3对安全威胁的分类
  8. Python 常用官方文档整理(中文版)
  9. 数论基础——扩展欧几里德算法解析
  10. 车型代号对照表_2017年最新主机厂OEM车型代号对照表
  11. 数学建模:R语言的正态性检验
  12. discuz3x ucenter 与cas 初步整合
  13. 1寸、2寸、小2寸的照片尺寸是多少
  14. iOS UIWebView的基本用法
  15. size_t、ssize_t、int、long的比较
  16. 华为运营商级路由器配置示例 | EVdPdNd VPLS over SRv6 TE Policy(静态配置)
  17. Color Banding的个人记录
  18. uipath工具介绍
  19. 微服务开源生态报告 No.1
  20. Ureal:用ue4做出游戏中的爆炸特效真实感和力量感

热门文章

  1. hive应用实例 将查询结果写入原表中
  2. java equals 的区别_Java中equals和==的区别
  3. 机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏
  4. zabbix监控oracle rac,CentOS6.9下zabbix3.4.9通过orabbix1.2.3来监控oracle11gRAC
  5. python请编写程序、生成随机密码_python习题:登录注册小程序(用户名密码存在文件中)、生成随机密码小程序...
  6. 接口监控_从零开始入门 K8s | 可观测性:监控与日志
  7. redis 的线程模型
  8. TiDB 在平安核心系统的引入及应用
  9. centos7 redis分布式集群问题总结
  10. 感谢那些打赏赞助过我的人