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)
它工作正常,但有一个小问题,当我想要打印新行,并在当前行中打印一些东西时,它将转到新行,但在新行之前有一些空格.

如果您使用emu80x86此代码应该这样做
mov dx,13
mov ah,2
int 21h
mov dx,10
mov ah,2
int 21h
Run Code Online (Sandbox Code Playgroud)
这将打印一个新行:
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)