Lid*_*tai 2 assembly pong x86-16
我的乒乓项目有问题。我尝试当球击中红色球棒时,它会随机弹回另一侧,但由于某种原因它无法识别红色。我在 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
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)MOV AL, 13H ;changes the num of pixels to 640X480 with 16 colors
这里的注释与视频模式编号不匹配。模式 13h 的分辨率为 320x200,256 色。
Run Code Online (Sandbox Code Playgroud)mov base, 0 printleftbase: printpixel 0, base, 2, 2 INC base CMP base, 199 JNE printleftbase
Run Code Online (Sandbox Code Playgroud)mov base, 0 printrightbase: printpixel 319, base, 2, 2 INC base CMP base, 199 JNE printrightbase
如果前面代码的目的是绘制沿屏幕高度的垂直线,那么您需要与 200 而不是 199 进行比较。
Run Code Online (Sandbox Code Playgroud);------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 模式下的多个页面?