<ASM> 레지스터 초기화 질문!
글쓴이: lowid / 작성시간: 목, 2007/08/23 - 12:55오전
레지스터 초기화하는 부분..
에서 모책에서는 다음과 같이 적혀 있고요
1>
mov ax,0
mov ds,ax
...
그래서 전 아!.. ds레지스터가 0이면 제대로 된값 맞군!
2>인터넷에서 부트로더 에 대해서 검색헤 보니까 다음과 같이 초기화 해도
된다고 하더라고요.. 잘 작동합니다..
mov ax,cs
mov ds,cs
3>아! 그럼 ds레지스터가 0일때도 잘 작동했고 ds,cs레지스터가 같을때도 잘 작동하
니깐 둘다 0 일때도 잘 작동 하겠네.. :wink: 하고 다음과 같이 넣어보았죠.
(ds = 0, ds = cs, 그러므로 cs = 0)
mov ax,0
mov cs,ax
mov ds,ax
이렇게 하니까 출력이 또 안되네요 흠..(출력은 따로 되게 만들었습니다..아마도 레지스터 값때문에
출력이 안되는듯하네요)
부팅했을때 바이오스가 알아서 cs,ds,es 같은 레지스터를 초기화 해주는건 알겠는데요
안에 들어 있는 값들이..
1,cs레지스터는 초기화를 못하는건가요? 아니면 적용이 안되는?
왜 따로 ax레지스터 써서 대입이안되는지...(사용중이라서?)
2,ds레지스터에 0을 대입하는게 특별한 의미가 있는건지요 그냥 값을 0 대입한다는 의미 아닌가요?
3,또 2>에서 각각의 세그먼트가 가지는 값이 어떻게 되나요? 0으로 다 같은게 아닌지?
Forums:
>1,cs레지스터는
>1,cs레지스터는 초기화를 못하는건가요? 아니면 적용이 안되는?
왜 따로 ax레지스터 써서 대입이안되는지...(사용중이라서?)
cs는 직접 대입 안됩니다.
far ret같은 편법을 씁니다. (제가 아는한 적어도 real mode에서는)
>2,ds레지스터에 0을 대입하는게 특별한 의미가 있는건지요 그냥 값을 0 대입한다는 의미 아닌가요?
프로그램 나름입니다.
>3,또 2>에서 각각의 세그먼트가 가지는 값이 어떻게 되나요? 0으로 다 같은게 아닌지?
글쎄요. 8086 스펙에 Vcc 인가 후 어떤 값으로 초기화되는지 있는지 모르겠습니다만 BIOS POST코드가 실행되므로 프로그래머에게 있어서 초기치는 의미 없습니다.
댓글 달기