MIPS:求 5 个整数的平均值

2024-01-11

客观的:根据用户输入,使用五个寄存器查找平均值。

Example:1 3 2 9 4

Output: 3

输出是 3,因为 3.8 是小数,我希望它是整数

我的目标是不使用数组,但我在添加所有 5 个寄存器时遇到问题:

.data
   prompt1: .asciiz " Please enter an integer: "
   prompt2: .asciiz " Please enter an integer: "
   prompt3: .asciiz " Please enter an integer: "
   prompt4: .asciiz " Please enter an integer: "
   prompt5: .asciiz " Please enter an integer: "
   result: .asciiz "The average is: "

.text
main:
   #t0 - hold prompt1
   #t1 - hold prompt2
   #t2 - hold prompt3
   #t3 - hold prompt4
   #t4 - hold prompt5
   #t5 - hold sum from prompt1 to prompt5
   #t6 - hold the average value


   # Prompt the user to enter integer1.
   li $v0, 4        # syscall to print string
   la $a0, prompt1
   syscall

   # Read integer1
   li $v0, 5        # syscall to read an integer
   syscall
   move $t0, $v0        # move number to read into $t0

   # Prompt the user to enter integer 2.
   li $v0, 4
   la $a0, prompt2
   syscall

   # Read integer2
   li $v0,5
   syscall
   move $t1, $v0

   # Prompt the user to enter integer 3.
   li $v0, 4
   la $a0, prompt3
   syscall

   # Read integer3
   li $v0,5
   syscall
   move $t2, $v0

   # Prompt the user to enter integer 4.
   li $v0, 4
   la $a0, prompt4
   syscall

   # Read integer4
   li $v0,5
   syscall
   move $t3, $v0

   # Prompt the user to enter integer 5.
   li $v0, 4
   la $a0, prompt5
   syscall

   # Read integer5
   li $v0,5
   syscall
   move $t4, $v0

我遇到错误的部分

   # add all integers to $t5
   add $a0, $t0, $t1, $t2, $t3, $t4
   li $v0, 1
   syscall

继续...

   # Read the sum
   li $v0, 5
   syscall
   move $t5, $v0

   # Divide Sum / count
   div $t5, 5

   # retrieve it
   mflo $t6

   #print out the average
   move $a0, t6
   li $v0, 1
   la $a0, result
   syscall

exit:
   li $v0, 10
   syscall

我收到一条错误消息

spim:(解析器)第71行存在语法错误...'add $a0, $t0, $t1, $t2, $t3,$t4


您可以使用此代码来添加 5 个整数,这是代码的临时版本。

.data
   prompt1: .asciiz " Please enter an integer: "
   prompt2: .asciiz " Please enter an integer: "
   prompt3: .asciiz " Please enter an integer: "
   prompt4: .asciiz " Please enter an integer: "
   prompt5: .asciiz " Please enter an integer: "
   result: .asciiz " The average is: "

.text
main:
   #t0 - hold prompt1
   #t1 - hold prompt2
   #t2 - hold prompt3
   #t3 - hold prompt4
   #t4 - hold prompt5
   #t5 - hold sum from prompt1 to prompt5
   #t6 - hold the average value


   # Prompt the user to enter integer1.
   li $v0, 4        # syscall to print string
   la $a0, prompt1
   syscall

   # Read integer1
   li $v0, 5        # syscall to read an integer
   syscall
   move $t0, $v0        # move number to read into $t0

   # Prompt the user to enter integer 2.
   li $v0, 4
   la $a0, prompt2
   syscall

   # Read integer2
   li $v0,5
   syscall
   move $t1, $v0

   # Prompt the user to enter integer 3.
   li $v0, 4
   la $a0, prompt3
   syscall

   # Read integer3
   li $v0,5
   syscall
   move $t2, $v0

   # Prompt the user to enter integer 4.
   li $v0, 4
   la $a0, prompt4
   syscall

   # Read integer4
   li $v0,5
   syscall
   move $t3, $v0

   # Prompt the user to enter integer 5.
   li $v0, 4
   la $a0, prompt5
   syscall

   # Read integer5
   li $v0,5
   syscall
   move $t4, $v0

   # add all integers to $t5
   add $t5, $t0, $t1
   add $t5, $t5, $t2
   add $t5, $t5, $t3
   add $t5, $t5, $t4

   li $t6,5

   # Divide Sum / count
   div $t5, $t5, $t6

  

   #print out the average
   li $v0, 4
   la $a0, result
   syscall

   move $a0, $t5     
   li $v0, 1        #prints average value
   syscall


