-3

一个汇编语言8085程序,用于计算前 20 个偶数(8 位)的总和并将结果存储在位置60006001。我试过但无法完成

MVI c,00H
MOV B, C
MOV D, 00H
NEXT:
INX, H
4

4 回答 4

2

不要使用循环,因为现在使用汇编最常见的原因是速度。

n偶数之和2, 4, 6, ...等于n(n + 1)。(或者,当然n(n + 1) - 2,当您从 . 开始时0, 2, 4, ...。)

于 2013-06-21T07:11:47.300 回答
1

先用伪代码写出来:

    sum := 0                        ; init sum
    num := 2                        ; init first even number
    count := 20                     ; init loop counter
loop:
    sum := sum + num                ; accumulate sum
    num := num + 2                  ; next even number
    count := count - 1              ; decrement loop count
    IF count > 0 THEN GOTO loop     ; if loop count still positive then next num
    store sum -> 6000/6001          ; else we're done - store the result

从这里将伪代码转换为 8085 操作码应该非常简单。

于 2013-06-21T06:53:07.157 回答
0

要测试一个数字在汇编中是偶数还是奇数,只需测试最不重要的位即可。所以你只需要一个循环来增加一个值并重复测试这个位。如果是,则将其添加到您的总和中。

sum = 0
value = 0
found = 0

loop:
    if found == 20
        goto done

    if value & 1
        sum += value
        found = found + 1

   value = value +1
   goto loop

done:
    print sum
于 2013-06-21T07:17:25.290 回答
0

好吧,为了获得最佳性能,手动计算结果,然后用两条左右的指令将其存储在内存中。

于 2013-06-21T08:06:08.917 回答