INCLUDE Irvine32.inc
.data
myArray BYTE 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
.code
main PROC
call Clrscr
mov esi, OFFSET myArray
mov ecx, LENGTHOF myArray
xor eax, eax
L1:
add eax, byte ptr [esi]
inc esi
loop L1
call WriteInt
exit
main ENDP
END main
Я предполагаю, WriteInt
принимает параметр в EAX для распечатки результатов, поскольку код не удался, потому что вы использовали 32-битный указатель на смещение в данных в регистре ESI
, измените его на byte ptr
, чтобы получить правильные 8 бит (байт). Кроме того, использование XOR
будет быстрее, чем инструкция MOV
для регистра EAX
, тогда код должен работать ...
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.