내 교과서에 사용 된 어셈블리 구문이 너무 많은 문제가 발생하는 이유는 윈도우 8 .MODEL SMALL
.586
.STACK 100h
.DATA
Message DB 'Hello, my name blank', 13, 10, '$'
.CODE
Hello PROC
mov ax, @data
m
Windows XP SP3 시스템에 masm32를 설치했습니다. 여기에서 MASM32를 다운로드 : http://www.masm32.com/masmdl.htm 가 설치되어 있어야합니다. C : \ masm32 \ bin 경로를 PATH 환경 변수에 추가했습니다. 이제 예제 프로그램을 어셈블 링하고 링크하려고합니다. 오브젝트 파일을 작성하지만 실행 파일은 작
방금 MASM을 배우기 시작했고 간단한 루프를 실행해야하는 샘플 코드를 작성했습니다. mov eax, 1
x: add eax,1
print str$(eax),13,10
cmp eax, 4
jne x
inkey
exit
그래서 저는이 작은 프로그램이 2,3,4를 인쇄 할 것으로 예상했습니다. 그러나 내가
사용자 입력 문자열을 사용하고 각 문자의 ASCII 값에서 4를 뺀 다음 새 문자를 출력하는 작은 프로그램을 MASM에 작성하려고합니다. StdOut이 호출 될 때를 제외하고는 대부분 성공적입니다. 현재 수정 된 문자뿐만 아니라 다음 문자도 인쇄합니다. 나는 몇 시간 동안 무슨 일이 일어나고 있는지 알아 내려고했지만 아직 단서가 없습니다. 여기 .486
일부 연구를 수행했지만 터미널에서 F1-F12 키를 눌러 어셈블리 프로그램을 종료하는 방법에 대한 유효한 대답을 찾을 수 없습니다. 는 그래서 같은 간단한 프로그램이 있습니다 .data
prompt1 BYTE "Please Input a sentence.",0Dh,0Ah,0
.code
Main Proc
mov edx,OFFSET prompt1
저는 masm에서 꽤 새로워서 포켓 계산기를 만들어야합니다. +, -, /, *에 대한 매크로를 작성했으며 EBX 레지스터에 내 표현식을 적용하고 있습니다. 예를 들면 : "1 + 2 ="를 입력하면 EBX가 해당 문자열을 모두 저장하고 저장합니다. 저는 모든 문자를 가져 와서 CL에 저장하려고합니다. 그래서 그 후에 매크로를 호출 할 수 있습니다. 나는
단순히 배열의 요소를 인쇄하려고합니다. 출력에서 루프가 배열의 할당 된 메모리를 초과한다는 것을 알 수 있습니다. .386 ; 386 Processor Instruction Set
.model flat,stdcall
option casemap:none
include \masm32\include\masm32rt.inc
include \masm32\