Assembly 计算数字列表总和的程序
我试图运行这个,但我不知道错误在哪里Assembly 计算数字列表总和的程序,assembly,emu8086,Assembly,Emu8086,我试图运行这个,但我不知道错误在哪里 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
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
ORG 100
如果要创建.COM程序,则此ORG
指令的正确值为256,如果以十六进制表示,则为100h。您忘记了h后缀
此外,.COM程序格式非常简单,您不需要以下任何一种:.data
、.code
、MOV AX、@data
和MOV DS,AX
。但是,您应该像我在下面的程序中所做的那样,将代码放在数据之前
MOV和,AX
任务是得到“总和”。您需要在这一行使用add
指令
调用print\u num
在使用emu8086.inc中的print_num过程之前,需要使用DEFINE_print_num
和DEFINE_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