나는 MASM & 어바인 32 비트 어셈블리를 사용하고 있으며 배열 A, B, C를 가지고 있으며 배열 A의 각 [i] 항목을 합산하여 A + B = C를 수행 할 때 누적됩니다. 배열 예를 들어 C.정확하게 배열 합산
에 B와 쓰기,
arrA 1, 2, 4, 1
+
arrB 2, 1, 1, 3
=
arrC 3, 3, 5, 4
나는 포인터 작업을 시도했습니다,하지만 난 00, 00, 00, 0F 출력을했다.
StrHex_MY 절차에주의하지 마십시오. 출력 배열에서 테스트됩니다.
코드 :
.586
.model flat, stdcall
ExitProcess PROTO, dwExitCode:DWORD
include \Irvine\Irvine32.inc
includelib \Irvine\kernel32.lib
includelib \Irvine\user32.lib
include module.inc
.data
CaptionGreet BYTE "Test me", 0
arrA DWORD 1, 2, 4, 1
arrB DWORD 2, 1, 1, 3
arrC DWORD 0, 0, 0, 0
toOut DB 64 dup(?)
.code
main PROC
mov edi, OFFSET arrA ; Address of arrA
mov esi, OFFSET arrB ; Address of arrB
mov eax, 0 ; Register with result
mov ecx, LENGTHOF arrA ; Lenght of arrays
L1:
add eax, [edi] ; Add current arrA element to eax
add eax, [esi] ; Add current arrB element to eax
add edi, TYPE arrA ; Move pointer to the next arrA element
add esi, TYPE arrB ; Move pointer to the next arrB element
mov arrC, eax ; Move current eax value to arrC
loop L1
; Converting result to HEX toOut. Don't pay attention to this part
; ----
push OFFSET toOut
push OFFSET arrC
push 256
call StrHex_MY
; ---
; Output result
INVOKE MessageBoxA, 0, ADDR toOut, ADDR CaptionGreet, 0
INVOKE ExitProcess,0
main ENDP
END main
그래서 0F 출력, 그리고 지금 각 arrC 요소에 액세스하여 arrA + arrB 현재 요소의 합계로 다시 작성하는 방법을 설명합니다. – NLis