⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pml.s

📁 汕头列车时刻表在线查询系统主要提供了对由汕头到旅行目的地的火车路线进行查询的功能。使用本系统
💻 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 + -