exit:
   li $v0, 10
   syscall
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MIPS:求 5 个整数的平均值 的相关文章

  • 遍历内存编辑每个字节

    我正在编写汇编代码 提示用户输入一串小写字符 然后输出包含所有大写字符的相同字符串 我的想法是迭代从特定地址开始的字节 并从每个字节中减去 20H 将小写变为大写 直到到达具有特定值的字节 我对 Assembly 相当缺乏经验 所以我不确定
  • C++ 中的 CPUID 实现

    我想知道这里是否有人有一些可以从任何托管 net 语言引用的 C CPUID 实现的好示例 另外 如果情况并非如此 我是否应该注意 X86 和 X64 之间的某些实现差异 我想使用 CPUID 来获取运行我的软件的机器上的信息 崩溃报告等
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • CALL指令是否总是将EIP指向的地址压入堆栈?

    x86架构中函数调用时是否存在返回地址不入栈的情况 No CALL根据定义 将在跳转到目标地址之前将返回地址压入堆栈 该返回地址是EIP or RIP sizeof call instruction 通常为 5 个字节 英特尔 64 和 I
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 汇编8086监听键盘中断

    我有与此完全相同的问题 边画边听键盘 https stackoverflow com questions 13970325 8086 listen to keyboard while drawing 但第一个答案 接受的答案 只听键盘一次
  • AVX-512CD(冲突检测)与原子变量访问有何不同?

    所以我在看他们展示了如何 void Histogram const float age int const hist const int n const float group width const int m const float o
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • 为什么如果内存组织为字,则程序计数器加 1;如果内存组织为字节,则程序计数器加 2?

    如果在计算机中一条指令是 16 位 并且如果存储器被组织为 16 位字 则通过在当前指令的地址中加 1 来计算下一条指令的地址 如果内存是按字节组织的 可以单独寻址 那么我们需要在当前指令地址上加二 得到顺序执行的下一条指令的地址 为什么会
  • 带有适用于 MS-Windows 的工具链的预构建 MIPS 交叉编译器

    我在我的 Linux 机器上使用 MIPS 交叉编译器 效果很好 现在我需要在 Windows 上编译相同的应用程序 我正在网上搜索一些适用于 MS Windows 的预构建 MIPS 交叉编译器 带有工具链 但没有成功 由于我不确定该怎么
  • 如何在 icarus verilog 中包含文件?

    我知道基本的 include filename v 命令 但是 我试图包含另一个文件夹中的模块 现在 该模块还包括同一文件夹中存在的其他模块 但是 当我尝试在最顶层运行该模块时 出现错误 C Users Dell Desktop MIPS
  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 这个反斜杠在这段汇编代码中起什么作用?

    我不确定这些推线有什么区别 修剪下来来自 Linux 的 x86 entry calling h https github com torvalds linux blob 241e39004581475b2802cd63c111fec43b
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 这种没有推送寄存器的交换有多安全?

    我对汇编非常陌生 下面的代码应该通过两个不同的函数交换两个整数 首先使用swap c然后使用swap asm 但我怀疑 我是否需要push 我的意思是保存 汇编代码之前寄存器的每个值和pop稍后 就在返回之前 main 换句话说 如果我返回
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 错误 LNK2019:函数 main 中引用的外部符号无法解析

    我正在尝试在 C 中运行我的简单汇编代码 我只有两个文件 cpp 文件和 asm 文件 编译时出现错误 见下文 如果有人可以提供帮助 我将不胜感激 这是我的 main cpp 文件 include
  • 何时可以重用avx指令中的源寄存器

    在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用 例如 我想使用vgatherdps该指令消耗两个 ymm 寄存器 其中之一是位移索引 我意识到vgatherdps由于数据的局部性较差 因此需要花费大量时间来收集 位移索引寄存器

