繁体   English   中英

使用LC3中的迭代右移

Right shift using iteration in LC3

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

因此,我正在LC3中开发一个程序,而掩膜存在问题。 我可以创建一个具有适当长度的全1的掩码,可以将所有内容精确地移​​到适当的字段,但是我一生无法完成将与进行比较的操作后再移回右侧。 您如何在LC3中右移? 我在迭代比较中看到了一些东西,但是我不知道如何比较不同位置的位,并在相同位置比较它们,无论如何我最终还是必须将一位右移。 我想念什么吗?

2 个回复

为了模拟右移,您只需要制作两个掩码,一个用于源位,一个用于目的位:

src_mask=0x04;  // read from bit position 2 
dst_mask=0x01;  // write to bit position 0

while(src) {  // or while src_mask, because that too will eventually go to zero
   if (src & src_mask) dst+=dst_mask;  // or dst|=dst_mask
   src &= (~src_mask);
   dst_mask=dst_mask+dst_mask;
   src_mask=src_mask+src_mask;
}

在这种情况下,您可能根本不需要右移-只需保存起始字段,然后再向左移,然后再从内存中将其还原即可。

1 LC3装配按位右移

我需要做的是使用LC-3组件实现按位左移和按位右移。 基本上,每个位都必须在移位方向上移动一个空间,零填充所创建的空白空间。 例子: 右移: 左移: 通过获取二进制字符串并将其添加到自身,我已成功实现了左移。 我很难理解如何进行正确的转变。 任何想法将不胜感 ...

2 LC3在双重世界上右移

假设我们有数字510(0000 0001 1111 1110),它存储在2个位置 lowHalf 0000 0001和highHalf 1111 1110 如果我们想执行右移,我们如何计算进位? 所以结果将是 0000 0011 1111 1100 ...

3 LC3组装-按位右移

所以右移基本上就是将二进制数除以2 ... 例如20/2=10 换句话说,是从[20]中减去[2] 10倍以获得[0]。 当然,在LC3中,没有分而有减。 我写了这个 在这个模拟器中 http://spacetech.github.io/LC3Simula ...

5 LC3中的跳转失败

我似乎对LC3组装有问题。 我试图跳到一个子例程,但是它只是转到下一个命令。 我试过了: 在底部,此行定义Subpgm。 我希望它可以跳到PC x4000 ,但是PC只是增加了正常的1。 任何帮助将不胜感激! ...

6 在 ASM 和 LC3 中使用堆栈进行递归编程

所以我是汇编新手,我也不擅长递归,这是我到目前为止的代码,它应该从: 但由于某种原因,我处于无限循环中,我也假设将结果存储在变量 PRODUCT 中,但我很难弄清楚如何做到这一点,我已经在注释代码中尝试过,但我和我知道我需要帮助翻译基本案例并确定它们是否返回正确的东西/值。 ...

7 如何在LC3中使用nzp = 000进行BR

我试着编写inst x0000 ,这意味着BR的nzp=0且偏移0 。 我在模拟器中写了BR #0 。 而不是在模拟器上给我那个x0000 ,我得到0x0E00 ,这意味着nzp是111 。 这样做的正确方法是什么? ...

2014-03-26 15:17:00 3 3389   lc3
8 使用LC3应用位掩码

我目前正在上一门组装课程,并且遇到了一个问题,即使在进行在线研究并与教授该课程的教授交谈后,我仍然对如何实现它一无所知。 简而言之,我想知道如何在值上实现位掩码。 例如,如果说您想采用16位值(1000 0011 1100 0001),并将其转换为该值(0000 0000 0111 11 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM