首页
社区
课程
招聘
[求助]为什么这代码不能把键盘输入的字符,显示出来呢,麻烦帮我改改,来实现一下
发表于: 2012-7-23 22:05 4289

[求助]为什么这代码不能把键盘输入的字符,显示出来呢,麻烦帮我改改,来实现一下

2012-7-23 22:05
4289
DATA SEGMENT
     STRINGBUF   DB  25,0,25 DUP(' '),0AH,0DH,'$'
DATA ENDS

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

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA,SS:STACK1
BEGIN: MOV AX,DATA
       MOV DS,AX
       LEA BX,STRINGBUF  ;输入字符串
       MOV DX,BX
       MOV AH,0AH
       INT 21H

       LEA DX,STRINGBUF +2 ;显示字符串
       MOV AH,09H
       INT 21H
       MOV AH,4CH
       INT 21H
CODE   ENDS
       END BEGIN

为什么这代码不能把键盘输入的字符,显示出来呢,麻烦帮我改改,来实现一下!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2993
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
按照LZ的代码编译运行了一下,完全正常,可以输出,运行结果见附件。不知道LZ指的是什么问题。
上传的附件:
2012-7-23 23:10
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
1、 STRINGBUF   DB  25,0,25 DUP(' '),0AH,0DH,'$'   ; 这样写是什么意思?
2、BEGIN: MOV AX,DATA
       MOV DS,AX
       LEA BX,STRINGBUF  ;输入字符串
       MOV DX,BX
       MOV AH,0AH
       INT 21H

       LEA DX,STRINGBUF +2 ;显示字符串
       MOV AH,09H
       INT 21H
       MOV AH,4CH
       INT 21H
什么意思
2012-7-24 09:24
0
雪    币: 2993
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
1.以字节为单位,开辟了25个以' '填充的空间。定义一个指针Stringbuf,指向该内存空间。
2.将Stringbuf所指的地址加载到DX,然后输入中断。
将Stringbuf+2所指的地址加载到DX,然后输出中断。
就是先输入一个字符串,再输出一个。但是由于你申请的内存缓冲区只有25个,除去1个回车换行,可以输入长度为24的字符串。
2012-7-24 09:43
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
25,0,25 DUP(' '),0AH,0DH,'$';看不懂
2012-7-24 10:56
0
雪    币: 2993
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
这个看不懂的话建议LZ看一下汇编入门的书籍吧。。。就像英语,连字母都看不懂的话就没什么必要学英语了
2012-7-24 11:37
0
游客
登录 | 注册 方可回帖
返回
//