x86 16 - Pong项目汇编8086



我的乒乓项目有一个问题。我尝试当球击中红色球棒时,它会随机反弹到另一边,但由于某种原因,它无法识别红色。在int = 10h中使用AH = 0Dh。检查的部分在hitcheck进程中。

下面是代码。与我的问题相关。

hitcheck    PROC
;------batt and com check-------
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
SUB CX, 2
MOV AH, 0Dh      
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
ADD CX, 2
MOV AH, 0Dh            
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
SUB DX, 2
MOV AH, 0Dh      
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
ADD DX, 2
MOV AH, 0Dh      
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV AL, 13H ;changes the num of pixels to 640X480 with 16 colors

此处注释与视频模式编号不匹配。模式13h的分辨率为320x200, 256色。

mov base, 0
printleftbase:
printpixel 0, base, 2, 2
INC base
CMP base, 199
JNE printleftbase
mov base, 0
printrightbase:
printpixel 319, base, 2, 2
INC base                   
CMP base, 199
JNE printrightbase

如果前面代码的目的是绘制与屏幕高度相等的垂直线,那么您需要与200而不是199进行比较。

;------batt and com check-------
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
SUB CX, 2
MOV AH, 0Dh      
INT 10H

在你所有的ReadPixel调用中,你错误地把X轴放在DX中,Y轴放在CX中。这是反过来的。你的printpixel宏做得很好。

你也打印像素battcom在第1页,但你检查碰撞在第2页!

问题:您的视频适配器是否支持模式13h下的多个页面?

相关内容

  • 没有找到相关文章

最新更新