问题标签 [lc3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何使用 Pennsim 和 LC-3 编程语言开始基本的编程任务?
手头的任务是编写一个子程序 STRCPY 来实现一个字符串复制功能,就像 C 编程语言的strcpy()
功能一样。
我知道:
R1 是要复制的字符串的地址
R2 是字符串要复制到的地址
假设该函数应该将源字符串的每个字符复制到目标地址(包括空终止符),从而创建源字符串的完整副本。此外,可以假设调用者已经为新字符串分配了足够的空间,并且子程序不会向调用者返回任何信息。
这里给出了起始代码。
我想我一开始对所有 LEA 命令有点不知所措,因此,任何指导/帮助都将不胜感激。
lc3 - LC3 循环遍历并测试一个单词中的最左位
所以我有一个词,我想循环并测试最左边的位。我有我的话,我将它传递给我的子程序,我知道如何建立一个循环,我只是不确定如何测试单词中最左边的位。
谢谢你的帮助
assembly - 在 LC-3 组装中使用堆栈
我正在解决一个在 LC-3 中制作计算器的网站上发现的问题。我正在逐步进行,并看到了一些关于使用堆栈做我目前正在做的事情。我想知道是否有人可以帮助我到目前为止将其转换为使用堆栈,到目前为止我一直在使用寄存器!我下面的代码显然是不完整的,这正是我停下来开始研究如何做一些事情时所拥有的。这是我迄今为止所拥有的 LC-3 代码:
string - 在 LC3 中使用子例程读取字符串时遇到问题
所以我相信我存储字符串的方式是有效的。我只是在将字符串从子例程中传递出来时遇到了一些问题。我听说为了从子程序中传递一些东西,你需要将它存储在 R1 中,但我无法将它存储到我的 WORD 数组中
lc3 - LC3 编程 - 打印直方图
我必须打印一个类似于下面的列表,其中@ bin 用于所有非字母字符,并且每个字母字符都有 bin。我需要将大写字母和小写字母放在同一个 bin 中。我已经开发了工作代码来遍历单词或字符的字符串。不过,我不确定从哪里开始代码的第二部分。这是在LC-3中。提前致谢。
@000F
0002
B 0001
C 0004
D 0002
E 0005
assembly - 比较 2 个寄存器,每个寄存器包含一个字符 LC-3 程序集
所以我是第一次学习 LC-3 机器的组装,所以我还是个新手。我试图让我的程序读取 2 个字符,比较它们,然后输出较小的字符。到目前为止,我所做的是将第一个字符存储在寄存器 1 中,将第二个字符存储在寄存器 2 中。然后,我想减去 ASCII 值,然后如果结果 < 0,则第一个字符会更小,如果它 > 0 第二个会更小,如果它 = 0,那么它们将是相同的字符。
我的问题是我不知道如何减去寄存器中的 2 个字符。我尝试过在线搜索,查看我的笔记,但找不到任何可以回答我的问题的东西。到目前为止,这是我的代码:
请记住,这就像我的第一个汇编程序,所以它可能非常可怕。^_^" 但是由于我还在学习,所以我想保持简单直接,即使它是一种愚蠢的实现方式。
因此,在我的 break 语句之前的那一行是我遇到麻烦的地方。如上所示,我尝试添加寄存器 1 和寄存器 2 的负数,但这不起作用,所以基本上我的问题是,有没有办法可以减去/比较存储在 2 个寄存器中的两个 char 值?
任何帮助/建议将不胜感激!!:)
assembly - 简单的 LC3 计算器
我正在编写一个程序来接受以下字符之一的用户输入,0-9、+、-、*、/ 和 ^。它一次只需要两个操作数,并且以逆波兰符号表示,例如 5 6 + 或 2 8 /。除了用户输入部分,我已经弄清楚了一切。我知道要使用 GETC 和 OUT,但我不明白这两个函数是如何工作的,因此在程序开始时很难实现它们。这就是我所拥有的。它目前编译没有错误,但似乎无法正常工作。
;介绍段落
; 我将从定义我的寄存器用途开始。R0 保存用户输入的最后一个字符。R1、R2、R3 和 R4;都只是临时寄存器,它们保存仅对即时任务重要的值。R6 是我的堆栈指针。
; R5 是我用来从堆栈中取出信息的工具。我首先将所有寄存器初始化为零。从那里我拿
; 用户输入的最后一个字符,并通过条件过滤以找出它是什么字符以及什么子程序
;发送到。如果是数字 0-9,则直接压入堆栈。如果它是无效字符,则跳转到
; 输出消息的 INVALID_CHARACTER 循环然后终止程序。如果它是一个操作符,它会被发送到 DECODE 那里
; 它的十六进制值反转,然后通过几个条件发送以找出它是哪个运算符以及哪个循环
;发送到。如果可能会混淆每个寄存器的含义,则在运算符循环上方说明了寄存器的使用
;被用于。最后,程序将在看到换行符时终止。在这里,我将 xA 设置为新行
;特点。
assembly - 计数位和打印结果 LC3 组件
我正在尝试编写一个简单的程序,它从 Data1 中获取一个 16 位整数,计算有多少位是 1 位,然后将结果打印到屏幕上。我很确定我的代码应该可以解决问题,但由于某种原因,我得到的输出是一个小方框符号,而不是实际的整数值。有谁知道我为什么要得到这个输出以及如何改变它?这是我的代码:
我应该得到的输出是:
(因为被检查的值是 2,并且 2 中有 1 个 1 位)但是我得到的输出是:
任何帮助或建议将不胜感激!!我对 LC3 组件还是很陌生...
lc3 - LC-3 代码段
我很难理解这个特殊问题。我有答案,但我真的很想知道它们为何如此的原因!我了解每个操作码的工作原理,只是没有将其应用于此问题.....
一位工程师正在调试她编写的程序。她正在查看程序的以下部分,并决定在内存中的位置 0xA404 处放置一个断点。从 PC = 0xA400 开始,她将所有寄存器初始化为零并运行程序,直到遇到断点。
代码段:
遇到断点时显示寄存器文件的内容(十六进制)。
同样,我不是在寻找答案列表,而是寻求帮助我了解程序中到底发生了什么的解释。非常感谢!
arrays - LC3 汇编语言 - 创建 2 个数组、相乘和相加
我试图弄清楚如何创建两个数组(硬编码),将它们相乘(a[0]xb[0]、a[1]xb[1] ...等),然后将总和相加并打印它。
我还没有太多,但那是因为我还在习惯这个。请请请帮忙!
到目前为止我所拥有的内容如下 -
请和谢谢,
克里斯汀