INT 10h功能0Dh不一致

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了INT 10h功能0Dh不一致相关的知识,希望对你有一定的参考价值。

我试图获得单个像素的颜色(我在Emu8086中使用13h图形模式),因为我正在使用中断10h的函数0Dh。但它根本不一致。它无法给出正确的像素颜色,并给我00(黑色)。

我知道CX在模式13h中加倍。但我非常怀疑问题是我绘制的形状(两个填充的矩形),恰好标题为逆时针45度。

什么似乎是问题?如何一致地获得单个像素的颜色?

The shape

.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不一致的主要内容,如果未能解决你的问题,请参考以下文章

INT 10H功能06H移动光标

汇编 int10h(转)

Python图像resize前后颜色不一致问题

修改汇编语言程序,添加功能 使其能完成以下功能

创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段

跨活动的片段之间的共享元素转换不一致