随机推荐

  • 将鼠标悬停即可开始播放简单的幻灯片

    我正在寻找仅当用户将鼠标悬停在图像上时播放图像幻灯片的最佳方法 当用户将鼠标移到图像之外时幻灯片再次停止 下面的演示完成了我需要的一切 除了悬停功能 Link to demo http snook ca technical fade fad
  • 函数默认模板参数可以放在非默认模板参数之前吗?

    以下代码在 gcc 4 7 1 上编译 struct X template
  • 如何使用设备相机在 iPhone 应用程序中以编程方式拍照?

    在 iPhone 应用程序中 我们可以采取pictures在某些特定的时间间隔以编程方式通过使用iPhone 设备相机 如果是的话请告诉我如何在 iPhone 应用程序中以编程方式拍照 请帮助和建议 Thanks UIImagePicker
  • Python 习语“if __name__ == '__main__'”在 clojure 中的等价物是什么?

    我正在涉足 clojure 并且在尝试确定与这种常见 python 习惯用法等效的 clojure 和 或 Lisp 时遇到了一些麻烦 习惯用法是 在 python 模块的底部通常有一些测试代码 然后是运行该代码的语句 例如 mymodul
  • 片段已添加,对话框片段?

    我有一个显示良好的对话框片段 但有时当我尝试显示它时 我不断收到IllegalStateException 下面是日志猫 java lang IllegalStateException Fragment already added Sele
  • 如何阻止 PHP sleep() 影响我的整个 PHP 代码?

    所以 在我的街机上 howlingdoggames com 我有一个积分系统 每次您访问正在进行游戏的页面时 都会给您一个积分 为了减少滥用 我想进行某种延迟 因此仅在 45 秒后授予 这是我尝试过的 if SESSION lastgame
  • 当没有这样的条件调用时,useEffect Hook 条件调用的 React 错误

    React 正在抱怨下面的代码 说它useEffect有条件地被调用 import React useEffect from react import ReactDOM from react dom function App const d
  • AWS 快照和 AMI 之间的区别

    所以我很难弄清楚这两者之间的具体区别是什么 据我了解 快照只是磁盘驱动器的备份 而 AMI 是整个系统 或者我应该说的实例 的备份 但整个系统在技术上不是完全位于磁盘驱动器上吗 如果是这样的话 那么没有明显的区别 我错过了一些东西吗 有两种
  • 获取 AWS CodeBuild 的 GitHub git 分支

    我将 AWS CodeBuild 设置为从 GitHub 自动构建 其他 CI 服务为分支提供了环境变量 但我找不到适用于 AWS CodeBuild 的环境变量 有一个CODEBUILD SOURCE VERSION设置为pr 7 whe
  • Bash 不会自动完成文件(Tab)

    bash 中的自动完成功能 使用 Tab 适用于文件夹 但是not与文件 我运行的是 Ubuntu 13 10 我还没碰过我的 bashrc file 底部的部分是这样的 bashrc文件看起来 与bash 完成安装和更新的部分 enabl
  • Javascript深度复制对象[重复]

    这个问题在这里已经有答案了 可能的重复 克隆 JavaScript 对象最有效的方法是什么 https stackoverflow com questions 122102 what is the most efficient way to
  • 在 Qt 中显示图像以适合标签大小

    我已经尝试了几种在表单上显示图像的方法 但没有一个能按照我想要的方式工作 我读过很多地方 最简单的方法是创建标签并使用它来显示图像 我有一个标签 其大小由布局指定 但是如果我使用像素图将图像加载到其中 则标签的大小将调整为图像的大小 如果我
  • 如何使用 Boost 库智能指针管理对象生命周期?

    有一个场景我需要使用shared ptr和weak ptr智能指针来解决 两个线程 线程 1 和 2 正在使用名为 A 的共享对象 每个线程都有对该对象的引用 线程 1 决定删除对象 A 但同时线程 2 可能正在使用它 如果我使用share
  • SignalR 连续消息传递

    我有一个网络项目 需要从外部肥皂服务更新网页上的统计信息 日志 我决定采用的方法是使用 signalR 通过使用执行服务方法并将结果返回给所有连接的客户端的代码 该代码将连续执行 在服务调用之间有一定的延迟 我无法将所有部分放在一起 可能是
  • 为什么 Visual Studio Code Git 显示驱动器上的所有更改?

    我在 Macbook 上使用 Visual Studio Code 1 6 0 我发现 VS Code 的 Git 列出了大量更改 甚至是那些不在我的工作文件夹中的更改 当我将鼠标悬停在这些上时 我会得到一个工具提示 该文件位于当前工作区之
  • 按顺序拆分 Parallel.Foreach 循环上的负载

    我需要处理列表中的一百万个元素 将它们粗暴地扔进并行 ForEach只会让CPU饱和 相反 我将元素主列表分成几部分 并将子列表放入并行循环中 List
  • 我可以在 SSRS 中跨数据源“加入”吗?

    我有两个数据源 一个 Oracle 和一个 Sql Server 由于我之前的情况 就像我发现它时的情况一样 Oracle 数据库中的某些列包含来自 Sql Server 数据库中的查找表的 PK 我正在尝试创建一个 Sql Server
  • 如何在Notepad++中删除当前行并添加新行?

    如何在Notepad 中删除当前行并添加新行 这两个操作很常见 但我找不到任何关键设置如何在 Notepad 中执行它们 任何插件都可以完成这项工作吗 Ctrl L cuts the current line and Ctrl Shift
  • 我可以 gzip 压缩所有 html 内容(页面)吗

    我试图找出定义哪些页面应该进行 gzip 压缩以及何时发送纯 html 内容是否有任何原则 如果你们可以分享您在 gzip 压缩项目的一部分时所做的决定 那将会很有帮助 一个好主意是进行基准测试 对比数据下降的速度有多快 压缩得有多好 如果
  • MIPS:求 5 个整数的平均值

    客观的 根据用户输入 使用五个寄存器查找平均值 Example 1 3 2 9 4 Output 3 输出是 3 因为 3 8 是小数 我希望它是整数 我的目标是不使用数组 但我在添加所有 5 个寄存器时遇到问题 data prompt1