【问题标题】:How would you draw a vertical line in an LC-3 simulator like Pennsim?你会如何在像 Pennsim 这样的 LC-3 模拟器中画一条垂直线?
【发布时间】:2020-08-04 20:12:55
【问题描述】:

我知道怎么画水平线

LOOP1 STR R5, #0    ;starting ixel
ADD R5, R5, #1   ;increment of pixel on coordinate
ADD R7, R7 #-1  ;decrement to the desired length counter 
BRp LOOP1    ;keeps looping until register with desired length is zero

显然,无论用户为计数器和坐标位置选择什么,寄存器都会有所不同,但这些只是我之前代码中的数字。操纵该代码以绘制垂直线的方法是什么?我对这个网站上代码的格式并不完全满意,所以如果我在几个方面有错,请原谅。

【问题讨论】:

    标签: lc3 lc3-trap


    【解决方案1】:

    水平线和垂直线的区别在于我们如何增加像素位置。

    请注意,二维坐标可以(并且必须)通过rowCoordinate * columSize + columnCoordinate 之类的公式映射到一维系统。 (内存是一维系统,它没有二维,所以我们使用这种映射。)

    因此,正如您所展示的,我们可以通过从 (row,0) 到 (row,columnSize-1) 遍历每个像素来绘制一条水平线。通过上面的映射公式,我们从

    (row,c) 到 (row,c+1) 只需将像素地址加 1。

    要绘制一条垂直线,我们希望改变行位置并保持列位置固定,如下所示:从 (0,col) 到 (rowSize-1,col)。

    根据2d到1d的映射,就是从

    (r,col) 到 (r+1,col) 我们需要按 columnSize 而不是 1 递增。

    【讨论】:

    • 完美,非常感谢!我在 excel 中绘制了 NCSU,因此我可以编写设计代码并将其放入 Pennsim,并且知道如何为字母制作所有水平线,但不知道如何为它们合并垂直线。非常感谢并保持安全!
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2020-12-18
    • 2019-09-04
    • 1970-01-01
    • 2021-10-11
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多