assemblymousepixelemu8086

Draw on screen using mouse in assembly (emu8086)


The code below lets you draw on screen with mouse, and works perfect. My problem is why does CX need to be divided by 2? Why is it doubled in the first place?

code segment
main proc far

mov al, 12h
mov ah, 0   ; set graphics video mode.
int 10h   

mov ax, 1   ;shows mouse cursor
int 33h

Next:
mov ax, 3   ;get cursor positon in cx,dx
int 33h

call putpix ;call procedure 
jmp Next

mov ah,4ch
int 21h
main endp

;procedure to print
putpix proc   
mov al, 7   ;color of pixel  
mov ah, 0ch    
shr cx,1    ; cx will get double so we divide it by two
int 10h     ; set pixel.
ret
putpix endp
code ends 

Solution

  • Next screenshot of emu8086 and your code will help us to understand what is going on:

    enter image description here