부트섹터 소스 중에서
mov ax,0x9000 ; put stack at 0x91000
mov ss,ax
mov sp,0x1000
sti
MOV AX,0x8000 ;80000번지로 이동...
MOV ES,AX
XOR DI,DI
초반에 이 부분은 초기화 같은데 뭘하는 건지 잘 모르겠네요..
그냥 바로 0x7c00의 위치에 수행할 데이터를 놓으면 안되나요?
이 부분이 뭘하는 부분인지 왜 0x91000에 스택을 위치시키는지...
그구 0x80000은 왜 ES에 넣는건지 단지 초기화 뿐인건지.. 그러면 왜 그렇게 되는건지 알려주세요..
부탁드립니다.
좋은 강좌 재미나게 읽고 있는데 아직 많은 것이 부족해서.. 보는게 힘드네요...
댓글 3
-
chamcham
2004.07.07 00:07
답변 감사드려요.. 제가 개념이 잘 안잡혀서..
좀 헷갈리네용.. ^^;;;근데 정말 강좌 잼있어요.. ^^;;
또 모르는거 있음 질문 드릴께요..
그구 덧글 다는 기능 게시판에 있음 더 좋을 거 같아요.. ^^
>안녕하세요, 반갑습니다.
>
>님이 질문하신 부분은...
>이곳 주인장이 좀 게을러 대충 뛰어 넘어간 부분이기도 하기에 죄송하다는 말씀부터 드리고 싶네요.^^
>
>먼저, 스택을 98000번지로 잡고 있는건... 강좌에서 말씀드렸다시피 참고했던 여러 부트섹터 코드들이 그쯤의 위치를 스택으로 잡고 있더라구요...^^'
>
>그리고, 80000번지로 굳이 이동하지 않고,7C00 위치에서 플로피를 검색해 커널을 올리셔도 상관없습니다. os작업을 하면서 저 딴에는 섹션 제배치를 위한부분을 손을대고 있다가 빼놓지도- 다듬지도 않고 그대로 둔 코드이거든요.^^'''''''
>
>저의 게으름때문에... 헷갈리게 만들어드렸다면 정말 죄송합니다.^^'
>
>>여기 강좌 보고 있는데요..
>>
>>부트섹터 소스 중에서
>>
>>mov ax,0x9000 ; put stack at 0x91000
>>mov ss,ax
>>mov sp,0x1000
>>
>>sti
>>MOV AX,0x8000 ;80000번지로 이동...
>>MOV ES,AX
>>XOR DI,DI
>>
>>초반에 이 부분은 초기화 같은데 뭘하는 건지 잘 모르겠네요..
>>
>>그냥 바로 0x7c00의 위치에 수행할 데이터를 놓으면 안되나요?
>>
>>이 부분이 뭘하는 부분인지 왜 0x91000에 스택을 위치시키는지...
>>
>>그구 0x80000은 왜 ES에 넣는건지 단지 초기화 뿐인건지.. 그러면 왜 그렇게 되는건지 알려주세요..
>>
>>부탁드립니다.
>>
>>좋은 강좌 재미나게 읽고 있는데 아직 많은 것이 부족해서.. 보는게 힘드네요...
>>
>>
>
> -
안녕하세요, 반갑습니다.
님이 질문하신 부분은...
이곳 주인장이 좀 게을러 대충 뛰어 넘어간 부분이기도 하기에 죄송하다는 말씀부터 드리고 싶네요.^^먼저, 스택을 98000번지로 잡고 있는건... 강좌에서 말씀드렸다시피 참고했던 여러 부트섹터 코드들이 그쯤의 위치를 스택으로 잡고 있더라구요...^^'
그리고, 80000번지로 굳이 이동하지 않고,7C00 위치에서 플로피를 검색해 커널을 올리셔도 상관없습니다. os작업을 하면서 저 딴에는 섹션 제배치를 위한부분을 손을대고 있다가 빼놓지도- 다듬지도 않고 그대로 둔 코드이거든요.^^'''''''
저의 게으름때문에... 헷갈리게 만들어드렸다면 정말 죄송합니다.^^'
>여기 강좌 보고 있는데요..
>
>부트섹터 소스 중에서
>
>mov ax,0x9000 ; put stack at 0x91000
>mov ss,ax
>mov sp,0x1000
>
>sti
>MOV AX,0x8000 ;80000번지로 이동...
>MOV ES,AX
>XOR DI,DI
>
>초반에 이 부분은 초기화 같은데 뭘하는 건지 잘 모르겠네요..
>
>그냥 바로 0x7c00의 위치에 수행할 데이터를 놓으면 안되나요?
>
>이 부분이 뭘하는 부분인지 왜 0x91000에 스택을 위치시키는지...
>
>그구 0x80000은 왜 ES에 넣는건지 단지 초기화 뿐인건지.. 그러면 왜 그렇게 되는건지 알려주세요..
>
>부탁드립니다.
>
>좋은 강좌 재미나게 읽고 있는데 아직 많은 것이 부족해서.. 보는게 힘드네요...
>
>
덧글다는 게시판이라...
강좌를 편하게... 게시판에 올릴수도 있겠지만...
워낙 이곳 게시판들이 후지다보니...^^" ㅎ-
참고하도록 하겠습니다.~
>답변 감사드려요.. 제가 개념이 잘 안잡혀서..
>좀 헷갈리네용.. ^^;;;
>
>근데 정말 강좌 잼있어요.. ^^;;
>
>또 모르는거 있음 질문 드릴께요..
>
>그구 덧글 다는 기능 게시판에 있음 더 좋을 거 같아요.. ^^
>
>
>
>>안녕하세요, 반갑습니다.
>>
>>님이 질문하신 부분은...
>>이곳 주인장이 좀 게을러 대충 뛰어 넘어간 부분이기도 하기에 죄송하다는 말씀부터 드리고 싶네요.^^
>>
>>먼저, 스택을 98000번지로 잡고 있는건... 강좌에서 말씀드렸다시피 참고했던 여러 부트섹터 코드들이 그쯤의 위치를 스택으로 잡고 있더라구요...^^'
>>
>>그리고, 80000번지로 굳이 이동하지 않고,7C00 위치에서 플로피를 검색해 커널을 올리셔도 상관없습니다. os작업을 하면서 저 딴에는 섹션 제배치를 위한부분을 손을대고 있다가 빼놓지도- 다듬지도 않고 그대로 둔 코드이거든요.^^'''''''
>>
>>저의 게으름때문에... 헷갈리게 만들어드렸다면 정말 죄송합니다.^^'
>>
>>>여기 강좌 보고 있는데요..
>>>
>>>부트섹터 소스 중에서
>>>
>>>mov ax,0x9000 ; put stack at 0x91000
>>>mov ss,ax
>>>mov sp,0x1000
>>>
>>>sti
>>>MOV AX,0x8000 ;80000번지로 이동...
>>>MOV ES,AX
>>>XOR DI,DI
>>>
>>>초반에 이 부분은 초기화 같은데 뭘하는 건지 잘 모르겠네요..
>>>
>>>그냥 바로 0x7c00의 위치에 수행할 데이터를 놓으면 안되나요?
>>>
>>>이 부분이 뭘하는 부분인지 왜 0x91000에 스택을 위치시키는지...
>>>
>>>그구 0x80000은 왜 ES에 넣는건지 단지 초기화 뿐인건지.. 그러면 왜 그렇게 되는건지 알려주세요..
>>>
>>>부탁드립니다.
>>>
>>>좋은 강좌 재미나게 읽고 있는데 아직 많은 것이 부족해서.. 보는게 힘드네요...
>>>
>>>
>>
>>
>
>