【发布时间】:2016-05-11 22:13:58
【问题描述】:
我有问题,希望你能帮我找到正确的解决方案
我编写了这段代码来使用程序集 x8086 计算数组中奇数的加法。
我现在要计算奇数POSITION的元素相乘
例如:
x DB 1,3,3,4,5,7
数据库 6
产品为:84(产品 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
【问题讨论】:
-
代码中的数组是文字而不是文本中的字节。对于单词,您需要添加 4 以跳过一个元素。此外,我在您的代码中看不到任何乘法。
-
我的代码是对奇数进行加法!现在我想做奇数位置的乘法! !
-
所以使用
mul指令。您被困在 8086 上,因此您不能使用二操作数imul r16, r16,而必须使用带有隐式 ax 和 dx 操作数的单操作数形式imul r/m16。
标签: arrays assembly x86 multiplication