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

问个简单的问题(从键盘读入一行数据然后显示)

Spygg 发布于 2010-04-25 16:15, 897 次点击
;这个程序结果不对,希望有人帮我改下,谢谢了
DAT SEGMENT
STRING DB 100,0,100 DUP(?)
DAT ENDS
COD SEGMENT
ASSUME CS: COD,DS: DAT
STRAT:
MOV AX,DAT
MOV DS,AX
LEA DX,STRING
MOV AH,0AH
INT 21H
XOR CL,CL
MOV CL,STRING+1
XOR CH,CH
ADD DX,CX
MOV BX,DX
MOV BYTE PTR[BX+1],0AH   ;这两行就是在读入的字符后加个0a和0d用来换行
MOV BYTE PTR[BX+2],0DH   ;不过不是很懂是bx+1,bx+2还是bx+2,bx+4
MOV BYTE PTR[BX+4],'$'
LEA DX,STRING+2
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
COD ENDS
END

[ 本帖最后由 Spygg 于 2010-4-25 19:45 编辑 ]
3 回复
#2
hahayezhe2010-04-25 19:37
bx+1,bx+2了 BYTE PTR是字节操作了  当系统获取13时 会继续读下去 判断后面的是不是10如果是就执行回车
#3
Spygg2010-04-25 19:44
回复 2楼 hahayezhe
但是这个程序结果不对
#4
Spygg2010-04-25 22:11
;终结版,嘿嘿有问题还是要自己哈,不过还是谢谢2楼的版主
DAT SEGMENT
STRING DB 100,0,100 DUP(?)
ENT DB 0AH,0DH,'$'
PRINTF DB 'INPUT A STING TO TEST!','$'
STAR DB '***************************THIS IS A DEVIDE LINE******************','$'
DAT ENDS
COD SEGMENT
ASSUME CS: COD,DS: DAT
STRAT:
MOV AX,DAT
MOV DS,AX
;Print a line to remind user
LEA DX,PRINTF
MOV AH,09H
INT 21H
LEA DX,ENT
MOV AH,09H
INT 21H
;
LEA DX,STRING
MOV AH,0AH
INT 21H
XOR CL,CL
MOV CL,STRING+1
XOR CH,CH
ADD DX,CX
MOV BX,DX
MOV BYTE PTR[BX+2],'$'
; ENTER NEXT LINE
LEA DX,ENT
MOV AH,09H
INT 21H
LEA DX,STAR
MOV AH,09H
INT 21H
LEA DX,ENT
MOV AH,09H
INT 21H
; PRINT THE LINE THAT USER TYPED
LEA DX,STRING+2
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
COD ENDS
END
1