어셈블러로는 프리웨어로 유명한 nasm 어셈블러를 가장 많이 사용한다고 한다.
대중적으로 인기가 있는 nasm 어셈블러는 공개 소스로 많은 유저들이 운영체제를 만들때 사용을 한다고 한다. mintOS라는 완성도 높은 OS도 한국사람이 만든 OS인데 정말 대단한것 같아서 소스를 받아서 분석을 해보니 nasm으로 만들어져 있었다.
http://mint64os.pe.kr/ 사이트로 가면 mintOS에 대한 정보를 볼수 있으니 여러분도 가서 함 훌터 보기 바란다. 분석은 조금 무리더군요 ㅋㅋ 아직 배운게 없어서 그런지
아 너무 서론이 길었네요. 그리고 masm 어셈블러는 마이크로 소프트웨어서 제공하는 어셈블러 인데 상용화 버전 밖에 없어서 어둠의 경로를 통해서 구해야 한다고 하더군요 오늘 볼 nask 어셈블러는 나스크라는 사람이 만든 어셈블러 인데 역시 프리웨어고 nasm 보다는 안정적이고 최적화 능력을 높인 어셈블러라고 하네요 ㅎㅎ 뭐 책에서 이것으로 하는 방법이 나왔으니 다른건 더 찾아 보고 싶지만 이리저리 찾다보면 또 하나 마져 이해를 못할까봐 일단 책에서 나온것 부터 차근차근 하기로 작심했죠 ㅎㅎ
그럼 오늘 제가 공부한 명령어를 한번 봐 볼까요?
준비 됐나요...

DB 0x55, 0xaa
.
.
DB 0xf0, 0xff ...

뭐 이런식으로 사용을 하는데요.
그럼 DB가 대체 뭐길래 저렇게 사용했을까 하는 호기심이 일단 생기네요.
DB 명령어의 정의를 내리자면...
DB란? 데이터베이스 아닙니다... DB명령은 Data Byte의 약어로서, 파일의 내용을 1바이트만 직접 쓰는 명령어 입니다. 또한 이 명령은 어셈블러 세계에서 있어서 최종 병기로, DB 명령만 있으면 어떤 데이터도(결국 어떤 프로그램도) 기술할 수 있습니다. 그런 이유에서 어셈블러로 만들 수 없는 파일은 없습니다. 예를 들어 텍스트 파일도, 그림 파일도, 하려고 하면 뭐든지 만들 수 있습니다. 다른 언어(예를 들어 C언어)로는 이런 만능성(?)은 전혀 기대할 수 없습니다.

이런 내용들이 책에 나왔군요. 정말 흥미로운 것은 일반적인 우리가 사용하는 고급언어로는 할수 없는걸 만들 수 있다는게 마음에 드네요.
오늘은 DB 내용만 설명해도 너무 지루하고 길거 같아서 계속 DB만 설명하겠습니다.

구체적으로 DB는 
문자열을 쓸 수 있습니다. 문자열을 쓰면 문자열을 구성하는 각각의 문자의 문자 코드를 조사하여 그것을 1바이트씩 나열해 줍니다. 이것이 참 편리한 것은, 예를 들어 출력하는 메시지를 변경하고 싶을 때에 문자 코드표를 일일이 찾아보지 않아도 된다는 것입니다.

휴 이제야 설명이 끝났군요. 책은 역시 지루하고 어렵네요.



'운영체제(OS)' 카테고리의 다른 글

makefile 설정  (0) 2009.08.27
OS 구조와 원리  (0) 2009.08.26

1. make.bat 설정
..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

2. Makefile

# 디폴트 동작

default :
 ../z_tools/make.exe img

# 파일 생성 규칙

ipl.bin : ipl.nas Makefile
 ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst

helloos.img : ipl.bin Makefile
 ../z_tools/edimg.exe   imgin:../z_tools/fdimg0at.tek \
  wbinimg src:ipl.bin len:512 from:0 to:0   imgout:helloos.img

# 커맨드

asm :
 ../z_tools/make.exe -r ipl.bin

img :
 ../z_tools/make.exe -r helloos.img

run :
 ../z_tools/make.exe img
 copy helloos.img ..\z_tools\qemu\fdimage0.bin
 ../z_tools/make.exe -C ../z_tools/qemu

install :
 ../z_tools/make.exe img
 ../z_tools/imgtol.com w a: helloos.img

