📄 pml.s
字号:
.data #下列语句是数据代码行
psword1: .word 2008
psword2: .word 2009
psword3: .word 2010
p1: .asciiz "
*************************************************************************
欢迎使用汕头列车时刻表在线查询系统
制作者:潘铭路
*************************************************************************
请输入登录密码:"
p2: .asciiz "密码输入错误,请重新输入:"
p3: .asciiz "对不起,你输入错误密码已达三次,现在退出系统..."
p4: .asciiz "欢迎进入汕头列车时刻表在线查询系统,我们将竭诚为您服务!\n"
per1: .asciiz "您好,Davidson先生!\n"
per2: .asciiz "您好,Reza先生!\n"
per3: .asciiz "您好,马德高先生!\n"
p5: .asciiz "请选择您这次旅行的目的地:
1.广州 2.合肥 3.深圳 4.南昌 5.徐州 6.南京 7.北京 8.上海 9.青岛
请输入您的选择(1-9):"
p6: .asciiz "您的输入不是有效的选择,请重新选择...\n"
p7: .asciiz "您想继续查询其它地方吗?
1.是 2.否
请输入您的选择:"
m1: .asciiz "
能直达汕头和广州之间的列车车次
车次 全程始发 全程终点 列车类型 出发站 发车时间 目的站 到达时间 耗时 距离
N626/N627次 汕头 茂名东 空调快速 汕头 09:14 广州 16:25 7小时11分钟 -公里
N622/N623次 汕头 广州东 空调快速 汕头 09:48 广州东 18:00 8小时12分钟 -公里\n"
m2: .asciiz "
没有查询到可以直达的车次--从汕头到合肥
可以中转车次如下:
第一种方案:从汕头经鄂州到合肥
出发车次 汕头发车 到达鄂州 旅行时间 旅行距离
1018/1015(汕头-武昌) 17:35 10:44 17小时09分钟 -
中转车次 鄂州发车 到达合肥 旅行时间 旅行距离
T291/T294(武昌-合肥) 14:26 21:59 7小时30分钟 -
第二种方案:从汕头经黄石到合肥
出发车次 汕头发车 到达黄石 旅行时间 旅行距离
1018/1015(汕头-武昌) 17:35 10:03 16小时28分钟 -
中转车次 黄石发车 到达合肥 旅行时间 旅行距离
T291/T294(武昌-合肥) 14:50 21:54 7小时13分钟 -\n"
m3:.asciiz "
能直达汕头和深圳之间的列车车次
车次 全程始发 全程终点 列车类型 出发站 发车时间 目的站 到达时间 耗时 距离
N634/N631次 汕头 深圳 空调快速 汕头 06:26 深圳 14:29 8小时03分钟 -公里\n"
m4: .asciiz "
能直达汕头和南昌之间的列车车次
车次 全程始发 全程终点 列车类型 出发站 发车时间 目的站 到达时间 耗时 距离
1018/1015次 汕头 南昌 空调普快 汕头 17:35 南昌 06:31 12小时56分钟 -公里\n"
m5: .asciiz "
没有查询到可以直达的车次--从汕头到徐州
可以中转车次如下:
从汕头经南昌到徐州
出发车次 汕头发车 到达南昌 旅行时间 旅行距离
1018/1015(汕头-武昌) 17:35 06:31 12小时56分钟 -
中转车次 南昌发车 到达徐州 旅行时间 旅行距离
K302(广州-徐州) 11:09 22:17 11小时25分钟 -\n"
m6: .asciiz "
没有查询到可以直达的车次--从汕头到南京
可以中转车次如下:
从汕头经龙川到南京
出发车次 汕头发车 到达龙川 旅行时间 旅行距离
N622/N623(汕头-广州东) 09:48 14:20 4小时32分钟 -
中转车次 龙川发车 到达南京 旅行时间 旅行距离
K26(深圳西-南京西) 16:15 13:32 21小时22分钟 -\n"
m7: .asciiz "
没有查询到可以直达的车次--从汕头到北京
可以中转车次如下:
从汕头经广州东到北京
出发车次 汕头发车 到达广州东 旅行时间 旅行距离
N622/N623(汕头-广州东) 09:48 18:00 8小时12分钟 -
中转车次 广州东发车 到达北京 旅行时间 旅行距离
T98B(九龙-北京西) 18:04 15:41 22小时18分钟 2302\n"
m8: .asciiz "
没有查询到可以直达的车次--从汕头到上海
可以中转车次如下:
从汕头经龙川到上海
出发车次 汕头发车 到达龙川 旅行时间 旅行距离
N622/N623(汕头-广州东) 09:48 14:20 4小时32分钟 -
中转车次 龙川发车 到达上海 旅行时间 旅行距离
T212(深圳-上海南) 16:29 06:50 14小时23分钟 1414\n"
m9: .asciiz "
没有查询到可以直达的车次--从汕头到青岛
可以中转车次如下:
从汕头经南昌到青岛
出发车次 汕头发车 到达南昌 旅行时间 旅行距离
1018/1015(汕头-武昌) 17:35 06:31 12小时56分钟 -
中转车次 南昌发车 到达青岛 旅行时间 旅行距离
K342/K343(南昌-青岛) 17:01 11:23 18小时22分钟 -\n"
l1: .asciiz "欢迎您再次使用本系统,再见!"
.text #下列语句行是指令代码行
.globl main #main是全局符号,它对其它文件中的代码是可见的
main:
li $t0,2008 #设置Davidson先生的密码
li $t1,2009 #设置Reza先生的密码
li $t2,2010 #设置马德高先生的密码
li $t3,0 #计算密码输入错误次数
la $a0,p1 #字符串地址
li $v0,4
syscall #打印字符串
j getpsword #跳转到getpsword
#密码不正确,则退出系统
end:
la $a0,p3 #字符串地址
li $v0,4 #print_string系统调用码
syscall #打印字符串
li $v0,10 #exit系统调用码
syscall #退出系统
getsagain:
bge $t3,2,end #如果输入错误密码次数3次,则跳转至end
la $a0,p2 #字符串地址
li $v0,4 #print_string系统调用码
syscall #打印字符串
add $t3,$t3,1 #密码输入错误次数加1
#密码输入,并将起存入$s0
getpsword:
li $v0,5 #read_int系统调用码
syscall
add $s0,$v0,$zero
beq $s0,$t0,person1 #如果密码是2008,则跳转到person1
beq $s0,$t1,person2 #如果密码是2009,则跳转到person2
bne $s0,$t2,getsagain #如果密码不是2010,则跳转到getsagain
beqz $zero,person3 #如果密码是2010,则跳转到person3
person1:
la $a0,per1
li $v0,4
syscall #打印字符串
j begin1 #跳转到begin1
person2:
la $a0,per2
li $v0,4
syscall #打印字符串
j begin1 #跳转到begin1
person3:
la $a0,per3
li $v0,4
syscall #打印字符串
begin1:
la $a0,p4
li $v0,4
syscall #打印字符串
begin2:
la $a0,p5
li $v0,4
syscall #打印字符串
#对用户输入的选择进行判断,并输出查询结果
begin3:
li $v0,5 #read_int系统调用码
syscall #输入选择
add $s0,$v0,$zero #将输入的选择存储在寄存器$s0中
slti $s1,$s0,1
bne $s1,$zero,reinput #若$s0小于1,则跳转到reinput
slti $s1,$s0,10
beq $s1,$zero,reinput #若$s0大于等于10,则跳转到reinput
li $v0,1
add $s2,$v0,$zero
beq $s0,$s2,search1 #若$s0等于1,则跳转到search1
li $v0,2
add $s2,$v0,$zero
beq $s0,$s2,search2 #若$s0等于2,则跳转到search2
li $v0,3
add $s2,$v0,$zero
beq $s0,$s2,search3 #若$s0等于3,则跳转到search3
li $v0,4
add $s2,$v0,$zero
beq $s0,$s2,search4 #若$s0等于4,则跳转到search4
li $v0,5
add $s2,$v0,$zero
beq $s0,$s2,search5 #若$s0等于5,则跳转到search5
li $v0,6
add $s2,$v0,$zero
beq $s0,$s2,search6 #若$s0等于6,则跳转到search6
li $v0,7
add $s2,$v0,$zero
beq $s0,$s2,search7 #若$s0等于7,则跳转到search7
li $v0,8
add $s2,$v0,$zero
beq $s0,$s2,search8 #若$s0等于8,则跳转到search8
#若$s0不等于以上数字,则必为9,即执行search9
search9:
la $a0,m9
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search1:
la $a0,m1
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search2:
la $a0,m2
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search3:
la $a0,m3
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search4:
la $a0,m4
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search5:
la $a0,m5
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search6:
la $a0,m6
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search7:
la $a0,m7
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
search8:
la $a0,m8
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
#输入的不是有效的选择,重新输入
reinput:
la $a0,p6
li $v0,4
syscall #打印字符串
j begin2 #跳转到begin2
#判断是否要继续查询
againserch:
la $a0,p7
li $v0,4
syscall #打印字符串
againserch1:
li $v0,5 #read_int系统调用码
syscall #输入选择
add $s0,$zero,$v0 #将输入的数字存在寄存器$s0中
slti $s1,$s0,1
bne $s1,$zero,reinput1 #若$s0小于1,则跳转到reinput1
slti $s1,$s0,3
beq $s1,$zero,reinput1 # 若$s0大于等于3,则跳转到reinput1
li $v0,1
add $s2,$v0,$zero
beq $s0,$s2,begin2 #若$s0等于1,则跳转到begin2
li $v0,2
add $s2,$v0,$zero
beq $s0,$s2,exit0 #若$s0等于2,则跳转到exit0
#输入的不是有效的选择,重新输入
reinput1:
la $a0,p6
li $v0,4
syscall #打印字符串
j againserch #跳转到againserch
#若不再使用系统,则退出
exit0:
la $a0,l1
li $v0,4
syscall #打印字符串
li $v0,10 #exit系统调用码
syscall #退出系统
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -