2017-05-15 3 views
-3

Je viens de commencer à apprendre le langage "assembly".Comment faire les événements de souris DOSBox Assembly

Comment puis-je imprimer "Hello World" chaque fois que je clique avec la souris et que j'imprime "Bad World" à chaque clic-droit sur DOSBox.

+1

DOS ne vient pas avec l'aide de la souris. Vous devrez fournir votre propre pilote. Chacun a une interface de programmation différente, voir sa documentation pour savoir comment faire. Ce n'est pas un bon projet pour quelqu'un qui commence tout juste à apprendre l'assemblage, soit dit en passant. Commencez par sortir quelques valeurs à l'écran, peut-être en lisant une entrée au clavier. –

+0

Il contient trop de détails, j'ai du mal à comprendre, mais merci pour la redirection. @ JoseManuelAbarcaRodríguez. –

+0

Hasan, vous avez seulement besoin de la procédure 'GetMouseState' (http://stackoverflow.com/a/37795357/3298930) –

Répondre

0

Je pense avoir trouvé la solution au problème.

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

nous devons d'abord appeler la souris cursor.Check pour le catalogue http://stanislavs.org/helppc/int_33.html

start: 
    MOV AX,01 
    INT 33h 

http://stanislavs.org/helppc/int_33-5.html Nous n'utiliserons autres bits à l'exception des deux derniers bits, donc nous avons fait le zéro repos avec l'opérateur AND.

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

Nous comparons la valeur pivotée et envoyer la fonction en fonction du résultat

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