문제

나는 차이점이 무엇인지 이해하지 못합니다.

도움이 되었습니까?

해결책

MOVSB와 같은 지침을 사용하는 경우 SI는 다음으로 간주됩니다. 에스ource register, di는 소지 등록. 그러나 둘 다 일반 X86 레지스터입니다.

다른 팁

내 어셈블리는 약간 녹슬었지만 하나는 소스 인덱스이고 다른 하나는 대상 인덱스입니다.다음과 같은 지시 movsb 가 가리키는 메모리 위치에서 바이트를 복사합니다. SI, 그리고 가 가리키는 메모리 위치로 이동합니다. DI, 그리고 둘 다 증가시키므로, 다음에 저장된 바이트를 복사하려면 SI+1 에게 DI+1, 추가 movsb 명령만 필요합니다.

SI 소스 인덱스를 의미합니다.소스 인덱스는 문자열 명령어(LODS,MOVS 또는 CMPS)에서 읽고 있는 현재 문자에 ​​대한 포인터로 사용됩니다.소스 인덱스는 간접 주소 지정 시 Bx 또는 Bp를 추가하기 위한 오프셋으로도 사용할 수 있습니다.
예:

MOV [Bx + SI] , Ax  

이 명령어는 Ax의 내용을 주소가 Bx와 SI의 합인 메모리 위치에 복사합니다.

DI 문자열 명령어에서 쓰거나 비교되는 현재 문자에 ​​대한 포인터로 사용되는 대상 인덱스를 나타냅니다.

SI와 마찬가지로 오프셋으로도 사용 가능합니다.

위의 DI는 대상 색인을 나타내며 SI는 소스 인덱스를 나타냅니다. 메모리에서 데이터를 이동하려면 Si E., Mov Ax, [SI]를 사용합니다. 그리고 우리가 메모리로 데이터를 이동하고 싶을 때 우리는 DI를 사용합니다. 예를 들어, Mov [di], 도끼

둘 다 16 비트 레지스터이며 8 비트로 나눌 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top