8086汇编语言中的换行符:我的文本打印为阶梯式

问题描述 投票:6回答:5

我正在获得这样的阶梯输出

我的程序正常工作,除了当我打印一个新行,然后在当前行中打印一些东西时,它显示在下一行但在它之前有一些空格。


程序是这样的:(打印一个从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
assembly dos x86-16
5个回答
9
投票

您需要打印新行和回车。


5
投票

如果您使用emu80x86此代码应该这样做

mov dx,13
  mov ah,2
  int 21h  
  mov dx,10
  mov ah,2
  int 21h

3
投票

AS anthony说,根据您的汇编程序,您需要进行回车和换行以转到下一行并将光标放在行的开始处。对于MASM,您可以分别使用Call crlf或打印值0dh和0ah。


3
投票

这将打印一个新行:

1)添加数据段:

linefeed db 13, 10, "$"

2)然后在需要新线的任何地方使用它:

; new line
mov ah, 09
mov dx, offset linefeed
int 21h

-2
投票

试着把线路换回线路

mov ax, 4c00h ; return to ms-dos
int 21h
© www.soinside.com 2019 - 2024. All rights reserved.