回 帖 发 新 帖 刷新版面

主题:如何在标准输出窗口上输出换行后的字符

我在汇编中写了一个小程序,目的是输出a,b,c但是它们一个接着一个输出在同一行上,请问怎样才能让它们一个一行呢?就是a一行,b一行,c一行!我的源代码如下:
data_seg segment
   a db '123456789$'
   b db 'ABCDEFGHI$'
   c db 'abcdefghi$'
data_seg ends

code_seg segment
  assume ds:data_seg,cs:code_seg
start:
      mov ax,data_seg
      mov ds,ax
      mov cl,9
      mov si,0
      
loop1:mov al,a[si]
      xchg al,c[si]
      mov a[si],al
      inc si
      loop loop1
      
      mov cl,9
      mov si,0
loop2:mov al,b[si]
      xchg al,c[si]
      mov b[si],al
      inc si
      loop loop2
      
      mov dx,offset a
      mov ah,9
      int 21h
      
      mov dx,offset b
      mov ah,9
      int 21h
      
      mov dx,offset c
      mov ah,9
      int 21h

      mov ah,4ch
      int 21h
code_seg ends
     end start  
它的结果是:abcdefghi123456789ABCDEFGHI
要让它如下显示:abcdefghi
                123456789  
                ABCDEFGHI
该如何改这个程序?

回复列表 (共2个回复)

沙发

data_seg segment
   a db '123456789',13,10,'$'
   b db 'ABCDEFGHI',13,10,'$'
   c db 'abcdefghi',13,10,'$'
data_seg ends

板凳

这个很简单,你只要加一个回车换行子程序就可以了,呵
你自己试试看, 这是我帮你加的
DATA_SEG  SEGMENT
           A  DB        '123456789$'
           B  DB        'ABCDEFGHI$'
           C  DB        'abcdefghi$'
    DATA_SEG  ENDS

    CODE_SEG  SEGMENT
              ASSUME    DS:DATA_SEG,CS:CODE_SEG
      START:
              MOV       AX,DATA_SEG
              MOV       DS,AX
              MOV       CL,9
              MOV       SI,0
      
      LOOP1:  MOV       AL,A[SI]
              XCHG      AL,C[SI]
              MOV       A[SI],AL
              INC       SI
              LOOP      LOOP1
      
              MOV       CL,9
              MOV       SI,0
      LOOP2:  MOV       AL,B[SI]
              XCHG      AL,C[SI]
              MOV       B[SI],AL
              INC       SI
              LOOP      LOOP2
      
              MOV       DX,OFFSET A
              MOV       AH,9
              INT       21H
              CALL      NEWLINE
              MOV       DX,OFFSET B
              MOV       AH,9
              INT       21H
              CALL      NEWLINE
              MOV       DX,OFFSET C
              MOV       AH,9
              INT       21H

              MOV       AH,4CH
              INT       21H
     NEWLINE  PROC                  ;回车换行子程序
              PUSH      AX
              PUSH      DX
              MOV       DL,0DH
              MOV       AH,2
              INT       21H
              MOV       DL,0AH
              MOV       AH,2
              INT       21H
              POP       DX
              POP       AX
              RET
     NEWLINE  ENDP

    CODE_SEG  ENDS
              END       START

我来回复

您尚未登录,请登录后再回复。点此登录或注册