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

技术专区

  • mybatis动态sql详解
  • 用VHDL语言设计数据传输系统中的HDB3编码器
  • 裸机程序如何驱动硬件?看前辈是怎么说的
  • 应用面向对象编程SoC原则的典型示例
  • 嵌入式开发之java常用开发工具介绍
  • mips汇编语言程序设计实例已关闭评论
    A+
发布日期:2019年07月14日  所属分类:物联网