INT 10h功能0Dh不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了INT 10h功能0Dh不一致相关的知识,希望对你有一定的参考价值。
我试图获得单个像素的颜色(我在Emu8086中使用13h图形模式),因为我正在使用中断10h的函数0Dh。但它根本不一致。它无法给出正确的像素颜色,并给我00(黑色)。
我知道CX在模式13h中加倍。但我非常怀疑问题是我绘制的形状(两个填充的矩形),恰好标题为逆时针45度。
什么似乎是问题?如何一致地获得单个像素的颜色?
.MODEL SMALL
.DATA
X DW ?
Y DW ?
T DW ?
linecounter dw ?
LastX DW ?
LastY DW ?
PixelClr DB ?
.CODE
.STARTUP
MOV AH, 00
MOV AL, 13h
INT 10h
MOV X, 85
MOV Y, 93
MOV linecounter, 75
Square4Top:
MOV BH, 0
MOV CX, X
MOV DX, Y
MOV T, 7
MOV AH, 0Ch
MOV AL, 01h
DrawSquare4Top:
INT 10h
INC CX
INC DX
DEC T
CMP T, 0
JNZ DrawSquare4Top
INC X
DEC Y
DEC linecounter
CMP linecounter, 0
JNZ Square4Top
MOV X, 61
MOV Y, 93
MOV linecounter, 50
Square5Top1:
MOV BH, 0
MOV CX, X
MOV DX, Y
MOV T, 7
MOV AH, 0Ch
MOV AL, 0Bh
DrawSquare5Top1:
INT 10h
INC CX
INC DX
DEC T
CMP T, 0
JNZ DrawSquare5Top1
INC X
DEC Y
DEC linecounter
CMP linecounter, 0
JNZ Square5Top1
;;;
;;; INITIALIZE MOUSE
;;;
MOV AX, 0
INT 33h
MOV AX, 1
INT 33h
MOV AX, 2
INT 33h
MouseAgain:
MOV AX, 3
INT 33h
CMP BX, 1
JNZ MouseAgain
MOV AH, 0Dh
MOV BH, 00
SHR CX, 1
INT 10h
MOV PixelClr, AL
JMP MouseAgain
END
答案
因为你没有真正向我们展示你的代码,所以有点难以分辨你做错了什么!
但是,您应该至少确保在调用中断之前设置了所有相关寄存器(请参阅here)。这意味着所有:
AH = 0Dh
BH = page number
CX = column
DX = row
当然,你可能实际上在那里看一个黑色像素,特别是因为大多数屏幕是黑色的。我会检查你是否正在看一个像形状外面的像素,比如下面的“图形”中的x
而不是y
:
/
/
x/ /
/y /
/ /
/ /
/ /
/
/
如果你在绘制矩形之前用白色填充整个屏幕,那么应该相当容易检查,看看你是否变回白色或仍然变黑。
以上是关于INT 10h功能0Dh不一致的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段