请教一个关于字符右对齐输出的问题

WHYLBL 2010-06-14 06:59:49
从键盘输入一个字符串,在屏幕上以右对齐的方式显示出来。

DATA SEGMENT
MASSAGE1 DB 'PLEASE INPUT A STRING:','$'
MASSAGE2 DB 'RIGHT-ADJUETING OF STRING:','$'
NUM EQU 25
STRING1 DB NUM,0,NUM DUP(' '),0AH,0DH,'$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
START: MOV AX,DATA
MOV DS,AX
LEA DX,MASSAGE1
MOV AH,09H
INT 21H
LEA DX,STRING1
MOV AH,0AH
INT 21H
CALL DUIQI
LEA DX,MASSAGE2
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
DUIQI PROC
PUSH DX
LEA SI,STRING1
MOV DI,NUM-1
MOV CX,[SI+1]
MOV DX,CX
ADD DI,SI ;DI指向最后一个字节
ADD SI,CX
ADD SI, CX
INC SI ;SI指向输入字符的最后一个
LOP1: STD
LODSB
STOSB
LOOP LOP1
LOP2: MOV BX,NUM
SUB BX,DX
MOV BYTE PTR[DI],20H
SUB BX,1
JNE LOP2
POP DX
RET
DUIQI ENDP
CODE ENDS
END START
运行的时候只能显示“PLEASE INPUT A STRING:”输入字符按回车后就没反应了,请教各位这是哪出了问题,谢谢啦!
...全文
168 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WHYLBL 2010-06-18
  • 打赏
  • 举报
回复
谢谢二三楼的,现在基本弄懂了。
nanlingcg 2010-06-15
  • 打赏
  • 举报
回复
DATA SEGMENT
MASSAGE1 DB 'PLEASE INPUT A STRING:$'
MASSAGE2 DB 'RIGHT-ADJUETING OF STRING:$'
NUM EQU 25
STRING1 DB NUM,0,NUM DUP(0)
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
START: MOV AX,DATA
MOV DS,AX
LEA DX,MASSAGE1
MOV AH,09H
INT 21H
LEA DX,STRING1
MOV AH,0AH
INT 21H
CALL DUIQI
LEA DX,MASSAGE2
MOV AH,09H
INT 21H
MOV AH,7
INT 21H
MOV AH,4CH
INT 21H
DUIQI PROC
LEA SI,STRING1
INC SI
XOR CX,CX
MOV CL,[SI]
ADD SI,CX
MOV AX,0B800H
MOV ES,AX
MOV DI,318
MOV AH,14H
STD
LOOPS1:
LODSB
STOSW
LOOP LOOPS1
CLD
RET
DUIQI ENDP
CODE ENDS
END START
dididu1515 2010-06-15
  • 打赏
  • 举报
回复
;
;符合题目要求,运行准确
DATA SEGMENT
MASSAGE1 DB 'PLEASE INPUT A STRING(<25):',0dh,0ah,'$'
MASSAGE2 DB 0dh,0ah,'RIGHT-ADJUETING OF STRING:',0dh,0ah,'$'
NUM EQU 25
STRING1 DB NUM,0,NUM DUP('$')
DATA ENDS

STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
START: MOV AX,DATA
MOV DS,AX
LEA DX,MASSAGE1
MOV AH,09H
INT 21H
LEA DX,STRING1
MOV AH,0AH
INT 21H
;
LEA DX,MASSAGE2
MOV AH,09H
INT 21H
CALL DUIQI
mov DX,offset STRING1+2
MOV AH,9
INT 21H
mov ah,7
int 21h
MOV AH,4CH
INT 21H

DUIQI PROC
mov cx,80
mov dl,STRING1+1
mov dh,0
sub cx,dx
mov ax,0e20h
next: int 10h
loop next
RET
DUIQI ENDP
CODE ENDS
END START
masmaster 2010-06-14
  • 打赏
  • 举报
回复
看不懂~~帮顶

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