汇编题目: 请提示输入你的姓名,换行反序输出 我写的代码为什么会有乱码?

例如输入 abcd
输出:dcba

?腥? !幒

DSEG SEGMENT
SHOW DB'Please input your name:$'
NAM DB 20
DB ?
DB 20 DUP(0)
DSEG ENDS
SSEG SEGMENT STACK
DB 200 DUP(?)
STACK_TOP LABEL WORD
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,SSEG
MOV SS,AX
MOV SP,OFFSET STACK_TOP
MOV DX,OFFSET SHOW
MOV AH,09H
INT 21H
MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET NAM
MOV AH,0AH
INT 21H
MOV SI,OFFSET NAM+2
MOV CL,NAM+1
MOV CH,0

MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H

L1: MOV BX,[SI]
PUSH BX
INC SI
LOOP L1

L2: POP DX
MOV AH,02H
INT 21H
LOOP L2

MOV AH,4CH
INT 21H
CSEG ENDS
END START

第1个回答  2012-03-18
再试试看:

DSEG SEGMENT
SHOW DB 'Please input your name: $'
NAM DB 20
DB ?
DB 20 DUP(0)
DSEG ENDS
SSEG SEGMENT STACK
DB 200 DUP(?)
STACK_TOP LABEL WORD
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:
MOV AX, DSEG
MOV DS, AX

MOV AX, SSEG
MOV SS, AX
MOV SP, OFFSET STACK_TOP

MOV DX, OFFSET SHOW
MOV AH, 09H
INT 21H

MOV DX, OFFSET NAM
MOV AH, 0AH
INT 21H

MOV DL, 0AH
MOV AH, 02H
INT 21H
MOV DL, 0DH
MOV AH, 02H
INT 21H

MOV CL, NAM + 1
MOV CH, 0
CMP CX, 0
JE EXIT

MOV SI, OFFSET NAM + 2
ADD SI, CX
MOV AH, 02H
L1:
DEC SI
MOV DL, [SI]
INT 21H
LOOP L1
EXIT:
MOV AH, 4CH
INT 21H
CSEG ENDS
END START本回答被提问者采纳
相似回答