Newline in 8086 assembly language: my text prints stair-stepped

眉间皱痕 提交于 2019-12-23 09:32:13

问题


I'm getting stair-step output like this

My program works correctly, except that when I print a new line, and then print something in the current line, it shows on the next line but with some space before it.


The program is this: (print a table of multiple numbers from 0 to 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

回答1:


You need to print new line and carriage return.




回答2:


if your using emu80x86 this code should do it

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



回答3:


This would print a new line:

1) Add in the data segment:

linefeed db 13, 10, "$"

2) And then use this anywhere you need a new line:

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



回答4:


AS anthony said, Based on your assembler, you need to do a carriage return and line feed to go to next line and place cursor at the beggining of the line. For MASM you can use Call crlf or print values 0dh and 0ah respectively.




回答5:


try to put lanes for line return

mov ax, 4c00h ; return to ms-dos
int 21h


来源:https://stackoverflow.com/questions/8374034/newline-in-8086-assembly-language-my-text-prints-stair-stepped

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!