assembly 如何在程序集中获取鼠标位置

prdp8dxp  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(67)

这里是我的代码的一部分,这应该在鼠标位置上绘制一个像素:

mov ax,3h       ;set interruption to getting the mouse pos
int 33h         ;after the interruption: cx=x, dx=y

mov ah, 0Ch     ;draw a pixel
;the x and y should already be in the registers cx and dx after the last interruption
mov al, 5       ;set color (to some kind of purple)
int 10h         ;the drawing should happen here, but for some reason nothing is drawn

字符串
顺便说一句,我使用视频模式int 10 h/ah= 0 h/al= 12 h,其具有640 x480分辨率和16种颜色。

jgzswidk

jgzswidk1#

你得到鼠标光标位置正确,它应该工作。我写了一个示例程序

plsHelp Program Format=COM
    MOV AX,0012h
    INT 10h      ; Set graphic videomode 640*480.
Repeat:
    MOV AX,0003h
    INT 33h      ; Get mouse position and button status.
    TEST BX,2    ; Mouse right-button pressed?
    JNZ End
    MOV AX,0C05h
    INT 10h      ; Draw a pixel at CX*DX.
    JMP Repeat
End:RET          ; Terminate program.
   EndProgram

字符串
当由euroasm.exe plsHelp.asm组装并在我的Windows上的DosBox中作为plsHelp.com运行时,移动鼠标会像预期的那样留下一条洋红色的轨道。也许你的环境有问题。

相关问题