clean :
 -del ipl.bin
 -del ipl.lst

src_only :
 ../z_tools/make.exe clean
 -del helloos.img

보시면 알겠지만 배치 파일로 링크가 되어 있어서 쉽게 접근을 여러 명령어를 종합해서 사용할 수 있음을 보여줍니다. 일종에 매크로 같은 거군요.

..>make run 를 쳐 보았습니다.


위와 같이 가상으로 Hello World 가 찍혔네요.
이제 시작이네요.
간단하게 어셈블리 언어를 보자면 아래와 같습니다.
; hello-os
; TAB=4

  ORG  0x7c00   ; 이 프로그램이 어디에 read되는가

; 이하는 표준적인 FAT12 포맷 플로피 디스크를 위한 기술

  JMP  entry
  DB  0x90
  DB  "HELLOIPL"  ; boot sector이름을 자유롭게 써도 좋다(8바이트)
  DW  512   ; 1섹터 크기(512로 해야 함)
  DB  1   ; 클러스터 크기(1섹터로 해야 함)
  DW  1   ; FAT가 어디에서 시작될까(보통은 1섹터째부터)
  DB  2   ; FAT 개수(2로 해야 함)
  DW  224   ; 루트 디렉토리 영역의 크기(보통은 224엔트리로 한다)
  DW  2880   ; 드라이브 크기(2880섹터로 해야 함)
  DB  0xf0   ; 미디어 타입(0xf0로 해야 함)
  DW  9   ; FAT영역의 길이(9섹터로 해야 함)
  DW  18   ; 1트럭에 몇 개의 섹터가 있을까(18로 해야 함)
  DW  2   ; 헤드 수(2로 해야 함)
  DD  0   ; 파티션을 사용하지 않기 때문에 여기는 반드시 0
  DD  2880   ; 드라이브 크기를 한번 더 write
  DB  0,0,0x29  ; 잘 모르지만 이 값으로 해 두면 좋은 것 같다
  DD  0xffffffff  ; 아마, 볼륨 시리얼 번호
  DB  "HELLO-OS   "  ; 디스크 이름(11바이트)
  DB  "FAT12   "  ; 포맷 이름(8바이트)
  RESB 18    ; 우선 18바이트를 비어 둔다

; 프로그램 본체

entry:
  MOV  AX, 0   ; 레지스터 초기화
  MOV  SS,AX
  MOV  SP,0x7c00
  MOV  DS,AX
  MOV  ES,AX

  MOV  SI,msg
putloop:
  MOV  AL,[SI]
  ADD  SI, 1   ; SI에 1을 더한다
  CMP  AL,0
  JE  fin
  MOV  AH, 0x0e  ; 한 글자 표시 Function
  MOV  BX, 15   ; 칼라 코드
  INT  0x10   ; 비디오 BIOS 호출
  JMP  putloop
fin:
  HLT     ; 무엇인가 있을 때까지 CPU를 정지시킨다
  JMP  fin   ; Endless Loop

msg:
  DB  0x0a, 0x0a  ; 개행을 2개
  DB  "hello, world"
  DB  0x0a   ; 개행
  DB  0

  RESB 0x7dfe-$  ; 0x7dfe까지를 0x00로 채우는 명령

  DB  0x55, 0xaa

어셈블리가 생소한 분들은 어셈블리 공부를 쪼미 하시면 금방 이해 하실꺼 같군요

간단하게

mov ah, 0x0e 라는 뜻은
C로 보자면
ah = 0x0e 를 대입하라는 말과 같습니다.
; 라는 뜻은
C로 치면 // 와 같은 주석 처리 입니다.

이상 실습을 맞칩니다.
아따 어려운거~

'운영체제(OS)' 카테고리의 다른 글

nask 어셈블러에 기본명령어를 알아보자.  (0) 2009.08.28
OS 구조와 원리  (0) 2009.08.26
우연히 공부를 하던중 OS에 관심이 생겼다.
이리저리 뒤져보다 OS 구조와 원리 라는 책이 있다는 사실을 접했다.
그리곤 불야불야 도서관으로 뛰어 가서 아래 책을 빌려 버렸다.



