MIPS 中的字符数组

2023-11-29

我如何创建一个字符数组并在 MIPS 中访问这些字符?我正在做一个项目,其中一部分就是要做这个。我了解如何使用整数,但在网上找不到任何有关如何处理字符的参考,特别是我正在尝试移植...

static char   hexdigits[16] = "0123456789ABCDEF";

这是我失败的尝试:

hexarray: .word '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' #declare memory space for our hex array

编辑:如果有人可以提供一个如何打印这些项目之一的示例,那将非常有帮助(您可以将我的代码修改为您想要的任何内容)。因为我刚刚收到内存地址错误。


static char   hexdigits[16] = "0123456789ABCDEF";

可以翻译成:

.data
hexdigits: .byte '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'

Or

.data
hexdigits: .ascii "0123456789ABCDEF"

我们可以使用以下方式访问元素

la    $t0, hexdigits
lb    $t1, 0($t0)        # $t1 = hexdigits[0]
lb    $t2, 1($t0)        # $t2 = hexdigits[1]

您可以使用系统调用打印元素(如果您的模拟器支持它。大多数都支持)

la    $t0, hexdigits          # address of the first element
lb    $a0, 10($t0)            # hexdigits[10] (which is 'A')
li    $v0, 11                 # I will assume syscall 11 is printchar (most simulators support it)
syscall                       # issue a system call
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MIPS 中的字符数组 的相关文章

  • MIPS 递归斐波那契数列

    我在 MIPS 中递归处理堆栈时遇到问题 我明白了这个概念 但我的程序没有按照我的意思做出反应 我的目标是将用户输入作为 n 并打印 n 处的斐波那契数 到目前为止我所拥有的如下 我相当确定问题出在 fib 函数中数字的实际计算中 感谢您的
  • MIPS - 实现二叉搜索树

    作为我们的术语项目 我们正在实现一个二叉搜索树 其背后的想法如下 假设 bst 有 3 个节点 10 8 14 其地址表示如下 值 左节点地址 右节点地址 根节点地址 t 400 8 0 0 620
  • 轮询 I/O (MIPS)

    我正在尝试在 MIPS 中编写一个程序 该程序使用轮询从键盘读取字符 然后使用内置键盘和显示器 MMIO 模拟器显示它 不幸的是 我无法理解所使用的寄存器和控制位背后的概念 但一直试图从在线示例中找出答案 这是我到目前为止所写的内容 dat
  • 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

    有人可以指导我如何在 MIPS 汇编中使用移位来制作乘法代码吗 我不明白数字 2 n 如何帮助我使用奇数被乘数进行乘法 我目前有这段代码 我正在尝试制作一个计算器 text li v0 4 la a0 ask 1 syscall li v0
  • 为什么MIPS汇编器有多个寄存器用于返回值?

    我刚刚开始学习MIPS汇编程序并意识到有两个寄存器 http en wikipedia org wiki MIPS architecture Compiler register usage用于返回值 首先 我认为它的实现是因为有些语言可能返
  • 为什么x86很丑?为什么与其他人相比,它被认为是劣等的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将值存储在 MIPS 的 HI 和 LO 寄存器中

    我正在 MIPS 中编写某些代码 并且要求将结果暂时存储在HI and LO特殊寄存器 均为 4 字节宽 这些说明可供我使用 divu s t lo lt s div t hi lt s mod t multu s t hi lo lt s
  • 使用 Mips Assembly 读取和打印 txt 文件中的内容

    我正在尝试读取并打印 txt 文件中的内容 稍后我还想从 mips 读取转储的文件 我看到代码 看起来没问题 但没有输出任何内容 data myFile asciiz teste txt filename for input buffer
  • 如何编写多个条件if else语句mips

    我会像编写将 C 转换为 mips 汇编的逻辑 OR 语句一样编写逻辑 AND 语句吗 else if i x j y printf c 219 这就是我放的 bne reg1 t3 draw219 i x bne reg2 t4 draw
  • 针对 MIPS 的 Microsoft Visual Studio 2010 编译

    我试图弄清楚如何在 Visual Studio 中编译一个简单的 hello world 但适用于 MIPS 处理器 遵循 MS 上发布的指南website http msdn microsoft com en us library ms2
  • 如何从字符串输入中删除逗号

    我正在开发一个使用 MIPS 本机指令的程序 该程序将允许用户输入三个十进制数字作为空终止字符串 每个数字不能超过六位数字 如果用户输入逗号 例如 123 456 则从内存中删除逗号 第一个数字存储在内存地址 0x10000000 中 第二
  • MIPS 浮点:swc1 与 s.s

    我正在做一些涉及的工作MIPS汇编 我不断遇到这四个浮点加载 存储伪指令 l s l d s s s d 我在网上找到了一些文档 发现有四个 实际 指令似乎可以做同样的事情 lwc1 ldc1 swc1 and sdc1 我唯一的问题是 有
  • MIPS汇编将整数转换为二进制并读取1的数量?

    我正在开发一个程序 它从用户那里获取一个整数 然后输出它的二进制等价物中有多少个 1 所以首先我认为我需要将其转换为二进制 然后使用循环检查所有 32 位以找出有多少个 1 我已经浏览了几个小时并尝试不同的方法来首先将整数转换为二进制 最好
  • 为什么 MIPS 中 bgezal 和 bltzal 是基本指令而不是伪指令?

    根据这个MIPS指令参考 http www weblearn hs bremen de risse RST docs MIPS mips isa pdf 有两条指令 bgezal and bltzal 如果分支被采用 则执行相对跳转和链接
  • 提示用户输入汇编 ci20 seg 错误

    我目前正在 ci20 机器上开发一个小程序 提示用户输入整数值 然后将该值打印到屏幕上 我当前的代码 data prompt asciiz Please enter an integer message asciiz nValue ente
  • MIPS 中的影子寄存器是什么以及它们如何使用?

    当我了解 MIPS 架构时 我遇到了影子寄存器 据说它们是通用寄存器的副本 我无法理解以下内容 何时使用影子寄存器 MIPS 影子寄存器用于减少处理中断时的寄存器加载 存储开销 分配了影子寄存器组的中断不需要保存任何现有上下文来提供空闲寄存
  • 在单周期数据路径中加载半字和加载字节

    有人询问如何在单周期数据路径中实现加载字节而无需更改数据存储器 解决方案如下 替代文本 http img214 imageshack us img214 7107 99897101 jpg http img214 imageshack us
  • 如何关闭MIPS-GCC自动指令重排序?

    继这个问题之后 使用跳转 和链接 指令的奇怪 MIPS 汇编器行为 https stackoverflow com questions 3807480 weird mips assembler behavior with jump and
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 使用 MIPS 从 Big Endian 到 Little Endian 无需逻辑运算?

    我正在使用 MIPS QtSpim 将 32 位字从 Big Endian 转换为 Little Endian 我下面显示的内容已检查且正确 不过我想知道还有什么其他方法可以让我进行转换 我虽然只使用了旋转和移位 但如果没有逻辑运算 我就无

随机推荐