在汇编中使用循环求和数字 1,2,3,4,5,6,7,8,9,10

SUM numbers 1,2,3,4,5,6,7,8,9,10 by using loop in assembly

我需要在 8086 汇编中使用循环对数字 1,2,3,4,5,6,7,8,9,10 求和。这是我的尝试:

    MOV AX,01h
    MOV CX,0ah
LABEL1:
    inc AX
    LOOP LABEL1
    HLT  

您需要一个 容器 来存储您的金额。您可以为此选择寄存器 DX

首先确保在开始循环之前清空此寄存器
然后在循环的每次迭代中,你 add 当前值 AX 到这个寄存器 DX.

    mov     ax, 1
    mov     cx, 10
    xor     dx, dx    ;This puts zero in DX
Label1:
    add     dx, ax    ;This adds int turn 1, 2, 3, ... ,10 to DX
    inc     ax
    loop    Label1

不确定您是否需要使用loop指令,但另一个循环使用AX进行循环控制。

    mov     ax, 1
    cwd               ;This puts zero in DX because AX holds a positive number
Label1:
    add     dx, ax    ;This adds in turn 1, 2, 3, ... ,10 to DX
    inc     ax
    cmp     ax, 10
    jbe     Label1

更好的循环将数字从高到低相加。这样就不再需要 cmp 指令了。

    mov     ax, 10
    cwd               ;This puts zero in DX because AX holds a positive number
Label1:
    add     dx, ax    ;This adds in turn 10, 9, 8, ... ,1 to DX
    dec     ax
    jnz     Label1