使用 DEBUG 的前 5 个数字的平方和 - DOSBOX 中的汇编编程
sum of the squares of the first 5 numbers using DEBUG - Assembly programming in DOSBOX
请帮忙,我需要在 DOSBOX 中使用 DEBUG - 汇编编程求出前 5 个数字的平方和。这是一个 2^2:
的例子
-a 100 </i>
15BC:0100 mov ax,1
15BC:0103 mov bx,2 ; Base Number
15BC:0106 mov cx,2 ; Exponent
15BC:0109 ;bucle 109:
15BC:0109 mov dx,0
15BC:010C mul bx
15BC:010E loop 109
15BC:0110 int 20
15BC:0112
-g 110
指令mul bx
将ax
的内容(总是)乘以bx
寄存器(参数)的内容。因为是 16 位寄存器,结果最多可以有 32 位。该结果的低 16 位放在 ax
中,高 16 位放在 dx
中。所以你不必在mul
之前清除dx
。只有 div
.
才需要
计算 ax = 3²
的代码(通常 ax = bx
cx
)将是:
mov ax, 1
mov bx, 3 ; Base Number (that is multiplied by itself cx plus one times)
mov cx, 2 ; Exponent (how often the multiplication should be repeated)
expLoop:
mul bx
loop expLoop
如果只计算平方,就不需要循环了,代码也可以简化:
mov ax, 3 ; Base Number (that is multiplied by itself one time)
mul ax
这将计算3²
(一般来说ax²
)。请注意,这里不再使用 bx
和 cx
。
正如 Michael 已经提到的,如果你想得到平方和,你必须在这之后对你的结果求和。因为 cx
不再使用,它可以与 loop
一起使用来遍历所有要平方的数字。 bx
可用于存储平方和:
xor bx, bx ; Sum is initialised to zero
mov cx, 5 ; Iterate from 5 down to 1
iterate:
mov ax, cx
mul cx ; Calculate the square of the acutal number
add bx, ax ; Sum up the squares in bx
loop iterate
请帮忙,我需要在 DOSBOX 中使用 DEBUG - 汇编编程求出前 5 个数字的平方和。这是一个 2^2:
的例子 -a 100 </i>
15BC:0100 mov ax,1
15BC:0103 mov bx,2 ; Base Number
15BC:0106 mov cx,2 ; Exponent
15BC:0109 ;bucle 109:
15BC:0109 mov dx,0
15BC:010C mul bx
15BC:010E loop 109
15BC:0110 int 20
15BC:0112
-g 110
指令mul bx
将ax
的内容(总是)乘以bx
寄存器(参数)的内容。因为是 16 位寄存器,结果最多可以有 32 位。该结果的低 16 位放在 ax
中,高 16 位放在 dx
中。所以你不必在mul
之前清除dx
。只有 div
.
计算 ax = 3²
的代码(通常 ax = bx
cx
)将是:
mov ax, 1
mov bx, 3 ; Base Number (that is multiplied by itself cx plus one times)
mov cx, 2 ; Exponent (how often the multiplication should be repeated)
expLoop:
mul bx
loop expLoop
如果只计算平方,就不需要循环了,代码也可以简化:
mov ax, 3 ; Base Number (that is multiplied by itself one time)
mul ax
这将计算3²
(一般来说ax²
)。请注意,这里不再使用 bx
和 cx
。
正如 Michael 已经提到的,如果你想得到平方和,你必须在这之后对你的结果求和。因为 cx
不再使用,它可以与 loop
一起使用来遍历所有要平方的数字。 bx
可用于存储平方和:
xor bx, bx ; Sum is initialised to zero
mov cx, 5 ; Iterate from 5 down to 1
iterate:
mov ax, cx
mul cx ; Calculate the square of the acutal number
add bx, ax ; Sum up the squares in bx
loop iterate