[질문] external parameter가 입력되는 시기~??

조용락 2008.11.26 08:53 조회 수 : 5235 추천:1


LILO 부트로더 분석을 시작한지도 벌써 두달이 가까워져 가고 있습니다만, 아직까지 풀리지 않은 궁금한 점이 있어 올립니다.

처음 LILO소스가 시작되고 나서 dx 레지스터에 아무 값도 쓰지 않았지만 dx에 있는 값에 따라 분기를 뛰는 부분이 있습니다. iamroot에서 기존에 분석하셨던 분들의 이야기 및 인터넷 상의 이야기를 들어보면 dx에는 external parameter값이 세팅되어있는지를 알수있게 하는 매직 넘버값(0xFE)이 들어간다고 합니다.

그 값은 언제 입력되는 걸까요~?

"LILO 소스에 보시면 처음부분에 인터럽트 금지시켰다가 해제하고 PUSH DX, PUSH BX, PUSH ES, PUSH SI하는 부분이 있습니다. 이 두 동작 사이에 external parameter가 들어옵니다"
라고 3기분들 중 한 분께서 적어 두신 글이 있었습니다.

특정 부트로더에 종속적인 내용이 아닐거라는 생각을 가지고 다음과 같은 코드를 사용해 dx값을 화면에 출력하는 간단한 코드를 만들어 보았습니다. (만들면서 배우는 os구조와 원리 책 예제 응용)

그래픽 버퍼( 0xB800 ~ )에 아스키값을 쓰면 바로 화면에 나오는 그러한 코드입니다.
dx값을 부팅하자마자 거의 바로 화면에 출력을 하는 코드이구요.. 0x0000 이 찍힙니다.
기존 멤버분께서 적어두신 글을 토대로 인터럽트를 금지시켰다가 해제하고 push하는 코드를 넣어보았으나
고대하던 0xfe 라는 값은 찍히지 않았습니다...

first.S 소스코드와도 초반 dx값이 쓰이기까지는 별 차이가 없다고 생각하는데...뭐가 부족한 걸까요?
[org 0]

[bits 16]

        cli

        jmp 0x07c0:start

start:

        //mov dx, 0x1234

        mov ax, cs

        mov ds, ax

        sti

        push dx

        mov ax, 0xB800

        mov es, ax

        mov di, 0

        mov ax, word [msgBack]

        mov cx, 0x001f



paint:

        mov word [es:di], ax

        add di, 2

        dec cx

        jnz paint



        



        mov ax, dx

        and ax, 0x0F

        add ax, 0x30

        mov edi, 0

        mov byte [es:edi], al

        inc edi

        

        mov byte [es:edi], 0x06

        inc edi

        

        mov ax, dx

        shr ax, 4

        and ax, 0x0F

        add ax, 0x30

        mov byte [es:edi], al

        inc edi

        mov byte [es:edi], 0x06

        inc edi



        mov ax, dx

        shr ax, 8

        and ax, 0x0F

        add ax, 0x30

        mov byte [es:edi], al

        inc edi

        mov byte [es:edi], 0x06

        inc edi



        mov ax, dx

        shr ax, 12

        and ax, 0x0F

        add ax, 0x30

        mov byte [es:edi], al

        inc edi

        mov byte [es:edi], 0x06

        inc edi

        



        

        jmp $



msgBack db '.', 0x67







times 510-($-$$) db 0

dw 0xAA55
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22257
58 전역 변수 참조 문제 김현우 2008.12.28 9110
57 리눅스 커널에 ipv6모듈 올리기 [2] 송선희 2008.12.23 10188
56 커널 프로파일링 [6] 송선희 2008.12.19 11257
55 프로세스 우선순위 [7] 송선희 2008.12.18 8181
54 개발키트 질문입니다. [2] 김현우 2008.12.10 7199
53 blob 부트로더 질문입니다. [1] 김현우 2008.12.06 7062
52 부트로더 사용 질문입니다. [2] 김현우 2008.12.06 7057
51 고민을 풀어주세요. [2] 김현우 2008.12.05 6915
50 다운로드가 안되요. [3] 김현우 2008.12.04 6340
49 tty, tty0, console, vc 는 각각 뭐하는 디바이스인지? [3] 이창만 2008.12.04 18557
48 TCP-IP 스택구현과 관련하여 [1] 김현우 2008.11.28 7946
47 VoIP 관련 질문입니다. [3] 김현우 2008.11.27 6015
46 TCP/IP 구현과 관련하여 다시 질문 드립니다. [2] 김현우 2008.11.27 9425
45 임베디드에 TCP/IP 올리기 [4] michael 2008.11.26 7181
44 __attribute__((__cold__))에 대하여.. [12] 이상철 2008.11.26 7142
» [질문] external parameter가 입력되는 시기~?? [3] 조용락 2008.11.26 5235
42 io_p2v, io_v2p 매크로 설명 부탁드립니다. [4] 이창만 2008.11.25 7426
41 [질문] 스터디 참가문의 [1] 송선희 2008.11.20 5077
40 kmalloc() 은 어느 시점 부터 사용이 가능한가요? [2] 이창만 2008.11.19 7292
39 trap_init() 설명 부탁드려요~ [3] 이창만 2008.11.18 8433
XE Login