어셈블리를 배우고 있으며 32 비트 Linux에서 16 비트 읽기 모드 코드를 실행할 수 없다는 것을 알게되었습니다. 32 비트 Linux에서 16 비트 코드를 실행하려면 적절한 환경을 설정해야합니다.DOSBOX에서 printf 함수를 사용하는 방법
그래서 우분투에 DOSBOX를 설치했고 16 비트 코드를 실행할 수 있었지만 지금은 또 다른 문제가 있습니다. DOSBOX의 printf
기능을 사용하고 싶습니다. 아래는 코드입니다
section .data
x dw "value is =%d"
section .text
extern printf
global main
main:
push x
call printf
add sp,2
ret
하지만이 코드를 어셈블 할 때, 나는 아래의 오류가 점점 오전 : 이제
binary output format does not support external references
난에 printf
전화를 할 수있는 적절한 방법이 무엇인지 알고 싶습니다 DOSBOX 환경.
'printf'는 DOS에없는'libc'의 일부입니다. 자신 만의'printf' 구현체를 작성하거나 DOS와 어셈블러에서 작동하는 것을 찾아야합니다. – Michael
그리고'printf'가 사용 가능하다면, 포맷 스트링을 넘겨 줘야하므로 충분한 매개 변수를 전달하지 못하고 포맷 스트링에 필요한 정수 값은 전달하지 못합니다. – lurker
DOS 용 C 컴파일러 (또는 적어도 stdlib)가 필요하다고 생각됩니다. 일부는 [FreeDOS devel page] (http://www.freedos.org/software/?cat=devel)에서 링크됩니다. –