问题标签 [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.
lc3 - 我是一个初学者程序员,想在 LC3 汇编中设计一个战舰程序
我真的不知道如何或从哪里开始我的算法来显示游戏的显示网格。
assembly - LC-3 .BLKW 工作原理
解决了!
我正在为 LC-3 编写一个汇编程序,该程序应该等待用户输入他想要的所有字符,然后只有在他按 Enter 后才在显示器上打印它们。
如果用户只点击输入按钮,我到目前为止已经解决了这个问题。例子:
我按 Enter ---> 程序运行正常。(转到新行并停止)
我按“ABCDEF”---> 程序显示“F”而不是换行并显示 ABCDEF。解决了
.BLKW 应该保存一块内存。所以为了解决这个问题,我应该将 .blkw 加载到寄存器中,然后将新字母值存储到该寄存器中,并且每次更新存储位置以移动到下一个位置。
assembly - 在程序集中更改特定地址的值
我正在用 LC-3 编写程序集。我有一个寄存器 R1,它指向一个特定的地址。如何将该地址的值更改为 0?不幸的是,这很快就会到期,因此我们将不胜感激!谢谢!
PS:如果你不了解LC-3,这里有15条指令:ADD, AND, BR, JMP, JSR, JSRR, LD, LDI, LDR, LEA, NOT, RET, RTI, ST, STI, STR,陷阱
assembly - 在子例程中使用 TRAP 例程?- LC3 组装
所以,我已经完成了一个汇编程序,它要求输入一个字符,读取它,回显它,重复四次,然后在一个连续的字符串中打印出这些字符。然后我想尝试使用子程序(我们还没有在课堂上学习过),所以我制作了以下子程序来将换行符打印到控制台:
它像这样被“调用”:
运行此程序后,我注意到一些奇怪的事情,程序似乎在第一次调用PRINT_NEWLINE
. 然后我意识到 TRAP 保存了下一条指令的地址,在这种情况下是RET
, in R7
,用于子程序链接的寄存器。这将覆盖由 保存的R7
地址JSR
。所以它似乎停止的原因是在TRAP
例程完成后,它会加载我的RET
指令。实际上,由于TRAP
,将 pc 计数器更改为自身。有点像无限循环。
这一切都很好,我明白发生了什么,但是有没有办法可以TRAP
在我的子例程中使用系统例程,同时仍然使用系统JSR
指令?
当然,我可以在JSR PRINT_NEWLINE
调用之后将指令的地址手动存储到不同的寄存器中,然后在我的PRINT_NEWLINE
子程序结束时,存储JMP
到该寄存器中的地址。
但是,这对我来说似乎是错误的,我是一名程序员,因此我很懒惰,宁愿只是享受别人的劳动成果并使用 and 的JSR
组合RET
。
那么是否可以TRAP
在子例程中调用例程并仍然用于RET
从该子例程“返回”?如何做到这一点?
谢谢!
assembly - lc3 - Loading Multiple Source Files to be Run
So working with LC3
, and I've been given an assignment to build a library functions
to run a given driver. I've written the library at this point, but I cannot figure out how to load the library and the driver in the the Simulator memory simultaneously to run them together, in spite of perusing the McGraw book
and the dreadfully-lacking-in-this-subject Google
.
Anybody have the know-how on how to accomplish this?
assembly - 二进制右移,仅给定加法
我正在做一个项目,我正在读取内存位置并需要以 ASCII 输出它们的十六进制值。
该语言给了我一个 16 位的字长,所以我需要一次分割来抓取一个半字节来转换为十六进制。不幸的是,该语言只为数学/逻辑函数提供和、或、不和添加。
我想我可以通过左移并测试负标志以在移位后在末尾添加 1 来创建所需的效果,但我认为必须有更好的方法来做到这一点。
任何见解将不胜感激。
assembly - 在 LC-3 汇编语言中,如何将这些命令转换为机器代码?
对于我的一门课程,我需要用机器代码编写一个 LC-3 程序,但我似乎找不到带有句点的命令的机器代码:
ETC
有谁知道它们是什么?我已经完成了所有命令,例如:
AND R2, R2, #0
-->0101 010 010 1 00000
但是,我无法在线找到.ORIG
, .END
,.BLKW
命令的前四位。
assembly - 在汇编 LC-3 中保存一串字符
我正在尝试使用 LC-3 架构制作一个简单的程序。我要做的就是从控制台读取一个字符串,以某种方式将其保存在内存中,然后将其打印出来。
这就是我到目前为止所拥有的
输出仅显示字符串中的最后一个字符。如果我输入“steve”,它会打印出“e”
显然我的问题是我需要以某种方式将我读入的每个字符保存到它自己的内存位置。我认为使用 .blkw 会做到这一点,但显然它所做的一切都会覆盖该位置的位。
我的问题是如何将字符存储在连续的内存位置,然后将它们打印到控制台?
rotation - 向右旋转操作,LC3 模拟器
我正在为 LC3 模拟器编写例程,我已经成功编写了 Shift Right 例程,但我现在坚持使用 Rotate Right 例程,它应该向右移动位,并且在每次向右移动期间,最低有效位被复制到最高有效位。我有 AND、NOT、ADD 操作、数据移动操作、七个寄存器来存储值和整个内存范围。我只需要一些基本的想法如何实现它。
if-statement - LC-3 If/Else 语句
我的这个 LC-3 程序有问题,我无法从if
/else
语句中获取要显示的字符串。我不知道我的语句是否错误,或者我是否显示错误的字符串。目标是让它在用户输入时显示 ,并IF
在用户输入时显示(停止程序)。0
else
1