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

时间:2011-12-04 07:55:41

标签: assembly dos x86-16

我正在这样得到阶梯式输出 enter image description here

我的程序工作正常,但是当我打印一个新行,然后在当前行中打印某些内容时,它会显示在下一行但前面有一些空格。


程序是这样的:(打印一个从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

5 个答案:

答案 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
相关问题