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

关于信息的输入输出程序的错误

paradise73 发布于 2006-05-14 20:06, 786 次点击

功能:用户输入信息并回车后,将用户输入的信息显示出来!
程序如下:(望各位兄台不惜赐教,感谢不在话下)
DATA SEGMENT
Z DB 100 DUP(?)
DATA ENDS

STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
Start:
MOV AX,DATA
MOV DS,AX

LEA DX,Z
MOV AH,10
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
MOV BX,OFFSET Z
MOV SI,0
REPA:
INC SI
MOV DL,[BX][SI]
CMP DL,0DH
JNZ DISP
MOV AH,4CH
INT 21H
DISP:
MOV AH,2
INT 21H
JMP REPA

CODE ENDS
END Start

7 回复
#2
paradise732006-05-14 20:21

汇编后没有错误和警告,运行却出现一行乱码,达不到预期的目的,对不起党和人民对我的期望!

#3
公子吕2006-05-15 14:58
你的int21 10号中断用法错误...

我猜测应该这么用:
string db count ;可能是10号中断接收字符的个数
db ? ;这一个字节不知道是作什么用的.
db count dup (?) ;这里才是存放字符串的偏移地址.所以用lea dx,string+2

我改写了一下你的程序,不过还是有问题,程序运行没等我输入就直接输出乱码了,再想想.
#4
paradise732006-05-15 16:18

谢谢公子吕的回答。今天花掉一个上厕所的时间再来钻研此问题,希望有奇迹出现,结果,奇迹差点真的出现了——我差点把代谢物排泄在错误的地方了!

#5
公子吕2006-05-16 12:03
没有钻研钻到异性厕所去吧?
#6
xxygdufs2006-05-16 16:13
我看看先
#7
longerhe2006-10-11 12:15
我先解释下那OA号功能先:
string db count ;置接收字符的最大长度
db ? ;存放实际输入字符个数.
db count dup (?) ;输入字符串缓冲区
#8
qilindh2006-10-11 22:28


;你的程序有问题,改好了,测试通过

DATA SEGMENT
Z DB 50
db ?
db 100 DUP(?),13,10
DATA ENDS

STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
Start:
MOV AX,DATA
MOV DS,AX

LEA DX,Z
MOV AH,0ah;dos调用
INT 21H

mov dl,10;回车换行
mov ah,02h
int 21h

MOV DL,0DH;输出字符
MOV AH,2
INT 21H
MOV BX,OFFSET Z
MOV SI,2
REPA:

MOV DL,[BX][SI]
CMP DL,0DH
JNZ DISP;不相同跳
mov ah,01h
int 21h
MOV AH,4CH
INT 21H
DISP:
MOV AH,2
INT 21H
INC SI
JMP REPA

CODE ENDS
END Start

[此贴子已经被作者于2006-10-11 22:30:03编辑过]

1