- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
八皇后问题MIPS汇编实现
八皇后问题
一、 计算的规则和任务
国际象棋中的皇后可以吃掉与它在同一行、同一列、同一对角线
上的棋子。八皇后问题,即在8×8 的国际象棋棋盘上放置8 个皇后,
要求任意两个皇后不能在同一行、同一列或同一条对角线上。求出如
此放置方法的种数。一种解决问题的思路是一行放置皇后,如果当前
放置的皇后与前面的皇后不存在冲突时,则继续摆下一个皇后,否则
跳到上一个皇后,重新摆置。
二、 八皇后问题的C 实现
:递归放置第 个皇后
:判断放置第 个皇后时是否无
冲突
:判断第 个皇后放上去之后,是否合法,即是否无
冲突。
三、 相应的MIPS 实现
.data
str:.asciizEight Queen problems, the number of methods of setting eight
queens:
.text
#main 中变量与保存寄存器和临时储存器的对应:
#输入n(=8):寄存器$s1
#输入iCount:寄存器$s2
#函数Queen(n,QUEEENS,iCount)的返回值:寄存器$v0
#函数Queen(n,QUEENS,iCount)中,n:$a0, QUEENS:$a1, iCount:$a2
#函数Valid(n)的返回值:寄存器$v1
#main function#
main:
addi $sp,$sp,-32 #利用栈开辟八位数组,site[8]
addi $s5,$sp,0 #$s5 指向数组的基址site[0]
addi $s2,$zero,0 #iCount=0
li $v0,4 #执行syscall 中的print_int 功能
la $a0,str #printf(Eight Queen problems, the number of methods of
setting eight queens:)
syscall
addi $v0,$zero,8
add $s1,$zero,$v0 #$v0 内的值存入n 中
addi $a0,$zero,0 #$a0=0
add $a1,$0,$s1 #$a1=n
add $a2,$0,$s2 #$a2=iCount
jal Queen #调用Queen 函数
move $a0,$v0 #函数Queen 返回值存入$a0
li $v0,1 #执行syscall 中的输出整型数的功能,输出最终结果
syscall
li $v0,10 #结束程序运行
syscall
#Queen 函数变量与保存寄存器和临时寄存器对应:
#过程调用中的栈指针:$sp
#Queen 函数返回的地址:$ra
#Queen 函数内,循环中的i 对应的寄存器:$s4
#Queen 函数中site[n]的地址对应的寄存器:$s6
#Queen function
#
Queen:
addi $sp,$sp,-24 #开辟栈空间
sw $ra,20($sp) #$ra 入栈
sw $v0,16($sp) #$v0 入栈
sw $a0,12($sp) #$a0 入栈
sw $a2,8($sp) #$a2 入栈
sw $s6,4($sp) #$s6 入栈
bne $a0,$a1,exit #n 不等于QUEENS 时exit;n 等于QUEENS,执行下一条指令
addi $a2,$a2,1 #iCount=iCount+1
sw $a2,8($sp) #更新iCount 值,存入栈
j EXIT2 #直接跳到EXIT2
exit:
addi $s4,$zero,1 #i=1
sw $s4,0($sp)
您可能关注的文档
- SoMachine编程指南.pdf
- JAVAEE知识点(总结).pdf
- eTPU编程指南.pdf
- 深圳2008资料汇编 03定额解答.pdf
- S7-1200编程指南.pdf
- 材料科学基础知识点整理.pdf
- 双曲线知识点总结及例题讲解.pdf
- 苹果 iOS Blocks 编程指南(blocks语法学习教程-有详细代码指导说明).pdf
- 魔抓编程指南.pdf
- 谷歌C++编程指南.pdf
- 一城一云服务城市高质量发展白皮书(2023).pdf
- 中国连锁餐饮企业资本之路系列报告(2023)-历尽千帆,厚积薄发.pdf
- 有色金属行业专题研究:未来焦点,钒液流电池储能风潮兴涌.pdf
- 中国 “一带一路”实践与观察报告.pdf
- 医药生物-消费器械行业2023年中报总结:积极拥抱高璧垒高成长(202309).pdf
- DB50T 699-2016 简易升降机检验规则.pdf
- DB50T 746-2016 水库大坝安全监测资料整编分析规程 .pdf
- 看DAO2025-未尽研究报告(2024).pdf
- 市场洞察力报告-数据安全检查工具箱(2024).pdf
- 2024年预见未来:中国元医院建设发展调研报告.pdf
文档评论(0)