2014-10-17 5 views
0
section .data 

map db 1 

section .text 

start: 
cmp byte [map], 1 
je exit 
jmp start 

exit: 
ret 

운이 좋지 않은 데이터가 있습니다. 제가 말하고자하는 것은 바이너리 DOS COM 형식으로 어셈블하는 것입니다. 시작하면 그냥 멈춰 버립니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?데이터가 전혀 없습니다. NASM

+0

우선, 'ret'할 것이 없을 때'ret'를 발행합니다. –

+0

@DanielKamilKozar, 메모리가 올바르게 작동하면 DOS는 스택의 끝에 프로그램의 끝에있는 ret를 사용하여 무방비 상태로 되돌릴 수 있도록 준비합니다. 그러나 필자는이 [Peter Norton의 IBM PC 프로그래머 가이드]를 위해 필자의 참고 자료를 가지고 있지 않습니다. –

답변

2

DOS com 파일은 주소 0x100에로드 될 것으로 예상됩니다. 코드 시작 부분에 org 0x100 줄을 포함해야합니다.

+0

절대 알지 못했습니다! 감사! –

+0

@ Gip-Gip, PSP ("Program Segment Prefix")를 찾아서 이것이 왜 그런지 알아보십시오. 짧은 버전은 프로그램이 필요로하는 많은 정보가 들어있는 세그먼트의 첫 번째 0xff 바이트를 DOS가 채우는 것입니다. –

관련 문제