어셈 컴파일 어떻게 하나요??

등짝을보자의 이미지

이거 참 컴파일하는 방법 조차 모르니..-_-;
아무튼 "어셈블리언어(4/E) : Assembly Language For Intel-Based Computers"
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200403050010

라는 책을 구입했습니다..

이 책 첫번째 예제인 AddSub.asm 이라는 파일을 컴파일 하고 싶은데요
어떻게 하는지 모르겠어요..

컴파일시

C:\Masm615>ml addsub.asm
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000.  All rights reserved.
 
 Assembling: addsub.asm
addsub.asm(6) : fatal error A1000: cannot open file : Irvine32.inc
 
C:\Masm615>

Irvine32.inc 이 파일이 경로지정이 안된거같은데 어떻게 설정하나요?
INC폴더에 있긴있는데 컴파일하면 저렇게 나오네요?

그리고 리눅스에서 Irvine32.inc 라는 파일을 쓸라고 어떻게 해야하나요??

dg의 이미지

제가 기억하기로는 make32.bat하고 make16.bat가 있어서 그걸로 했던거 같은데요..
그리고 리눅스에서 쓰는 어셈블러는 매크로어셈블러랑 좀 달라서 못쓸거 같네요..

Necromancer의 이미지

인클루드파일 못찾는거는 소스가 있는 디렉토리에 인클루드파일을 넣으면 됩니다. 물론 없으면 못합니다.
C처럼 특정경로의 인클루드 파일을 자동으로 찾는 것은 MASM에서는 없는걸로 알고 있습니다.

성공했으면 obj파일이 나옵니다. 이걸 link.exe로 링크 처리하시면 exe파일이 나옵니다.

Written By the Black Knight of Destruction

blueskya의 이미지

ml /c /coff 파일이름.asm
link 파일이름.obj

masm은 위처럼 했던 기억이;;;

ddk2000 버젼이나 ddk98은... 저 에러는 못봐본 거라 도움이 되지를 않겠네요;;

ddk 설치하고 위처럼 컴파일 그냥 됬었는데...;;;

아... link 파일만 버젼 높은 놈으로 패치했던 기억이..

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

익명사용자의 이미지

리눅스에서 MASM에 가장 근접한 문법을 쓰는 어셈블러는 nasm 정도일 겁니다.
그런데... MASM하고 100% 호환성을 보장하지는 않으니 파일을 좀(?) 고쳐야 할 것 같습니다.

Necromancer의 이미지

겉모양은 좀 비슷하게 보일지 몰라도 MASM->NASM 컨버팅시 고칠꺼는 엄청나게 많습니다.
큰 차이점 중 하나를 들자면 MASM은 변수명을 쓰면 해당 변수가 가진 값을 액세스해서 가져오지만
NASM에서는 변수명을 일개 주소값으로만 취급합니다. 따라서 NASM은 변수명을 포인터로 해서 액세스할 필요가 있죠.
또 NASM은 변수형 검사를 하지도 않습니다. 8비트크기 db변수에다 32비트 액세스를 해도 어셈오류 없습니다.

예를 들어 var 라는 32비트 변수 (dd) 값을 EAX레지스터로 읽어들이고자 한다면

MASM에서는

mov eax,var

하면 var이라는 변수가 가진 값을 EAX로 가져오죠.
하지만 NASM이면
mov eax,[var]

입니다. var이라는 변수명은 걍 주소로 바뀌기 때문에 이것을 []안에 넣어서 주소지정해서 가져와야 합니다.
만일 NASM에서 mov eax,var 하면 var이라는 변수의 주소(어셈블시에 결정되죠)를 eax로 넣습니다.

Written By the Black Knight of Destruction

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.