你可以在10h的设置下使用21h的新线吗? 如果没有,那么如何通过8086设置10h的新线? 我试图做的是使用类似于正方形的循环。
org 100h
mov ah, 0 ; set display mode function.
mov al, 13h ; mode 13h = 320x200 pixels, 256 colors.
int 10h ; set it!
mov cx, 10
mov dx, 10
mov ah, 0ch ; put pixel
int 10h
colcount:
inc cx
int 10h
cmp cx, 20
JNE colcount
rowcount:
inc cx
int 10h
cmp cx, 20
JNE rowcount
答案 0 :(得分:4)
mov ah, 0 ; set display mode function.
mov al, 13h ; mode 13h = 320x200 pixels, 256 colors.
int 10h ; set it!
mov cx, 10 ;col
mov dx, 10 ;row
mov ah, 0ch ; put pixel
colcount:
inc cx
int 10h
cmp cx, 30
JNE colcount
mov cx, 10 ; reset to start of col
inc dx ;next row
cmp dx, 30
JNE colcount
(根据您的代码) 这应该画一个正方形,
每次连续绘制20个像素(通过增加cx-col),然后转到下一行(增加dx-row) 并在该行中绘制20个像素。
这将通过在20行中每行绘制20个像素来创建一个正方形
答案 1 :(得分:1)
YonBruchim提出的答案确实在(11,10) - (30,29)绘制了一个20x20点的矩形,但是在(10,10)处加了一个额外的点!
此BIOS调用还需要您指定BH中的视频页码(大部分为0)和AL中的像素颜色(亮白色为15)。
正如Ruud已经指出的那样,永远不会假设任何API调用都会保留AX。
就我个人而言,我不喜欢像郎这样的结构
cmp cx,30
jne colcount
而是使用
cmp cx,30
jb colcount
如果CX'坐在后面,后者更宽容。在您期望的价值范围的错误一端!