考虑一下用文字模式绘制的红色矩形窗口的眼睛刺眼的迷幻图片:
每个白蓝方块代表一个字符单元格.细胞是逆右上方和上下方.顶部的数字向下读,给出距离左边缘1的单元格距离.
左边的数字给出了距离顶部的单元格距离.
对于每个单元2唯一的对(距离左侧,距离顶部的距离)称为坐标对或简称为坐标(或甚至是坐标).
这是习惯性地叫距离左为X,从车顶的距离Ÿ,一切以宽度相关的东西-X和有关的一切的高度,一些-Y .
大红色矩形是一个窗口3.
Windows有两个维度和一个位置.因此,窗口可以用三元组标识(左上角的位置坐标,大小为X,大小为Y).
例如,红色窗口可以描述为((30,8),22,7),因为它从(30,8)开始,它是22个细胞宽和7个细胞高.
描述窗口的另一种方式是使用左上角的坐标和右下角的坐标.
在这种情况下,红色窗口是((30,8),(51,14)).
该服务int 10h/AH=06h
可用于移动红色窗口内的内容.
我们需要告诉它移动窗口的位置,因为它使用第二种表示法,所以我们这样做.
CL
并且CH
形成保持左上角的对,X在CL中,Y在CH中.
DL
和DH
形成所述一对保持右下COORDS,X在DL,Y在DH.
此代码正确加载寄存器(两个版本等效)
;Easy version ;Normal version
mov cl, 30 mov cx, 081eh
mov ch, 8 mov dx, 0e34h
mov dl, 52
mov dh, 14
Run Code Online (Sandbox Code Playgroud)
服务例程的其他输入是微不足道的,但是BH
现在我们将其设置为零.
让我们来电话:
mov ax, 0603h ;Scroll three lines up
xor bh, bh
mov cx, 081eh
mov dx, 0e34h
int 10h
Run Code Online (Sandbox Code Playgroud)
结果是:
我们可以看到窗口内的内容已经向上滚动了三行.
窗户外没有任何东西被触及.
我们还注意到从下面"移位"的线是黑线.
这是输入BH
发挥作用的地方,它包含用于绘制这些线的属性(颜色和背景颜色的组合).
例如,属性0e0h指定亮黄色4,让我们使用它.
mov ax, 0603h ;Scroll three lines up
mov bh, 0e0h ;Yellow lines
mov cx, 081eh
mov dx, 0e34h
int 10h
Run Code Online (Sandbox Code Playgroud)
最后,值AL
可以为零以向上滚动整个窗口,即多个行等于窗口的高度.
对于服务int 10h/AH=07h
,基本原理是相同的,但窗口向下滚动.
1在细胞单位中.
2请注意,用于显示数字的单元格也具有坐标.
3因为它实际上看起来像一个窗口.
4因为我们在这种情况下设置了高强度位.
归档时间: |
|
查看次数: |
770 次 |
最近记录: |