8086组装新线

Moe*_*ini 6 assembly dos x86-16

我想在汇编中打印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
Run Code Online (Sandbox Code Playgroud)

它工作正常,但有一个小问题,当我想要打印新行,并在当前行中打印一些东西时,它将转到新行,但在新行之前有一些空格. 在此输入图像描述

Ant*_*ake 9

您需要打印新行回车.


MRN*_*akh 7

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

mov dx,13
  mov ah,2
  int 21h  
  mov dx,10
  mov ah,2
  int 21h
Run Code Online (Sandbox Code Playgroud)


bha*_*arc 5

这将打印一个新行:

1)在数据段中添加:

linefeed db 13, 10, "$"
Run Code Online (Sandbox Code Playgroud)

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

; new line
mov ah, 09
mov dx, offset linefeed
int 21h
Run Code Online (Sandbox Code Playgroud)