2014-04-20 2 views
0

매개 변수를 사용하여 출력 문자열을 작성했지만 으로 프로그램이 중단되었습니다. 세그먼트 오류 : 11.세그먼트 오류 및 int 10h

global main 
segment .data 
    col db 1 
    row db 24 
    msg db 'Hello' 
    len equ $-msg 
segment .text 
exit: 
    mov eax, 0x1 
    int 0x80 
main: 
    mov ah, 13h 
    mov al, 1 
    xor bh, bh 
    mov cx, 5 
    mov dh, 24 
    mov dl, 20 
    mov bp, msg 
    int 10h 

    call exit 

피씨 : 유닉스 (os x)를 사용합니다.

+0

라인이에 충돌 않은 : 당신은 ANSI를 지원하는 단말기에서 화면의 아무 곳이나 텍스트를 넣어 ANSI 이스케이프 코드를 인쇄 할 수 있어야한다

? –

+1

'int 10h'는 무엇을 기대합니까? – nos

+0

http://en.wikipedia.org/wiki/INT_10H, 특정 위치의 콘솔에서 인쇄 문자열을 원합니다. –

답변

1

INT 10h는 BIOS에서 제공하는 리얼 모드 인터럽트이며 DOS 나 부트 로더와 같은 리얼 모드 운영 체제에서만 사용할 수 있지만 Linux는 사용할 수 없습니다. Linux의 경우 저수준 기능에 액세스하려면 INT 80h를 사용해야합니다. https://en.wikipedia.org/wiki/ANSI_escape_code

+0

감사합니다. 그러나 어떻게 위치 커서를 바꿀 수 있습니까? –

+0

@LeeTwelve 내가 링크 된 기사를 읽으십시오. ANSI 이스케이프 코드를 포함하는 콘솔에 "특수 문자열"을 작성해야합니다. 당신은 그것에 대한 몇 가지 샘플 코드를 찾을 수 있습니다. 여기에있는 예를 참조하십시오 : http://www.tldp.org/LDP/abs/html/colorizing.html –