나는 (나를 위해 : D) 어려운 시험을 치고 '$'문자의 의미를 찾을 수 없습니다. 예를 들어, 다음 코드를 가지고 있습니다.
DATA SEGMENT
vector db 00h,10h,20h,30h,40h
db 50h,60h,70h,80h,90h
lv equ ($ - vector)/TYPE vector
누군가가 lv의 가치를 말해 줄 수 있습니까?
나는 (나를 위해 : D) 어려운 시험을 치고 '$'문자의 의미를 찾을 수 없습니다. 예를 들어, 다음 코드를 가지고 있습니다.
DATA SEGMENT
vector db 00h,10h,20h,30h,40h
db 50h,60h,70h,80h,90h
lv equ ($ - vector)/TYPE vector
누군가가 lv의 가치를 말해 줄 수 있습니까?
으로 나눈 것으로, 다음 lv
아직도 내가 마지막 부분 확신, 10이 될 것입니다 벡터 배열의 요소 수를 가져와야합니다. 전체 코드는 C에 다음과 거의 동등하다 :
int vector[10] = {0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90};
int lv = sizeof(vector)/sizeof(vector[0]);
설명 : MASM에서 $
오프셋 현재 메모리를 나타낸다. 나는. 당신은 메모리에 vector
어레이를 채웠고 메모리 오프셋은 끝나는 곳에서 바로 나타납니다. 따라서 $ - vector
은 배열에 대한 포인터를 현재 오프셋에서 뺍니다. 이로 인해 배열의 크기가 효과적으로 지정됩니다. MASM에서
타입 연산자는 어레이의 각 요소의 크기 (바이트)를 반환한다.
(인용구 : http://www.c-jump.com/CIS77/ASM/Instructions/lecture.html - 좋은 MASM 문서 인 것처럼 보입니다.) 나는. 그것은 C의 sizeof(vector[0]);
과 같습니다.
어떤 어셈블리 언어입니까? 그것은 다른 ASM에서 다른 의미를 가지고 있습니다. – Mints97
이것은 현재의 메모리 오프셋을 나타 내기 위해 사용될 수있는 것처럼 보입니다. 단지 추측 일뿐입니다 ... – Mints97
우리는 I8086 프로세서를 사용하고 있습니다 ... 그리고 컴파일하는데있어 MASM을 사용하고 있습니다. D – Valeriu92