注册 登录
编程论坛 汇编论坛

汇编字符串右对齐输出

Cherles 发布于 2012-12-09 20:14, 635 次点击
;1、题目:从键盘输入两个字符串,并有对齐输出
;2、遇到的问题:不能正确输出
;3、下面是我写的程序,求大神赐教!



DATA SEGMENT
    MESSAGE DB 'Please input a string:'
         DB '$'
    STR1 DB 10
         DB 0
             DB 10 DUP('$');

    STR2 DB 10
         DB '$'
             DB 10 DUP('$');
    STR3 DB 10
         DB 0
             DB 10 DUP('Q');
         DB '$'
    STR4 DB 10
         DB '$'
             DB 10 DUP('$');
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA
BEGIN:
      MOV AX, DATA
      MOV DS, AX

     MOV AH, 9        ; 提示输入
     LEA DX, MESSAGE
     INT 21H          ; Output

     MOV AH, 10       ; 输入第一个字符
     LEA DX, STR1
     INT 21H

     MOV AH, 2
     MOV DL, 0DH      ; Output Enter
     INT 21H
     MOV AH, 2
     MOV DL, 0AH      ; Output NewLine
     INT 21H

    MOV AH, 9
      LEA DX, STR1+2     ; 输出第一个字符
      INT 21H

     MOV AH, 2
     MOV DL, 0DH      ; Output Enter
     INT 21H
     MOV AH, 2
     MOV DL, 0AH      ; Output NewLine
     INT 21H

    MOV AH, 9        ; 提示输入
     LEA DX, MESSAGE
     INT 21H          ; Output

     MOV AH, 10       ; 输入第二个字符
     LEA DX, STR2
     INT 21H

     MOV AH, 2
     MOV DL, 0DH      ; Output Enter
     INT 21H
     MOV AH, 2
     MOV DL, 0AH      ; Output NewLine
     INT 21H

    MOV AH, 9
      LEA DX, STR2+2     ;输出第二个字符
      INT 21H
   
     MOV AH, 2
     MOV DL, 0DH      ; Output Enter
     INT 21H
     MOV AH, 2
     MOV DL, 0AH      ; Output NewLine
     INT 21H
 
    LEA SI,STR1+2
    ADD SI,[SI-1]
    mov DI,offset STR3+12
    MOV CX,9H

    STD
    REP MOVSB


     MOV AH, 2
     MOV DL, 0DH      ; Output Enter
     INT 21H
     MOV AH, 2
     MOV DL, 0AH      ; Output NewLine
     INT 21H

    MOV AH, 9
      LEA DX, STR3+2     ;输出移动后的第一个字符
      INT 21H



     MOV AH, 10       ; 输入字符
     LEA DX, STR2
     INT 21H


     MOV AH, 4CH      ; Return to control
    INT 21H

CODE ENDS
END BEGIN
1 回复
#2
wp2319572012-12-09 20:43
没有16位环境  int指令都用不了啊
1