내 교과서에 사용 된 어셈블리 구문이 너무 많은 문제가 발생하는 이유는 윈도우 8이해 조립 구문 문제 2013
.MODEL SMALL
.586
.STACK 100h
.DATA
Message DB 'Hello, my name blank', 13, 10, '$'
.CODE
Hello PROC
mov ax, @data
mov ds, ax
mov dx, OFFSET Message
mov ah, 9h
int 21h
mov al, 0
mov ah, 4ch
int 21h
Hello ENDP
END Hello
를 사용할 때 너무 많은 시행 착오 후, 난 여전히 몇 가지 문제 이해하기 처음에는 명령 프롬프트와 올바른 링커를 사용하여 masm32로 코드를 실행 해 보았습니다. 그런 다음 Visual Studio 2013을 사용해 보았습니다. 심지어 Visual Studio 내에서 masm32를 사용합니다. 매번 비슷한 문제가 발생합니다. 어셈블러에는 @data 줄에 문제가 있으며 Hello에 대한 밑줄이 없습니다. 후자를 수정하면 불일치 한 블록에만 문제가 발생했습니다.
MS-DOS 가상 환경을 사용하여 해결 방법을 찾았으며 .586 명령을 제거한 후에 코드가 올바르게 작동했습니다.
주요 문제가 x64 OS 환경에서이 코드를 실행하려고했으나 여전히 언어를 배우는 것으로 보았 기 때문에 초기에 실행할 수없는 이유에 대한 다른 의견을 듣고 싶습니다.
우리가 사용하는 책은 IBM PC 제품군 3 판의 Jones, 어셈블리 언어입니다.
코드는 64 비트 아키텍처에서 더 이상 기본적으로 지원되지 않습니다. 이를 위해서는 DOS 에뮬레이터가 필요합니다. – Devolus
정확하게이 코드를 16 비트 대 32 비트로 만드는 것은 무엇입니까? 새로운 아키텍처에서 특정 명령어를 사용할 수 없게 만드는 요인은 무엇입니까? 솔직히 어셈블리를 배우기 시작 했으므로 사소한 질문처럼 보일지 모르겠지만 구문 사용법을 이해하는 데 정말 매료됩니다. – Los
당신이 알고 있어야하는 코드를 작성했다면. 어쨌든'int 21h '를 사용하는 것은 16 비트의 DOS 프로그램을 작성하고 있다는 것을 의미합니다. – Devolus