본문 바로가기

kernel_programming

real mode

real mode


리얼 주소 모드 또는 호환 모드라고도 한다
80286 이후의 x86 호환 CPU의 운영 방식
최대 1메가바이트의 메모리가 기록될 수 있다

  • 리얼모드 에서는 메모리의 절대주소를 계산하여 넣어주어야 부팅시 오류를 줄여 줄 수 있다

메모리 절대주소 계산


  • segment register의 주소에 16을 곱한 다음 offset을 더하면 된다
  • 예제
       Segment 0, offset 0x7CF
       0x7CF * 16 = 0x7CF0
       0x7CF0 + 0x0F = 0x7CFF

서로 다른 instruction은 다른 segment register을 사용한다


8086 segment register

CS - Code segment
SS - Stack segment
DS - Data segment
ES - Extra segment

"lodsb" 는 DS:SI register combination 을 사용

Org 0

mov ax, 0x7CF
mov ds, ax        ; data segment
mov si, 0x1F    ; Source Index

lodsb
0x7C0 * 16 = 0x7C00
0x7C00 + 0x1F = 0x7C1F

'kernel_programming' 카테고리의 다른 글

Assembly - 레지스터  (0) 2022.05.16
kernel programming setup in mac os  (0) 2022.05.12