【问题标题】:Program to calculate sum of list of numbers计算数字列表总和的程序
【发布时间】:2020-07-07 18:31:15
【问题描述】:

我试图运行这个,但我不知道错误在哪里。

include "emu8086.inc"
ORG 100
.data
ARRAY DB 12H, 24H, 26H, 63H, 25H, 86H, 2FH, 33H, 10H, 35H
SUM DW 0
.code
START: MOV AX, @DATA
MOV DS, AX
MOV CL, 10
XOR DI, DI
MOV BX, OFFSET ARRAY
BACK: MOV AL, [BX+DI]
MOV AH, 00H
MOV SUM, AX
INC DI
DEC CL
JNZ BACK

                   ; print out the number in ax
CALL print_num      ; using procedure
RET
END  

【问题讨论】:

    标签: assembly emu8086


    【解决方案1】:

    ORG 100

    如果您要创建一个 .COM 程序,则此 ORG 指令的正确值是 256,或者以十六进制表示时为 100h。您忘记了 h 后缀!

    .COM 程序格式也很简单,您不需要以下任何内容:.data.codeMOV AX, @DATAMOV DS, AX。但是,您应该将代码放在数据之前,就像我在下面的程序中所做的那样。

    MOV SUM, AX

    任务是得到“总和”。您需要在此行使用add 指令。

    CALL print_num

    在您可以使用 emu8086.inc 中的 print_num 过程之前,您需要使用 DEFINE_PRINT_NUMDEFINE_PRINT_NUM_UNS 声明它。

    include 'emu8086.inc'
    ORG 100h
    
    ; code
    MOV CL, 10
    XOR DI, DI
    MOV BX, OFFSET ARRAY
    BACK: MOV AL, [BX+DI]
    MOV AH, 0
    ADD SUM, AX
    INC DI
    DEC CL
    JNZ BACK
    
    CALL print_num
    RET               ; End of the .COM program
    
    ; data
    ARRAY DB 12h, 24h, 26h, 63h, 25h, 86h, 2Fh, 33h, 10h, 35h
    SUM   DW 0
    
    DEFINE_PRINT_NUM
    DEFINE_PRINT_NUM_UNS
    END
    

    【讨论】:

      猜你喜欢
      • 2022-11-09
      • 1970-01-01
      • 2020-01-02
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多