lc3相关内容
我正在编写一个 LC3 程序,该程序将在程序之后存储在内存中的三个字母单词的每个字母递增.'a' 变成 'd','n' 变成 'q','z' 变成 'c',等等. 我将此用作 LC3 Assembly 参考 这是我目前的代码 .orig x3000添加 R1、R1、#3LEA R2,字符串停字符串 .STRINGZ "anz".结尾 我能够从我的参考资料中找出如何在 LC3 中声明
..
我正在 LC3 机器上编写汇编程序. 我的汇编程序是一个 LC3 程序,它将 R2 和 R3 相乘并将结果存储在 R1 中. 这是我的源代码(带注释) ;在程序开始时设置pc到这个地址.ORIG x3000;R1 将存储结果让我们清除它(与 0)AND R1,R1,x0;R2 将乘以 R3,让我们清除它们AND R2,R2,x0AND R3,R3,x0;测试用例 4 * 3 = 12
..
到目前为止,我已经编写了一个代码,将两个数字相加,但是它们是个位数. .orig x3000 lea r0, string1 puts getc out add r1, r0, 0 ld r0, minus48 add r1, r1, r0 lea r0, string1 ;input one puts LOOP getc out add
..
在执行LDI时,我很难弄清天气如何将一个寄存器中的数据内容加载到一个寄存器中,或者用值的地址间接地将该寄存器加载到寄存器中. 示例: x3000 LDI R6, far x3001 ...(some command) x3002 ...(some command) x3003 far x6000 ... x6000 xf000 执行x3000后R6中的数据是什么? 解决方案
..
嗨,我正在尝试编写一个计算数字平方并将其存储在r0中的lc3汇编程序,该整数作为参数提供并位于r1中,我在调试时注意到的问题是在第一个过程中通过它最初添加2,但第二次通过它未能将另一个2添加到r0-我的代码在任何帮助下都值得赞赏 .orig x3FF8 ld r1,n ld r5,n square add r2,r1,#0 add r5
..
说我有一个加载到R0中的值(例如1234).如何将这个值打印到控制台? 解决方案 我假设您想在控制台上打印一个数字,但是如果有的话,您会得到随机字符. 当LC3尝试将您的数字解释为ASCII字符时,会发生这种情况.示例:ASCII中的数字8是退格字符. 要使程序正常工作,您需要在电话号码上添加 48(十进制)或 x30(十六进制),然后才能将其打印到控制台上. .ORIG
..
我不知道为什么After instruction “LDR R3, R0, 2” is executed, the value stored in R3 is x370C.在此指令中2代表什么?它看起来不像是一个崇高的价值.我知道此时R0包含x370C.有人可以帮忙吗?非常感谢! .ORIG X3700 LEA R0, A LDI R2, C LDR R3, R0, 2 AND
..
我试图弄清楚如何用LC3汇编语言实现位计数器.例如:输入"00001100001000001"输出"000000000000100" 我将在位字符串中计数一个的数目,并以二进制形式输出该数目.我知道如何一次只给定一点,但是我不知道如何一次只分析16位字符串中的一位. 谢谢. 解决方案 有几种不同的方法可以计算LC3中存储的值中的位数. 您可以使用位移并计算末端“掉落"的位 您可以使
..
我一直在尝试用VHDL代码为我在Altera DE1板上实现的简单16位处理器编写有限状态机.在有限状态机中,我有一个CASE语句,用于处理不同的16位指令,这些指令由16位STD_LOGIC_VECTOR带到FSM中.但是,在有限状态机对指令进行解码的解码状态下,我遇到了一些麻烦.指令之一是ADD,它将两个寄存器作为操作数,第三个作为目标寄存器.但是,我还有一条ADD指令,该指令将一个寄存器和一
..
我正在尝试使用LC-3程序集在控制台上打印一个二进制数字. 到目前为止,我尝试过的内容包括(但不限于): binary .fill b10000110 lea r0, binary puts ; prints garbage ld r0, binary out ; prints 0 (I know it o
..
我正在进行lc3汇编编程的第一步,我注意到每次尝试在内存中存储负值(例如使用"ST"指令)时,都会出现某种错误.而是在此存储位置中存储"TRAP xFF". 有人知道我该怎么克服吗? 解决方案 由于该变量是运行时代码的一部分,因此会出现此错误.通常最好的做法是将变量放在HALT命令后的代码末尾. .ORIG x3000 MAIN LD R0, VAR1 NOT R0, R0
..
.ORIG x3000 COUNTER .FILL x0005 LEA R0, HELLO_WORLD PUTS HALT HELLO_WORLD .stringz "Hello World this is John Cena!" .END 到目前为止,这是我只写一次名称的代码,我对如何在该代码中实现循环感到困惑,因此该名称将被显示5次. 解决方案 打印Hello World!使用
..
我正在编写一个LC3程序,它将程序后存储在存储器中的一个三字母单词的每个字母递增。 'a'成为'd','n'成为'q','z'成为'c'等。 “https://classes.soe.ucsc.edu/cmpe012/Winter09/lectures/06_LC3_Assembly.pdf”rel =“nofollow noreferrer”> LC3 Assembly a referen
..
希望这是一个简单的问题,但我不能为我的生活弄清楚如何做一个bitshift二进制。这是在LC3 environemnt正在做。我只需要知道如何通过两到算术鸿沟,并向右移动。我知道要离开是只需添加二进制值本身简单,但我已经试过相对来说bitshift权(从自身减去,指出再扣除等等等等)会非常AP preciated。 或者,如果你有更好的方法来x00A0移动到x000A,这也将是非常美妙的。谢谢!
..
如何从用户的任何字符输入转换成其对应的十进制值?我只是遇到了麻烦开始了。 该方案已实现了以下几件事: 该程序从键盘字符接受 如果该字符是数字('0'到'9'): A)转换字符到其对应的十进制值。换言之,“0”变为零,'1'变为1,...“9”变成9.让我们称该值R(对于“行程长度”)。 b)等到(使用GETC)其它字符。 C)打印该字符到控制台中的R副本。 ) D)回到步骤1
..
我对这个问题感到困惑:什么是存储在寄存器0指令后的值“LEA R0,A”执行为什么答案是x370C我?估计这应该是A的地址加载到R0?如果是这样,我们如何知道地址?是否有人可以帮忙吗?非常感谢! .orig这样X3700 LEA R0,A LDI R2,C R3 LDR,R0,2 与R 1,R 1,#0 在 ST R0,D JSR˚F 停 ˚FLD R1,B ADD R1,R1
..
我从问题7 我不应该强调的地址必须x3307,x3308不? 我推断这一点的方式是,(第2个指令之前PC)=(1指令后PC)。 1日指令后PC为X3301。第二指令执行。因此,当时,PC,X3301将由6递增以x3307 是否每个人都同意吗?还是我错过了什么和R3应实际存储x3308? 解决方案 PC相对偏移的已经递增的PC的顶端施加,即在PC的值“后”,或者换句话说,所述的地址接
..
我工作的一个项目,我正在读的存储位置,需要输出的ASCII十六进制值。 语言给了我一个16位字长的,所以我有必要划分在同一时间抢四位以转换为十六进制。不幸的是,这种语言仅提供与,或,不和添加数学/逻辑功能。 我已经想通我可以创建左移和测试负标志预期的效果后,转移到1添加到末尾,但我盘算必须有这样做的更好的方法。 任何有识之士将AP preciated。 解决方案 所以原来的方法我用的
..
的值存储在一个.BLKW对象并在用LDR R0,R1,0一个LOOP被加载 - ADD R1,R1,1(递增.BLKW地址)。问题是你如何转换转换存储的十六进制值他们的二进制值,然后输出到16位二进制格式控制台。任何想法将大大AP preciated!我想过AND运算值,但我不知道该如何去做。 解决方案 您已经有了循环下去。然而,一个小错误。结果 我们知道,当我们使用OUT进行打印,其打
..
我在做模拟考试的问题。 问题是 这有什么错在此行LC3 code的? (出演线) ADD R3,R3,0; ** BRNZ ISPOS ** 停 .BLKW 250 ISPOS不R3,R3 .... 我看到星号线是科和条件codeS为负,零,基本上去标签ISPOS如果条件code为负或零或以其他方式阻止该程序。 我要说的是,这条线LC3 code有什么不妥的地方。有没有人看到它的
..