当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]MIPS汇编语言学习首先是:next_a: bne $v0, ‘a’, next_b #依次判断该字符是否是a,b,c,……,A,B,C,……,1,2,3,&hellip

MIPS汇编语言学习

首先是:

next_a: bne $v0, ‘a’, next_b #依次判断该字符是否是a,b,c,……,A,B,C,……,1,2,3,……,9,0。若是,则输出对应的串,跳转到main,进行下一次输入与判断,若都不是,则输出‘*’,跳转到main,进行下一次输入与判断。

li $v0, 4 #下同,不再赘述

la $a0, a

syscall

j main

.asciiz

表示输出一个字符串,以“n“换行符结尾。

.data

定义变量

a: .asciiz “Alpha ”。

等于:

String a=“Alpha ”;

MIPS汇编程序设计

实验目的

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)

}

汇编源程序设计

算法设计

.data

#定义用户数据段

Z: .space 200 .text

#定义用户程序段

main:

#给K,Y分配寄存器并赋初值

#给数组Z[K]分配寄存器

#计算Y - 16 * ( K / 4 + 210) 并将结果存入一个寄存器

#将上述寄存器中的结果写入Z[K]

done:

li $v0,10

syscall

源程序代码

.data #定义用户数据段

z: .space 200

.text

main:

la $s0,z #$s0=addrz

li $t0,0 #$s1=k=0

li $t1,56 #$s2=y=56

loop:

slTI $t2,$t0,50 #判断k是否于50

beq $t2,$0,done #当k大于等于50,跳转

srl $t3,$t0,2 #k/4

addi $t3,$t3,210 #k/4+210

sll $t3,$t3,4 #16*(k/4+210)

sub $t3,$t1,$t3 #y-16*(k/4+210)

sw $t3,0($s0) #写进z[k]

addi $s0,$s0,4 #地址移一位

addi $t0,$t0,1 #k加1

j loop #循环

done:

li $v0 10

syscall

源代码调试过程

1. 装载程序。

点击file,选择ReiniTIalize and Load File,把写好的文件导入QtSpim。

2. 点击“运行”,如图:

 

得到实验结果如下:

数据段映像:

 

仿真器在真正的用户代码段内增加了部分代码以实现程序运行控制,该仿真器中所有用户代码都必须存储在地址为0x00400000~0x00440000的范围之内。用户代码段将每一行代码的地址,及其对应的机器码都显示给用户,为方便查看,还给出了反汇编得到的汇编指令,而且在注释中显示了用户编写的源代码。通过地址部分信息,我们知道每一行代码的地址都是前一行代码地址+4,即PC+4,机器指令,例如

[00400044] 012b5822 sub $11, $9, $11 ; 14: sub $t3,$t1,$t3 其中的机器码012b5822=000000 01001 01011 01011 00000 100010B。第一段六位和第六段六位分别为000000B和100010B表示该指令的功能为sub指令,第二段5位为01001B表示第一个源操作数寄存器的编号($t1的编号为9),第三段5位为01011B表示第二个源操作数寄存器的编号($t3的编号为11),第四段5位为01011B表示目的操作数的寄存器编号($t3的编号为11),反汇编得到的汇编指令也很明显地指出了这些数据代表的意义;第五段在这条指令中没有意义。

其他行数据所表达的意义以此类推同样可以得到。

Z[k]数据内存映像:

 

整理成表格形式如下:

 

可以看到Z[K]的首地址为10010000,且每个内存中的四个数值都是一样的,且随着地址规律地增加,数值在规律地递减。

实验总结

通过本次MIPS汇编程序设计的实验,我再次巩固了理论课所学习的程序代码的编写及书写规范,并将其付诸于实践。

同时,我也基本掌握了Qtspim软件的应用和程序的调试工作,并更深刻地理解了汇编语言中机器指令的执行方法,对以后的学习定会有莫大的帮助。 代码的编写过程,关键是先整理编写的思路,然后根据课本上的代码指令编写程序。编译过程中,当然会遇到一些困难,但是通过思考和与老师同学的交流,都轻松解决了。

总的来说,本次实验做得还比较轻松,原理方面容易掌握,操作方面也容易实验。望以后的实验也一样顺利。

MIPS汇编范例

mips汇编语言之实现swap函数 收藏 此程序用来交换两个整数 已在pcspim下编译通过

##

##################################################

#

#### programed by stevie zou ###

# purpose:to swap two values #

##### 10-15-2008 ######### ################

##

############# text segment ###############

.text

.globl main

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