<ASM> 레지스터 초기화 질문!

lowid의 이미지

레지스터 초기화하는 부분..
에서 모책에서는 다음과 같이 적혀 있고요

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으로 다 같은게 아닌지?

익명 사용자의 이미지

>1,cs레지스터는 초기화를 못하는건가요? 아니면 적용이 안되는?
왜 따로 ax레지스터 써서 대입이안되는지...(사용중이라서?)
cs는 직접 대입 안됩니다.
far ret같은 편법을 씁니다. (제가 아는한 적어도 real mode에서는)

>2,ds레지스터에 0을 대입하는게 특별한 의미가 있는건지요 그냥 값을 0 대입한다는 의미 아닌가요?
프로그램 나름입니다.

>3,또 2>에서 각각의 세그먼트가 가지는 값이 어떻게 되나요? 0으로 다 같은게 아닌지?
글쎄요. 8086 스펙에 Vcc 인가 후 어떤 값으로 초기화되는지 있는지 모르겠습니다만 BIOS POST코드가 실행되므로 프로그래머에게 있어서 초기치는 의미 없습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.