簡體   English   中英

如何使用循環繪制正方形(整數10h)?

[英]How to draw a square (int 10h) using loops?

您可以使用設置為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
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行)並在該行中繪制20個像素。

這將通過在20行中每行繪制20個像素來創建一個正方形

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在您期望的值范圍的錯誤末端“坐下”,則后者更為寬容!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM