[질문] ASM 교재 선택

김영재의 이미지

인텔 CPU의 어셈블리 언어를 배워보고자 합니다.

Assembly Language for Intel-Based Computers(By Kip Irvine, 5판이 나왔더군요)를 꽤 많이 보는 듯 한데 내용이 어떤지요?
제가 집에 있는 책을 뒤적여보니 The 80x86 IBM PC And Compatible Computers(Volumes I & II) Assembly Language, Design, And
Interfacing(By Muhammad Ali Mazidi)이란 책이 있더군요. 꺼내서보니 앞부분에 어셈블리 설명이 나와있고 상당부분이 PC내부 구조를 설명하는 내용이더군요. 뒷 부분을 어셈블리의 응용이라 본다면 Irvine책보다 실제적인 면을 많이 구경할 수 있을 듯은 한데...

책이 옛날거라, 거의 8, 16비트 중심으로 되어있고(레지스터부터도요) 32비트는 한챕터 정도로만 들어있는데 그치더군요. 그래서 지금 읽기에는 너무 지난 내용이 아닌지 하는 생각이 들더군요. 그에 반해 Irvine책은 32비트 위주고 기술되어 있구요. 여러분 의견은 어떠신지요?

제가 어셈을 공부하려는 이유는 일단 컴퓨터 구조를 이해하는데 있구요, 나중에 운영체제를 공부하기 위한 기반을 닦기 위함인데요.
어떻게(어떤 책으로) 시작하면 될지 조언 부탁드립니다.

Fe.head의 이미지

제 의견으로는 8, 16비트 어셈블러를 배워두는것이 더 낳을듯 합니다.

어셈블리를 보기 전에 컴퓨터 구조, 디지털논리회로 등을 먼저보고
여견이 되신다면 운영체제도 먼저 읽어 보신다음 어셈블리 책을 보라고 권하고 싶습니다.

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

조성현의 이미지

MS-DOS 매크로 어셈블러 - 황희융저

원래 군대 자대배치 받기 전에 후반기 교육장에서 ibm pc assembler 와 같은 제목의 책을 보고 공부했었는데, 그 이후로 구입한 이 책이 더욱 좋더군요.

현재 32bit 체제에서는 조금 더 배워야 될 것들이 있지만, 그래도 16bit 이하는 이 책이 좋을 듯.

;p $ rm -rf ~

thyoo의 이미지

DOS 시절에 Irvine 책 1판을 봤는데 꽤 쓸만한 책이었읍니다.

5판 서평은 여기서 보시지요.
http://www.amazon.com/Assembly-Language-Intel-Based-Computers-5th/dp/0132383101/sr=8-1/qid=1158161304/ref=pd_bbs_1/103-6654514-1648603?ie=UTF8&s=books

Linux나 Windows등 고급 OS에서는 Kernel Mode (Ring 0 Privileged; in, out등) Instruction에 Access가 안됩니다. Driver를 만드셔야 하는데요.

Windows 환경이라면
- assembler
http://www.masm32.com/
- forum
http://www.masm32.com/board/index.php
- masm32용 DDK(Driver Development Kit)
http://www.freewebs.com/four-f/
에 예제가 많아서 유용합니다.

제 생각에는 16-bit real mode하고 32-bit protected mode는
addressing mode가 다른데 첨에는 그다지 신경 안쓰셔도 될 것 같군요.
___________________________________
Less is More (Robert Browning)

___________________________________
Less is More (Robert Browning)

wish의 이미지

저의 제안은 32비트 보호 모드 운영체제를 배우기 위한 어셈 공부라면, http://savannah.nongnu.org/projects/pgubook/ Programming from the Ground Up Book 을 처음 보시고, IA-32 Intel Architecture Software Developers' Manual(Intel 사이트 가시면 아마 보실 수 있을 것입니다) 를 참고해서 하시면 될 듯 합니다. 전자의 책은 어셈블러의 기법이나 문법 보다는 어셈블러로 프로그래밍 하는 법을 튜토리얼 형식으로 쓴 글인데, 일반 책과는 다르게 linux 커널 내에서 사용하는 gas 로 기술 했기 때문에, 커널 분석에 직접적인 도움도 되고, 무엇보다 어셈으로 라이브러리 호출 하는 법과, 시스템 콜을 부르는 법 등을 다루기 때문에, 책에서 글로만 읽은 것이 눈으로 보여서, 컴퓨터 아키텍쳐를 이해하는데 꽤 도움이 됩니다. 무엇보다 책이 정말 잘 넘어갑니다. 강추하겠습니다 ^^

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.