2013-05-13 3 views
0

Я делаю графический калькулятор и с помощью мыши выбираю номера. Я использую Windows XPИспользуются все регистры, что мне делать? Язык ассемблера

Я использую INT 33h, для чего требуется AX = 3 (щелкнуть) BX = 1 (проверьте, если щелкнул мышью) CX = горизонтальные координаты, DX = вертикальные координаты.

Я получаю положение мыши с помощью цикла

MOUSEL: 
MOV AX,03H 
INT 33H 
CMP BX,1B 
JNE MOUSEL 

А потом я буду проверять позицию

CHECK1: 
CMP CX,200 
JL MOUSEL 
CMP CX,240 
JG CHECK2 
CMP DX,160 
JL MOUSEL 
CMP DX,200 
JG CHECK4 
MOV AL,1  
MOV [SI],AL 
<<I need a counter here>> 
JE OPERATION 

Я только хочу, чтобы получить три числа, хранить их, а затем выполнять арифметические операции. Я делаю что-то не так?

+0

Мое предложение было бы избежать ассемблере и использовать хороший оптимизирующий компилятор (как GCC 4.8) .... –

+0

Если вы пишете графический калькулятор предназначенный для работы под Windows XP, почему вы кодируете его на 16-битном языке ассемблера DOS? – zwol

+0

Я бы с удовольствием, но это проект для колледжей * крики * – user2363636

ответ

1

Вы можете попробовать использовать Pusha и Попа

MOUSELxxx: 
    pusha 
    MOUSEL: 
    MOV AX,03H 
    INT 33H 
    CMP BX,1B 
    JNE MOUSEL 
    popa 

    CHECK1: 
    CMP CX,200 
    JL MOUSELxxx 

    etc