0
이 코드는 리얼 모드에서 작동합니다. 예 : 이 코드는 0x001FFD50 주소로 이동합니다. 내가 다시 0x001F0674 주소를 얻을 필요가REAL 모드의 어셈블러에서 32 비트 주소로 돌아 오는 방법은 무엇입니까?
: 그 후
...
001F066F: push es
001F0670: push 0FD50
001F0673: retf ^^^^^^
001F0674: push 00051
...
, 나는 같은 코드가 있습니다.
...
001FFE91: push 00674
001FFE94: retn ^^^
...
대신에 나는 0x0674 주소로갑니다. 리얼 모드에서 0x001F0674 주소로 되돌리려면 어떻게해야합니까?
세그먼트를 전환하려면 'retf'를 사용해야합니다. 첫 번째 예제를 사용하되'es '대신'push 0x001F'를 사용하십시오. 또는'es'가 여전히'0x001F'를 포함하고 있다면 그것을 유지할 수도 있습니다. – Jester
두 번째보기에서는 동일한 세그먼트에있는 것처럼 보이므로 결국 세그먼트를 전환 할 필요가 없으므로 코드가 실제로 작동해야합니다. – Jester
나는 어디에서나'0x001FFD50'와 같은 것을 가정합니다. 실제로는'0x001F : 0xFD50'을 의미합니다. 32 비트 주소가 아닌 경우 세그먼트 : offset (실제 주소 = 세그먼트 * 16 + 오프셋) –