汇编字符串右对齐输出
;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