2017-05-15 8 views
-3

"어셈블리"언어를 배우기 시작했습니다.DOSBox Assembly 마우스 이벤트를 어떻게 할 수 있습니까?

DOSBox에서 마우스 오른쪽 버튼을 클릭 할 때마다 마우스를 클릭하고 "Bad World"를 인쇄 할 때마다 "Hello World"를 어떻게 인쇄 할 수 있습니까?

+1

DOS 마우스 지원이 제공되지 않는 결과에 따라 회전 값을 비교하고, 기능을 보냅니다. 자신의 드라이버를 제공해야합니다. 각각은 서로 다른 프로그래밍 인터페이스를 가지고 있으므로이를 수행하는 방법에 대한 문서를 참조하십시오. 이것은 단지 어셈블리를 배우기 시작한 사람에게는 좋은 프로젝트가 아닙니다. 몇 가지 값을 화면에 출력하는 것으로 시작하여 어쩌면 키보드 입력을 읽을 수도 있습니다. –

+0

세부 사항이 너무 많아서 이해하기 어려워요.하지만 리디렉션에 감사드립니다. @ JoseManuelAbarcaRodríguez. –

+0

Hasan, 당신은 단지'GetMouseState' 절차 만 필요합니다 (http://stackoverflow.com/a/37795357/3298930) –

답변

0

문제의 해결책을 찾은 것 같습니다.

program SEGMENT 
    ASSUME CS:program,DS:program 
    ORG 100h 

먼저 우리는 카탈로그 http://stanislavs.org/helppc/int_33.html

start: 
    MOV AX,01 
    INT 33h 

http://stanislavs.org/helppc/int_33-5.html 우리는 마지막 두 비트를 제외한 나머지 비트를 사용하지 않습니다에 대한 마우스 cursor.Check을 호출해야합니다, 그래서 우리는 함께 AND 연산자 나머지 제로를했다.

loop: 
    MOV AX,03 
    INT 33h 
    AND BX,3h 

우리는

CMP BX,1 
    JE left 
    CMP BX,2 
    JE right 

    cmp BX,0 
    je endss 
    cmp bx,3 
    je endss 
    right: 
    MOV DX,OFFSET stringright 
    MOV AH,09h 
    INT 21h 


    jmp endss 
    left: 
    MOV DX,OFFSET stringleft 
    MOV AH,09h 
    INT 21h 

    endss: 

    jmp loop 
    stringright DB "Right Clicked $" 
    stringleft DB "Left Clicked $" 

    INT 20h 
    program ENDS 
    END start