【发布时间】:2017-07-20 18:11:51
【问题描述】:
我在 SEGMENT .DATA 中有 4 个变量
- 数组 A
- 数组 B
- 数组 C
- 数组大小
我的目标是将 A 的第 i 个元素与 B 的第 i 个元素相乘,然后将结果传给数组 C 的第 i 个元素。
我正在使用带有 NASM 编译器的 SASM,intel x86
这是我的代码:
%include "io.inc"
SECTION .DATA
A DD 10, 200, -34, 56, 7
B DD 12, -3, 4, 7, 100
C DD 0, 0, 0, 0, 0
SIZE DB 5
section .text
global CMAIN
CMAIN:
MOV ESI, 0
MOV ECX, [SIZE]
MULT:
MOV EAX, [A + ESI*4]
MOV EBX, [B + ESI*4]
IMUL EAX, EBX
MOV [C + ESI*4], EAX; Program received signal SIGSEGV, Segmentation fault.
INC ESI
LOOP MULT
xor eax, eax
ret
任何想法可能是什么问题?
【问题讨论】:
-
谢谢你的工作,你能把你的评论作为答案吗?
-
MOV ECX, [SIZE]错误,大小定义为SIZE DB 5= byte,而不是 dword,因此您应该将指令更改为movzx ecx, byte [SIZE],或者将定义更改为SIZE DD 5。跨度>