我想填满屏幕边缘(80 * 25分辨率,但主要问题是我不能写到最后一行)所以它像80 * 24分辨率我的框架 我还有其他一些问题。我会将这些问题添加到评论中:
Code Segment
assume CS:Code, DS:Data, SS:Stack
Start:
mov ax, Code
mov DS, AX
;>>>>>>>>>>>>>>>>
;* $
;* $
;* $ 24 line
;<<<<<<<<<<<<<<<< 25 line
;But what i get is
;****************
;* $
;* $
;* $ 23 line
;<<<<<<<<<<<<<<<< 24 line
;If i try to use 24 iteration in the second cyclus(Line1) i get:
;>>>>>>>>>>>>>>>>
;* $
;* $
;* $
;* < 24 line
;<<<<<<<<<<<<<<< 25 line
mov ax,03h
int 10h
xor dx,dx
xor dx,dx
push dx
mov cx,80
Line:
pop dx
xor bx,bx
mov ah,02h
int 10h
inc dl
push dx
mov dl,'>'
mov ah,02h
int 21h
loop Line
pop dx
dec dl
inc dh
push dx
mov cx,23
Line1:
pop dx
xor bx,bx
mov ah,02h
int 10h
inc dh
push dx
mov dl,'$'
mov ah,02h
int 21h
loop Line1
pop dx
dec dh
push dx
mov cx,80
Line3:
pop dx
xor bx,bx
mov ah,02h
int 10h
dec dl
push dx
mov dl,'<'
mov ah,02h
int 21h
loop Line3
;Hier the DX register is crashed somehow and i need to set it manually
;Do you know why?
pop dx
mov dh,22
mov dl,0
;dec dh
;dec dl
push dx
mov cx,22
Line4:
pop dx
xor bx,bx
mov ah,02h
int 10h
dec dh
push dx
mov dl,']'
mov ah,02h
int 21h
loop Line4
xor ax,ax
int 16h
ProgramEnd:
mov ax,4c00h
int 21h
pop bx
Code Ends
Data Segment
Data Ends
Stack Segment
Stack Ends
End Start
答案 0 :(得分:1)
循环后,堆栈上的DX
会显示下一个位置。
1)删除dec dh
之前的Line3
。 “下一行”就是右边一行。
2)Line4之前的“下一个”列是“从00开始”= FF。将dec dl
更改为inc dl
,您可以删除手动调整。
3)int 21h / ah = 02h
打印字符和移动光标。如果光标离开窗口(右下角),它将滚动。使用不移动光标的功能。所以改变
mov dl,'<'
mov ah,02h
int 21h
到
mov ah, 09h
mov bx, 7
mov al, '<'
int 10h