[완료] 어셈블리 간단한 질문입니다 (MASM)

hwanikani의 이미지

.data
num DWORD 12345678h

.code
mov eax, 77777777h
mov esi, OFFSET num

mov num, 77777777h ; 됨 (mov mem, imm)
mov [esi], eax ; 됨 (mov mem, reg)
mov [esi], 77777777h ; 에러: invalid instruction operands (mov mem, imm)

-------------------------------------------------------------------

위 코드에서
mov num, 77777777h하고 mov [esi], eax는 되는데
mov [esi], 77777777h는 안되는 이유를 모르겠습니다.

책에서는
mov instruction이 가질수 있는 operands로
mov reg, reg
mov mem, reg
mov reg, mem
mov mem, imm
mov reg, imm
라고 적어 놨는데

이상하게 destination으로 indirect operand가 올경우(mem)
source로 register가 올경우는 되는데 (mov mem, reg)
immediate value가 올경우에는 (mov mem, imm) 에러가 뜹니다.

혹시 이유 아시는분 계신가요?

ifree의 이미지

mov dword ptr [esi], 77777777h

imm 만 보고 dword 인지를 알 수 없기 때문에 타입을 명시해 주어야 해요.

hwanikani의 이미지

앞으로는 그냥 indirect operand에는 타입을 전부 명시해 두는게 편할것 같네요.

답변 감사드립니다! (왜 에러에 instruction operand must have size라고 안뜨는지 - _-ㅋ)

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.