MOV AX, DSEG
<!--StartFragment--> <!--EndFragment-->
MOV DS, AX
랑
뭔관계인지 알려주실분있으세요?
응. 도스 6비트 어셈 공부하고 있구나.
오타. 6비트 -> 16비트.
PSP (Program Segment Prefix)는 도스에서 프로그램을 실행하면 메모리 가장 처음 부분에 할당해서 써놓는 256바이트 정보 블럭이야. 프로그램 시작 직후 DS 세그먼트는 이 PSP 영역 시작 지점을 가리키지.
시험이 담주 수요일이라 정확히 알고가려구요. ㅠㅠ
PSP - Code - Data - Stack 순서로 메모리에 영역들이 위치하는데, CS, SS 세그먼트는 제대로 Code, Stack 영역을 가리키지만 DS는 PSP를 가리키기 때문에 프로그램 시작 시 DS 값은 초기화해줄 필요가 있다.
그게mov ah, 4ch 인터럽트 21h하면 psp가 가르키는 대로가는건가요?
4Ch번 서비스가 뭐지?
종료요 프로그램종료
프로그램 종료인데 PSP랑 뭔 상관?
아 PSP가 가지고 있던 부모 프로세스 코드 위치로? 응 맞지.
아리가또 고자이마스.... ㅠㅠ
근데 종료시 IP가 다음을 가르키는데 다음이 없자나요..<프로그램 마지막> 그래서 인터럽트를 해서 CS가 PSP로 위치를 바꾸는건가요?
이게 또 헷갈리네요. CS는 단순히 코드세그먼트아닌가요?
음. 종료 서비스 콜 내부에서 부모 프로그램의 레지스터 값대로 popa, popf해서 복원하고 jmp far로 부모 프로그램의 CS:IP로 점프하겠지.
물론 이거 하기 전에 종료 서비스 콜 부른 프로그램의 메모리 영역을 비어있는 상태로 표시하고 말야.
하아 어셈블리 ㅋㅋ 레지스터 제어하려면 어셈뿐이지
응. 도스 6비트 어셈 공부하고 있구나.
오타. 6비트 -> 16비트.
PSP (Program Segment Prefix)는 도스에서 프로그램을 실행하면 메모리 가장 처음 부분에 할당해서 써놓는 256바이트 정보 블럭이야. 프로그램 시작 직후 DS 세그먼트는 이 PSP 영역 시작 지점을 가리키지.
시험이 담주 수요일이라 정확히 알고가려구요. ㅠㅠ
PSP - Code - Data - Stack 순서로 메모리에 영역들이 위치하는데, CS, SS 세그먼트는 제대로 Code, Stack 영역을 가리키지만 DS는 PSP를 가리키기 때문에 프로그램 시작 시 DS 값은 초기화해줄 필요가 있다.
그게mov ah, 4ch 인터럽트 21h하면 psp가 가르키는 대로가는건가요?
4Ch번 서비스가 뭐지?
종료요 프로그램종료
프로그램 종료인데 PSP랑 뭔 상관?
아 PSP가 가지고 있던 부모 프로세스 코드 위치로? 응 맞지.
아리가또 고자이마스.... ㅠㅠ
근데 종료시 IP가 다음을 가르키는데 다음이 없자나요..<프로그램 마지막> 그래서 인터럽트를 해서 CS가 PSP로 위치를 바꾸는건가요?
이게 또 헷갈리네요. CS는 단순히 코드세그먼트아닌가요?
음. 종료 서비스 콜 내부에서 부모 프로그램의 레지스터 값대로 popa, popf해서 복원하고 jmp far로 부모 프로그램의 CS:IP로 점프하겠지.
물론 이거 하기 전에 종료 서비스 콜 부른 프로그램의 메모리 영역을 비어있는 상태로 표시하고 말야.
하아 어셈블리 ㅋㅋ 레지스터 제어하려면 어셈뿐이지