16 비트 x86 어셈블리 언어의 배열 요소 평균을 계산하는 코드를 작성했습니다. 32h
및 C8h
요소는 올바르게 작동하지만 190h
을 입력하면 LEA si, array
에 오류가 발생합니다. 왜?x86 어셈블리 언어의 LEA 오류
배열의 처음 2 바이트는 배열 크기를 나타냅니다.
저는 emu8086을 사용합니다.
data segment
array db 32h, 00, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9, 3, -10, 7, 14, 9
min db ?
max db ?
msg_average db 'The average = $'
msg_min db 'The minimum element is: $'
msg_max db 'The maximum element is: $'
xxh dw ?
xxl dw ?
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
lea ax, data
mov ds, ax
mov es, ax
;Getting array size
lea si, array ; HERE IS THE ERROR
mov cx, [si]
;Moving si to the location of the first element
mov si, 0002h
.
.
.
.
어떤 오류가 발생합니까? 0190h 크기를 사용하려고 할 때 코드를 표시 할 수 있습니까? – Devolus