Pong项目在8086组装

时间:2015-05-27 15:09:52

标签: assembly x86-16 pong

我的乒乓项目有问题。我尝试当球击中红色球棒时它将随机弹回到另一侧,但由于某种原因它不能识别红色。我在int = 10h使用AH = 0Dh。检查的部分在 hitcheck proc中。

这是代码(我知道它很长,也许不好,但我是装配新手):

l.call(this, 'a', 'b', 'c');    // Calls `l` with `this` set to `a` and args 'a', 'b', and 'c'
l.apply(this, ['a', 'b', 'c']); // Calls `l` with `this` set to `a` and args 'a', 'b', and 'c' -- note they're specified in an array

非常感谢你的帮助! :)

2 个答案:

答案 0 :(得分:2)

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 宏没问题。

您还可以在第1页上打印 batt com 的像素,但是您可以检查第2页的碰撞!

问题:您的视频适配器甚至在模式13h中支持多个页面吗?

答案 1 :(得分:0)

答案较晚,但正如上面的答案所述:

MOV AL, 13H ;changes the num of pixels to 640X480 with 16 colors

模式13h为320x200,模式12h为640x480。