LC-3 组装两个数字相减

2023-12-08

我对这个问题有疑问,因为我是 LC-3 编程的新手。

编写 LC-3 代码,将 R0 中的值减去 R1 中的值,并将结果放入 R5 中。即编写 R5 := R0 - R1 的汇编代码。假设R1=10,R0为12。


根据你的问题,我们可以假设 12 和 10 已经在R0 and R1,所以正确的算法从NOT指令并结束于HALT;但是,还包含其他说明以允许您运行此代码。

解决方案是添加R0 with -R1。我们发现-R1通过按位取反(NOT)中的数字R1并加 1。这给出了 R1 的 2 的补数否定。

如果你不明白补码算术,我建议看看here。执行减法后,我们将原始数字恢复为R1.

.orig x3000

LD R0, A        ; A(12) => R0 (this is assumed)
LD R1, B        ; B(10) => R1 (this is assumed)
                ; find negative of the two's complement number in R1
NOT R1, R1
ADD R1, R1, 1
ADD R5, R0, R1  ; R0 - R1 => R5
LD R1, B        ; Restore R1
HALT

A .fill 12
B .fill 10

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

LC-3 组装两个数字相减 的相关文章

  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重
  • 了解汇编语言中的 cmpb 和循环

    我有一个函数 string length 它具有以下汇编代码 0x08048e90 lt 0 gt push ebp 0x08048e91 lt 1 gt mov esp ebp 0x08048e93 lt 3 gt mov 0x8 ebp
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 直接写入 ARM Cortex A8 分支预测器中的全局历史缓冲区 (GHB) 或 BTB?

    我有兴趣直接修改 Cortex A8 上的 BTB 分支目标缓冲区 和 GHB 的内容 ARM 手册上有这样的内容 要在指令端 GHB 数组中写入一项 例如 LDR R0 0x3333AAAA MCR p15 0 R0 c15 c1 0 M
  • 有哪些 x86 指令会对 ESP 产生副作用?

    我知道call and ret将修改的值esp然后push and pop有很多变体 但是还有其他指令会影响堆栈指针吗 The following instructions modify the stack pointer as an im
  • 电路解码所需的最小输入位数

    我正在学习计算机体系结构 并且正在阅读有关编码器和解码器的内容 在 MIPS 处理器中 操作码有 6 位 我想知道构建解码器来解码操作码需要多少输入位 我知道解码器是一个组合电路 它将二进制信息从 n 个输入线转换为最多 2 n 个唯一的输
  • 将 2 个数字与汇编进行比较[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有以下代码 我想完成汇编代码 如下
  • 如何使用 LOCK ASM 前缀来读取值?

    我知道如何使用 LOCK 来线程安全地递增一个值 lock inc J 但是如何以线程安全的方式读取 J 或任何值 LOCK 前缀不能与 mov 一起使用 如果我执行以下操作 xor eax eax lock add eax J mov J
  • x86 汇编乘法和除法指令操作数,16 位及更高

    我对 x86 汇编中的乘法和除法运算如何工作感到相当困惑 例如 下面的代码看起来并不太困难 因为处理的是 8 位 8 位乘法 User Input num1 20 num2 15 mov ax num1 moves the 8 bits i
  • 0 和双字 0 有什么区别?

    正如问题所述 有什么区别 例如 mov eax 0 and mov eax dword 0 我一直在使用 cmp 语句 但我无法理解其中的区别 一个是地址 另一个是数值 如前所述 MOV 指令没有区别 对于 CMP 您将有以下区别 qwor
  • MAC-1 汇编递归

    如何在 MAC 1 汇编器中调用递归函数 在 C 中你会做类似的事情 int func int num if num 0 return 1 return num func num 1 我知道如何使用调用函数 CALL 以及如何将参数加载到堆
  • 为什么我可以访问寄存器中较低的双字/字/字节,但不能访问较高的双字/字/字节?

    我开始学习汇编程序 这对我来说看起来不合逻辑 为什么我不能在寄存器中使用多个高字节 我明白了历史原因rax gt eax gt ax 所以让我们关注new64 位寄存器 例如 我可以使用r8 and r8d 但为什么不呢r8dl and r
  • 为什么每次在 GDB 中构建和反汇编函数时都会得到相同的地址?

    每次反汇编函数时 为什么总是得到相同的指令地址和常量地址 例如 执行以下命令后 gcc o hello hello c ggdb gdb hello gdb disassemble main 转储代码将是 当我退出 gdb 并重新反汇编 m
  • Mac OS X 上的 64 位程序集运行时错误:“dyld:无可写段”和“Trace/BPT trap”

    当尝试运行以下汇编程序时 globl start start pushq 0x0 movq 0x1 rax subq 0x8 rsp int 0x80 我收到以下错误 dyld no writable segment Trace BPT t
  • 将 1 字节立即值添加到 2 字节内存位置

    The add说明文档来 自这一页 http x86 renejeschke de html file module x86 id 5 html说如下 请注意我突出显示的两条说明 我在 NASM 中尝试了以下代码 符合第一个突出显示的指令
  • 将 AT&T 语法转换为 INTEL 语法

    我发现这个 GAS 文件包含一些可以从 CD 启动的引导加载程序代码 我想研究它并尝试制作我自己的一个 但唯一的问题是它采用 AT T 语法而不是 Intel 语法 我对 AT T 语法一无所知 我尝试过使用 Intel2gas 转换器 但
  • 如何在 x86 ASM 中将整数转换为浮点值?

    我需要将一个整数 二进制补码 乘以一个浮点常数 这是我所拥有的 data pi dd 3 14 int dd 0ah code fld pi fmul ST 1 ST 我怎样才能转换int乘以浮点值pi 你需要fild操作说明 这是一个参考
  • 在 OllyDbg 和 Assembler 中,EBP+8 是什么意思?

    我正在学习 OllyDbg 中的汇编和调试技巧 以便学习如何使用未记录的函数 现在我遇到以下问题 我有以下代码部分 来自 OllyDbg MOV EDI EDI PUSH EBP MOV EBP ESP MOV EAX DWORD PTR
  • Nasm 点状标签

    我对 TASM 很熟悉 但对 NASM 不太了解 我读过 NASM 允许使用本地标签 这些标签在名称前用点表示 例如 代码 loop some code jmp loop 定义一个名为 loop的局部标号 引用的地址在后面的jmp指令中使用
  • 3 操作数 imul 指令在 ia-32 汇编中到底起什么作用?

    我正在阅读说明 imul 0xffffffd4 ebp ebx 4 eax 我对它到底在做什么感到困惑 我明白那个imul乘法 但我无法弄清楚语法 我知道并且更喜欢 Intel MASM 语法 所以我将使用它 请注意 操作数的顺序在 AT

随机推荐

  • 如何离开办公室使用另一个邮箱

    我正在尝试使用 EWS EWS 托管 API 2 0 获取给定邮箱的 离开办公室 设置 设置如下 单个 服务帐户 邮箱 可读取其他邮箱日历和外出设置 使用 EWS 托管 API 可以轻松完成日历部分 但我似乎无法弄清楚如何使用 API 获取
  • 将 jquery 数据表导出到带有附加行的 Excel 不起作用 IE

    我正在尝试使用 jquery 导出按钮选项将数据表导出到 Excel 工作表 我希望在 Excel 文件中的表数据之前添加额外的行 我在小提琴中做了一个类似的演示https jsfiddle net xevpdeo1 17 它在 Chrom
  • 以编程方式将文件夹添加到 Finder 中的“位置”

    我正在尝试弄清楚如何以编程方式将文件夹添加到 Finder 的 位置 侧边栏 我已经看到了通过 Finder 首选项修改它的方法 但我也看到一些应用程序实际上将文件夹添加到侧边栏 如果有人对我应该查找的内容有任何建议 指示 我将不胜感激 这
  • 从向量对中获取值时出错

    为什么在访问对向量的迭代器中对的值时会出现以下错误 vector lt pair
  • 使用 php 从非公共 html 文件夹下载文件

    我有许多文件存储在服务器上 但不在 public html 目录中 这个想法是 登录的用户可以下载文件 使用 SESSION 变量来检查他们是否登录 但如果其他人使用他们的计算机 他们就无法在浏览器历史记录中看到直接文件路径 即使他们这样做
  • Gluon Mobile 项目不适用于 gradle 6

    我有一个 Gluon 移动项目 其 build gradle 如下所示 buildscript repositories jcenter google mavenCentral maven url http nexus gluonhq co
  • 如何从 R 中的流式 MapReduce 作业获取文件名?

    我正在流式处理 R mapreduce 作业 并且需要获取文件名 我知道 Hadoop 在当前作业启动之前设置环境变量 并且我可以使用 Sys getenv 访问 R 中的环境变量 我发现 获取流式hadoop程序中的输入文件名 和 Sys
  • 正交船体算法

    我正在尝试找到一种方法来确定直线多边形来自一组整数点 由下图中的红点表示 下图显示了我想要实现的目标 1 我只需要定义直线多边形边界的最小点集 我能找到的大多数船体算法都不满足这个问题的正交性质 例如礼物包装算法 产生以下结果 即not我想
  • 哈斯克尔:记忆化

    在离开多年并忘记一切之后 我正在尝试重新学习 Haskell 但我发现自己仍然感到困惑记忆化 特别是 我正在尝试编写一个程序来生成混乱的数量D n of n对象 原始位置没有任何项目的排列 号码D n 可以递归地定义为D 1 0 D 2 1
  • OpenCV 3.0 线迭代器

    我想使用线迭代器在使用 Python 的 OpenCV 3 0 中 为 Python 构建的 OpenCV 3 0 仍然可用吗 看来网上的答案都指向cv InitLineIterator这是cv模块 我尝试导入此模块 但似乎它不包含在当前版
  • 使用 Kubernetes 部署并通过 Ingress 连接后 SSE 损坏

    我有一个使用 EventStream 的 ReactJS 客户端和一个实现 SSE 的 golang 后端 当我将浏览器连接到在 localhost 上运行的后端时 以及当我的后端在带有端口转发的 k8s 上运行时 一切似乎都正常 一旦我使
  • 在 Java 中使用 XSOM 解析 XSD 架构。如何访问元素和复杂类型

    我在使用 Java 中的 XSOM 解析 XSD 文件时遇到了很多困难 我有两个 XSD 文件 一个定义日历 第二个定义全局类型 我希望能够读取日历文件并确定 日历有 3 个属性 有效的是一个名为 eYN 的 ENUM Cal 是一个字符串
  • 从 Java/ Android 线程返回值

    我的 android 类中有以下线程 如何从线程中获取 err 的值 public int method new Thread new Runnable int err Override public void run err device
  • 使用 @XmlPath 和 jaxb/MOXy 来映射复杂类型

    我有一个深层 XML 结构 其中有许多无意义的包装器 我将其映射到单个 Java 类 使用 XmlPath 映射简单的数据类型就像在公园散步 但是当涉及到实际需要自己的类的类型时 我不太确定如何做到这一点 特别是当这些类型也应该放入列表中时
  • PHP 的字母等效项 is_numeric

    我正在寻找一个与 is numeric 按字母顺序等效的函数 如果字符串中只有字母 则返回 true 否则返回 false PHP 中是否存在内置函数 你要ctype alpha
  • 我的代码中的未知修饰符[重复]

    这个问题在这里已经有答案了 输出错误 未知修饰符 p 你的字符串包含一团糟 这需要转义为 使用时 作为正则表达式分隔符 代替 作为正则表达式分隔符 使用不会出现在字符串中的内容 例如 例如 你must选择有保证的定界字符not出现在 Src
  • jQuery 停止 fadeTo 效果

    我想要的是一种鼠标轨迹效果 当你将鼠标悬停在 div 上或向下时 但是 如果您将鼠标悬停过快几次然后停止 效果就会自行重复 我该如何解决这个问题 我想我需要某种出队的东西 比如动画选项 但对于 fadeTo 功能 有任何想法吗 test m
  • 根据条件连接data.table中的列名[重复]

    这个问题在这里已经有答案了 这就是我的 data table 的样子 最右边的一列PASTE是我想要的专栏 library data table dt lt fread A B C PASTE TRUE FALSE TRUE A C TRU
  • DigitalMicrograph 脚本对象是否可以收到图像 ROI 变化的通知?

    DigitalMicrograph 脚本文档提到了各种类型的 Listener 对象 这些对象可用于向脚本对象通知各种类型的事件 特别是 ImageDisplay 对象对按键侦听器具有显式支持 以便当击键事件针对特定图像显示时可以通知脚本对
  • LC-3 组装两个数字相减

    我对这个问题有疑问 因为我是 LC 3 编程的新手 编写 LC 3 代码 将 R0 中的值减去 R1 中的值 并将结果放入 R5 中 即编写 R5 R0 R1 的汇编代码 假设R1 10 R0为12 根据你的问题 我们可以假设 12 和 1