微机原理第一次实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
汇编语言程序设计实验报告班级:通信1306 姓名:张金志学号:U201313788
一.实验目的
1.掌握QTSPIM的调试技术;
2.了解MIPS汇编语言与机器语言之间的对应关系;
3.掌握MIPS汇编程序设计;
4.了解C语言语句与汇编指令之间的关系;
5.熟悉常见的MIPS汇编指令;
6.掌握程序的内存映像;
二.实验内容
用汇编程序实现以下伪代码:要求采用移位指令实现乘除法运算。int main()
{
int K, Y ;
int Z[50] ;
Y = 56;
for(K=0;K<50;K++)
Z[K] = Y - 16 * ( K / 4 + 210) ;
. }
三.实验流程图
四.实验原理
为数组开辟一个内存空间,然后对变量赋初值,运算中乘法用左移操作,除
法用右移操作,利用bne不等于时就跳转来实现循环。五.实验代码
.data
k: .space 4
y: .space 4
z: .space 200 #开辟内存空间
.text
main:
la $s0,k
la $t0,y
la $s4,z
li $t0,0x38
li $s0,0x0 #分别赋初值
loop:
slti $s2,$s0,50
bne $s2,$0,content #循环条件判断
j done #不满足,则跳转到done content:
srl $s3,$s0,2 #除以4
addi $s3,$s3,210 #加上210
sll $s3,$s3,4
sub $s3,$t0,$s3 #t0是Y
sll $s5,$s0,2
add $a3,$s4,$s5 #a3是z[k]
sw $s3, 0($a3)
addi $s0,$s0,1
j loop
done:
li $v0, 10
syscall #结束六.实验结果
七.实验小结
通过本次从c语言转换到汇编语言的实验,我第三次实践论了汇编语言进行简单的操作,学会了(1)汇编语言如何开辟地址空间,(2)如何用汇编语言实现数组的创建和存储,(3)初步尝试了for条件语句的汇编语言的实现步骤
教训:由于忘记了$a0和$v0等的特殊性,误用了这些寄存器,导致实验结果迟迟不正确,后来发现并改正后,实现正确结果。,这种错误下次不会再犯了,以后会认真记住书本上的基本内容。