我有疑问,希望你能帮我找到合适的解决方案
我编写了这段代码来计算使用程序集x8086在数组中添加奇数。
我现在想要计算奇数POSITION元素的乘法
例如:
x DB 1,3,3,4,5,7
n DB 6
该产品是:84(produit de x [1],x [3],
x [5])
谢谢
include 'emu8086.inc '
org 100h
LEA SI, array
MOV AX,0
MOV CX,0
MOV BX,1
for:
CMP CX,n
JGE endfor
CMP CX,BX
JNE else
ADD AX,[SI]
ADD CX,1
ADD BX,2
ADD SI,2
JMP endif
else:
ADD CX,1
ADD SI,2
endif:
JMP for
ENDFOR:
call PRINT_NUM
ret
array dw 1,9,3,4,5,8,2
n dw 7
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
END
答案 0 :(得分:1)
您只需更改程序中的2条指令:
ADD AX,[SI]
更改为mul word ptr [si]
。这使产品保留在DX:AX中,但由于涉及的数字很小,DX寄存器将保持为零。MOV AX,0
更改为mov ax,1
。您可以通过在" endif"下面移动以下行来改进程序。标签。它们在任何情况下都会被执行:
ADD CX,1
ADD SI,2