역시 생각대로 엄청 이해가 되지 않았고, 흥미롭고, 재밌고, OS에 원리는 대단했다.
원래 난 도서관에서 책을 빌릴때 CD를 거이 귀찮아서 같이 빌리진 않는다. 하지만
이책에 CD내용은 정말 보고 싶었다. 그래서 같이 빌렸다. 사실 번역의 번역자의 주관적 입장에서 자주 서술하기 때문에 난 별로 좋아하질 않는다. 하지만 내가 일어를 할줄 모르니 원본을 살수 있어도 보질 못하니 원~ 그냥 체념하고 번역본이라도 열심히 보기로 마음 먹었다. 우선 첫장에서는 집필자에 대단한 겸손이라고 할까? 컴퓨터가 전공인 나 자신도 아니 컴퓨터를 전공하는 대부분에 학생들은 거의 뭐 알려고 생각만 하지 도전할려는 생각은 전혀 없는 분야 OS분야를 비전공자가 그것도 그냥 열심히 따라 만들도 보니 전문가가 되었다고 한다. 정말 대단한 사람이고 한편으로는 재수 없다 어떻게 꼭 나 머리 좋아서 이렇게 잘한다 이소리 같다. 하지만 책 한장한장을 열고 읽어보고 또 예제도 많이 있어 따라하면서 하다보면 시간 가는줄 모르고 집중하게 된다.
아 서론이 너무 길었나 구조와 원리에 대해서 이건 책을 설명하는것 같다. 그래도 아직 이해한 부분이 없으니 서론만 걸쭉하게 말해두고 시간날때 정리해서 포스트 해야 겠다는 생각 뿐이다. 아직 다 보질 못했다. 허나 금방금방 읽혀 가는 내 자신이 무서울 정도로 흥미를 가지고 있다는 것은 사실인거 같다. 당신도 늦지 않았다. 조금이나마 흥미가 있다면 지금 당장 서점이나 도서관에 가서 책을 빌리거나 혹은 사서 보기 바란다. 정말 후회없는 선택이 될것이다...
아 새벽인데 얼릉 본인도 좀만 더 읽고 내일 필독한다는 생각으로 일찍 자야 겠다.

'운영체제(OS)' 카테고리의 다른 글

nask 어셈블러에 기본명령어를 알아보자.  (0) 2009.08.28
makefile 설정  (0) 2009.08.27


프리웨어라 더욱 메리트 있어서 좋다.
아직 수정할것이 조금 있는데도 쓸만하다.
공짜니 말이다 ㅋㅋ
 관련사이트 : http://cafe.naver.com/hipervv

'기타 > 유틸' 카테고리의 다른 글

한글2010을 써보다  (0) 2010.07.28
문서 편집기 두번째 울트라 에디트 10.10 한글판  (0) 2009.08.25
보편화된 문서 편집도구 EditPlus v3.00 입니다.  (0) 2009.08.25
fport 사용법  (0) 2009.08.25
폴더의 암호걸기.  (0) 2009.08.24

역시 보편적인 문서 편집기 울트라 에디트 입니다.
키젠 못구하시면 이멜 주세용~
그럼 잘쓰세요.


p.s 키젠을 원하시면 쪽지나 이멜 주세용 ㅋ

보안은 입이 닳도록 말해록 말해도 정말 중요합니다.
오늘 시간에 다룰 것은 자신의 pc에 포트가 열려 있는지 확인할수 있는
툴을 설명할까 합니다.
자신의 port에 대한 정보를 얻기 위해서는 fport란 툴을 받아서 사용해야 합니다.

일단 위에 파일을 다운받아서

c:\fport 란 방으로 옴기시기 바랍니다.

시작 - 실행 - cmd

콘솔창을 띄웁니다. ㅎㅎ

콘솔창에서 c:\cd \

적어 주면 c:\가 나오는데

여기서 아까 만들어 둔 fport 방으로 들어가야 합니다.

방법은 c:\cd fport 를 입력해 줍니다.

그럼 fport 방으로 이동하게 되는데

거기서 fport를 입력하면 아래와 같은 결과가 나오게 됩니다.


위 그림은 제 컴퓨터 화면인데요. 가우스 효과가 들어간 부분이

port와 protocol에 대한 정보를 볼수 있습니다.

위와 같이 검색을 하여 수상한 port가 있을경우 강제로 끊으셔야 겠습니다.

이상 fport에 대한 포스트 였습니다.

모두 해킹 당하지 않도록 사전에 예방 합시다.


폴더를 보호하고 싶으신 분은 설치후 사용하시기 바랍니다.
키젠이 필요하신분은 쪽니나 이멜을 주세요.

+ Recent posts