Assembly 无法使mov ax、3 int 33h在图形模式下工作
我正在尝试在图形模式(13h)下绘制一个矩形,并检查它是否在任何时候被单击,如果它曾经被单击过,我想转到“rectangleWasClicked:”,这是我的方法,但是它似乎不起作用(在单击绘制的矩形方面) 我甚至尝试了shr cx,1以适应宏可能使用640x200分辨率的事实,但这似乎不起作用。 我还尝试将bx与0(而不是1)进行比较,这样每当鼠标悬停在我指定的区域时,它都会指向标签,但是无论我在整个屏幕中悬停在哪里,它都不会做任何事情。 有什么想法吗 这是drawPlatform宏:Assembly 无法使mov ax、3 int 33h在图形模式下工作,assembly,x86-16,tasm,dosbox,Assembly,X86 16,Tasm,Dosbox,我正在尝试在图形模式(13h)下绘制一个矩形,并检查它是否在任何时候被单击,如果它曾经被单击过,我想转到“rectangleWasClicked:”,这是我的方法,但是它似乎不起作用(在单击绘制的矩形方面) 我甚至尝试了shr cx,1以适应宏可能使用640x200分辨率的事实,但这似乎不起作用。 我还尝试将bx与0(而不是1)进行比较,这样每当鼠标悬停在我指定的区域时,它都会指向标签,但是无论我在整个屏幕中悬停在哪里,它都不会做任何事情。 有什么想法吗 这是drawPlatform宏:
drawPlatform macro x, y, color, height, width ;x, y are the starting position (top left corner)
local whilePlatformBeingDrawn
mov cx,x
mov dx,y
whilePlatformBeingDrawn:
drawPixel_implicit color
inc cx ;the x-coordinate
checkDifference cx, x, width ;Keep adding Pixels till Cx-P_x=widthPlatform
JNG whilePlatformBeingDrawn
mov cx, x
inc dx
checkDifference dx, y, height
JNG whilePlatformBeingDrawn
endm drawPlatform
在我看来,在将它们与鼠标坐标进行比较之前,drawPlatform正在破坏cx
和dx
。如果您在调用drawPlatform之前推送cx推送dx
,然后在调用drawPlatform之后推送dxpop cx
,它应该可以工作。TASM不带涡轮调试器吗?或者,至少如果您有一些打印例程,您可以在代码中的关键位置放置一些屏幕消息,以查看事件流。在我看来,drawPlatform在将它们与鼠标坐标进行比较之前,正在破坏
cx
和dx
。如果您在调用drawPlatform之前推送cx推送dx
,然后在调用drawPlatform之后推送dxpop cx
,它应该可以工作。TASM不带涡轮调试器吗?或者,至少如果您有一些打印例程,您可以在代码中的关键位置放置一些屏幕消息,以查看事件流。它们不应该更好地在宏代码中保留那些
CX
和DX
寄存器吗;所以不是“在调用*drawPlatform之前”。在我看来,mov ax,3 int 33h应该安装在牵引平台之后,以完全避免出现问题。起初我没有注意到这一点,所以我只是加入了上面的快速修复。这很有意义+1他们不应该更好地保存宏代码中的CX
和DX
寄存器吗;所以不是“在调用*drawPlatform之前”。在我看来,mov ax,3 int 33h应该安装在牵引平台之后,以完全避免出现问题。起初我没有注意到这一点,所以我只是加入了上面的快速修复。这很有意义+1.
drawPlatform macro x, y, color, height, width ;x, y are the starting position (top left corner)
local whilePlatformBeingDrawn
mov cx,x
mov dx,y
whilePlatformBeingDrawn:
drawPixel_implicit color
inc cx ;the x-coordinate
checkDifference cx, x, width ;Keep adding Pixels till Cx-P_x=widthPlatform
JNG whilePlatformBeingDrawn
mov cx, x
inc dx
checkDifference dx, y, height
JNG whilePlatformBeingDrawn
endm drawPlatform