2013-12-19 1 views
1

내가이 명령을 구문 분석하지 않습니다. 웹상의 다른 예제에 따라 .bytedb으로 바꿔 시도했습니다. 그런 다음 출력은 no such instruction: 'db 72ello, World!440x0A' (아포스트로피 대신 숫자에 주목)입니다. 나에게 그것은 '의 구문 분석에 문제가있는 것처럼 보입니다.인라인 어셈블리가 제대로

어떻게해야합니까?

답변

2
  1. .byte은 0xFA 또는 'F'와 같은 단일 바이트에서만 작동합니다.
  2. db은 인텔 구문이며 인라인 어셈블리는 GNU 구문을 사용합니다.

  3. 위에서 언급 한 것처럼 .byte은 1 바이트에서만 작동합니다. 문자열을 사용하려면 .ascii 또는 .asciz을 사용하십시오. 전자는 바이트의 단순한 배열이고 후자는 null로 끝납니다.

즉. asm("message: .asciz \"Hello, World!\n\"");

+0

감사합니다. 너 내가 이런 종류의 물건에 대해 읽을 수있는 곳이 있니? –

+0

일반적인 안내서는 GNU 매뉴얼 (man as?) 또는 인라인 어셈블리의 osdev wiki 페이지를 방문하십시오. – zhiayang

관련 문제