我正在这样得到阶梯式输出
我的程序工作正常,但是当我打印一个新行,然后在当前行中打印某些内容时,它会显示在下一行但前面有一些空格。
程序是这样的:(打印一个从0到9的多个数字表):
data_seg segment
I DB 0D
J DB 0D
R DB ?
DIVER DB 10D
data_seg ends
stack_seg segment
stack_seg ends
code_seg segment
MAIN proc far
assume cs:code_seg, ds:data_seg, ss:stack_seg
MOV AX,data_seg
MOV DS,AX
FOR1:
MOV J,0D
FOR2:
MOV AX,0H
MOV AL,I
MUL J
DIV DIVER
MOV R,AH
ADD AL,48D
MOV AH,0EH
INT 10H
MOV AL,R
ADD AX,48D
MOV AH,0EH
INT 10H
MOV AX,32D
MOV AH,0EH
INT 10H
INC J
MOV AX,0
MOV AL,J
SUB AX,10D
JNZ FOR2
INC I
MOV AX,10D
MOV AH,0EH
INT 10H
MOV AX,0
MOV AL,I
SUB AX,10D
JNZ FOR1
MOV AX,4CH
INT 21H
MAIN endp
code_seg ends
end MAIN
答案 0 :(得分:9)
您需要打印新行和回车。
答案 1 :(得分:5)
如果您使用emu80x86此代码应该这样做
mov dx,13
mov ah,2
int 21h
mov dx,10
mov ah,2
int 21h
答案 2 :(得分:3)
AS anthony说,根据您的汇编程序,您需要执行回车和换行以转到下一行并将光标放在行的开始处。对于MASM,您可以分别使用Call crlf或打印值0dh和0ah。
答案 3 :(得分:3)
这将打印一个新行:
1)添加数据段:
linefeed db 13, 10, "$"
2)然后在需要新线的任何地方使用它:
; new line
mov ah, 09
mov dx, offset linefeed
int 21h
答案 4 :(得分:-2)
尝试将线路用于换行
mov ax, 4c00h ; return to ms-dos
int 21h