奇数位置组件的元素的乘积

时间:2016-05-11 22:13:58

标签: arrays assembly x86 multiplication

我有疑问,希望你能帮我找到合适的解决方案

我编写了这段代码来计算使用程序集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

1 个答案:

答案 0 :(得分:1)

您只需更改程序中的2条指令:

  • ADD AX,[SI]更改为mul word ptr [si]。这使产品保留在DX:AX中,但由于涉及的数字很小,DX寄存器将保持为零。
  • 用1而不是0初始化AX寄存器,否则产品将始终为零!在此计划的第4行,将MOV AX,0更改为mov ax,1

您可以通过在" endif"下面移动以下行来改进程序。标签。它们在任何情况下都会被执行:

ADD CX,1
ADD SI,2