mips汇编语言程序设计实例

发布者:泉地水无痕最新更新时间:2017-12-20 来源: 21IC中国电子网关键字:汇编语言  mips 手机看文章 扫描二维码
随时随地手机看文章

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

关键字:汇编语言  mips 引用地址:mips汇编语言程序设计实例

上一篇:学习STM32,你不得不了解的五大嵌入式操作系统
下一篇:为什么CAN总线分支在0.3米内是最可靠的

推荐阅读最新更新时间:2024-05-03 02:10

PIC单片机的各种汇编语言指令的用法解析
工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。 PIC的指令系统 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释
[单片机]
PIC单片机的各种<font color='red'>汇编语言</font>指令的用法解析
MIPS进军32 位MCU市场 一站式提供众多处理器和模拟外设IP
为数字消费、网络、个人娱乐、通信和商业应用提供业界标准处理器架构及内核的领先供应商 MIPS 科技(纳斯达克交易代码:MIPS)宣布,正式进军正蓬勃发展、对性能要求很高的 32 位单片机(MCU)市场。通过最近收购模拟 IP 领先厂商Chipidea,MIPS 科技拥有了丰富的处理器内核和全面多样的成熟模拟 IP 模块库,成为了提供处理器和外设 IP 产品的最大独立供应商,可为客户提供 32 位 MCU 应用的完整系统解决方案。 市场调查机构 Semico Research 技术总监 Tony Massimini 表示:“32 位单片机的产量正在迅速增长,特别是在需要更高处理能力和更大存储容量的先进汽车、消费和工业应用方面。我们
[单片机]
MCS-51单片机汇编语言:数据传送指令有哪些
数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部 RAM、寄存器、外部RAM以及程序存储器之间的数据传送。 数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。 1. 以累加器A为目的操作数的指令 MOV A, #data ; A← #data MOV A, Rn ; n=0~7, A← (Rn) MOV A, @Ri ; i=0,1 , A← ((Ri)) MOV A, direct ; A← (Rn) direct为内部RAM或SFR地址 2. 以Rn为目的操作数的指令 MOV Rn, A ;Rn ← (A) , n=0~7
[单片机]
4G芯片集供应商Sequans Communications获MIPS科技处理器内核授权
美普思科技公司(MIPS Technologies, Inc., 纳斯达克代码:MIPS)宣布,4G芯片供应商Sequans Communications已选用MIPS32TM M14Kc™ 可合成处理器内核开发下一代移动解决方案。M14K™ 系列是首款采用microMIPS™ 指令集架构(Instruction Set Architecture,ISA)的内核系列,可保持MIPS32架构98% 的高性能,并至少缩小30% 的代码尺寸,以显著降低芯片成本。 Sequans 的客户是为遍布全球的移动 WiMAX 和 LTE 网络提供技术的领先设备制造商和移动运营商。Sequans 公司总裁兼首席执行官 Georges
[嵌入式]
Global Platform的可信任执行环境已支持MIPS-based 设备
领先的安全解决方案采用 Imagination 的 OmniShield™ 多域技术来开发 Imagination Technologies 和虚拟化与安全技术的领导厂商 Sierraware 宣布,两家公司已合作使 Sierraware 的 SierraTEE 能够支持基于 Imagination MIPS CPU 的设备。可信任环境 (TEE) 能在连网设备中提供一个安全的区域,以确保敏感数据能在隔离、可信任的环境中被存储、处理,并受到保护。它通过为授权的安全软件提供隔离、安全的执行环境,从而实现端到端的安全性。 连网嵌入式设备中正逐渐内置各种不同的应用程序,因而要求安全性以及一定级别的稳固性以免于恶意软件入侵。 Sierra
[嵌入式]
基于单片机的万年历汇编语言程序
;真正的万年历: 84 bytes 的 51 ASM ;==SUB_WNL=== 万年历 ==* Deng Miao * 2004-06-01 ***** GuangZhou ****** SJ DATA 30H ; 世纪 BCD 00 TO 99 NH DATA 31H ; 年号 BCD 00 TO 99 0000 TO 9999 年 YF DATA 32H ; 月份 BCD 01 TO 12 org 000h MOV SP, #40H MOV SJ, #21H ;2004-05 MOV NH, #01H MOV YF, #4H ACALL SUB_WNL
[单片机]
MIPS与SYSGO携手将嵌入式技术带入处理器核心
        美普思(MIPS)与SYSGO近日共同宣布,两家公司已携手合作将SYSGO的嵌入式虚拟化技术带到MIPS32处理器核心。     SYSGO 的PikeOS即时作业系统(RTOS)是一个hypervisor虚拟化平台,能让多个应用程式和Android和Linux等作业系统安全地在单一硬体平台上平行运作。透过PikeOS,MIPS的授权客户可具备为不同任务部署CPU资源的灵活性,可因此免除在系统中采用专属安全性CPU的需求。     随着行动付款、跨装置间敏感资料串流、高价值媒体内容处理、以及其他消费应用的兴起,微处理器和系统级安全性的重要性已日渐提升。为因应这些趋势,PikeOS可提供结合RTOS与安全虚拟
[手机便携]
Android:走向统一之路
6月初我在台北的COMPUTEX移动论坛上作了一个主题演讲,主要讨论了Android的app开发。与目前很多关于Android应用程序发展前景的消极看法不同,我想更多从正面角度来谈谈Android应用程序走向统一的趋势。 2012年台北COMPUTEX移动论坛上 MIPS科技移动业务副总裁AmitRohatgi发表演说 我们经常从媒体听到一些关于Android程序碎片化的负面消息。确实当前Android的app开发者们正挣扎在不同设备或不同操作系统版本之间的兼容性问题里面,同时开发者们也在为app的价格和收入等问题苦恼。Flurry Analytics最近有一个统计表明,开发商在iOS上每挣得1美元,在Android上
[嵌入式]
Android:走向统一之路
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved