Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何让这个LC3程序成倍增加?_Loops_Math_Assembly_Ascii_Lc3 - Fatal编程技术网

Loops 如何让这个LC3程序成倍增加?

Loops 如何让这个LC3程序成倍增加?,loops,math,assembly,ascii,lc3,Loops,Math,Assembly,Ascii,Lc3,我试图学习如何在LC3中乘法,但在修改我的旧程序时遇到了麻烦,该程序只用于加法。我如何修改这个程序,使之乘以2个给定的输入? 代码: 在LC-3上进行乘法的最简单方法是重复加法。所以,继续求被乘数的和,并减少乘数;当乘数被消耗(即零)时,迭代停止 这里有很多警告:如果乘数是负数,那么我们要么用倒计时来否定它,要么用倒计时来代替——无论哪种方式,最终结果都是否定的 由于乘法是可交换的,我们可以考虑使用乘法器的绝对值(绝对值),从而减少迭代次数。但对于更优化的乘法,我们将切换到另一个完整的算法,即。

我试图学习如何在LC3中乘法,但在修改我的旧程序时遇到了麻烦,该程序只用于加法。我如何修改这个程序,使之乘以2个给定的输入? 代码:


在LC-3上进行乘法的最简单方法是重复加法。所以,继续求被乘数的和,并减少乘数;当乘数被消耗(即零)时,迭代停止

这里有很多警告:如果乘数是负数,那么我们要么用倒计时来否定它,要么用倒计时来代替——无论哪种方式,最终结果都是否定的


由于乘法是可交换的,我们可以考虑使用乘法器的绝对值(绝对值),从而减少迭代次数。但对于更优化的乘法,我们将切换到另一个完整的算法,即。请注意,此算法通常用于硬件实现,在硬件实现中,保存珍贵的寄存器位非常重要,而对于软件来说,这并不是一个真正重要的问题。

在LC-3上进行乘法的最简单方法是重复加法。所以,继续求被乘数的和,并减少乘数;当乘数被消耗(即零)时,迭代停止

这里有很多警告:如果乘数是负数,那么我们要么用倒计时来否定它,要么用倒计时来代替——无论哪种方式,最终结果都是否定的

由于乘法是可交换的,我们可以考虑使用乘法器的绝对值(绝对值),从而减少迭代次数。但对于更优化的乘法,我们将切换到另一个完整的算法,即。请注意,此算法通常用于硬件实现,在硬件实现中,保存珍贵的寄存器位非常重要,而对于软件来说,这并不是一个真正重要的问题

.ORIG x3000 ; begin at x3000

; input two numbers

IN ;input an integer character (ascii) {TRAP 23}

LD R3, HEXN30 ;subtract x30 to get integer

ADD R0, R0, R3

ADD R1, R0, x0 ;move the first integer to register 1

IN ;input another integer {TRAP 23}

ADD R0, R0, R3 ;convert it to an integer

; add the numbers

ADD R2, R0, R1 ;add the two integers

; print the results

LEA R0, MESG ;load the address of the message string

PUTS ;"PUTS" outputs a string {TRAP 22}

  ADD R0, R2, x0 ;move the sum to R0, to be output

  LD R3, HEX30 ;add 30 to integer to get integer character

  ADD R0, R0, R3

  OUT ;display the sum {TRAP 21}

     ; stop

HALT ;{TRAP 25}

; data

 MESG .STRINGZ "The sum of those two numbers is: "

 HEXN30 .FILL xFFD0 ; -30 HEX

 HEX30 .FILL x0030 ; 30 HEX

.END```