爱问知识人 爱问教育 医院库

下面程序有什么问题(为什么没有输出我刚输入的)??

首页

下面程序有什么问题(为什么没有输出我刚输入的)??


        

提交回答
好评回答
  • 2008-11-15 15:19:00
      解决这个问题,首先要明白 ah=0ah,int 21h 是怎么运作的,我来解释一下:ah=0ah,int 21h 的键盘输入是把所输入的数据放进 ds:[dx]里,在这个程式里,dx 所指向的是 string, 你所输入的数据应该是从 string[2] 开始,string[0]和string[1]是保留的,在这份程式里,string[0]=20, 而 string[1]=所输入的长度,例如你输入的是 "abc" 那么 string[1]=3。
      然而,还有一个字节没算在这 3 里面的,这个就是 al 传回的 0Dh(换行字节),它被放在你所输入最后一个字节的后面。
      要用 ah=9h,int 21h 输出一个字串,必须要在字串后面加上"$",这个你是明白的,只不过放错了地方,你把它放在了换行字节的后面,你应该放在换行字节上面才对,所有这份程式,应该加点工(大写是加上去或作过修改的):LEA DX,STRINGmov ah,0ahint 21hXOR BX,BXLEA SI,STRING+1MOV BL,BYTE PTR[SI]MOV STRING[BX+2],"$";如果你希望效果好一点,可以加上下面几行:;MOV AH,02H;MOV DL,0DH;INT 21H;MOV DL,0AH;INT 21HLEA DX,STRING+2mov ah,9int 21h 这样就可以顺利把输入打出来了。

    t***

    2008-11-15 15:19:00

其他答案

    2008-11-15 15:35:00
  • 没错啊   楼主    我的编译器上能通过啊    能回显输入的啊   建议换个编译器看看

    m***

    2008-11-15 15:35:00

  • 2008-11-15 14:43:00
  • codesegment;****** *********stringdb20,?,20dup(?),'$' ,codemovds,axmovdx,offsetstring;;********movah,0ahint21hMOVdx,offsetstring+2;********movah,9int21hmovah,4chint21hcodeendsendstart带***********的帮你改过了,键入的字符串存在string+2开始的单元

    p***

    2008-11-15 14:43:00

  • 2008-11-15 11:40:00
  •  ,code/movds,ax*MOVBYTEPTR[0],FFH;置缓冲区长度,确保程序通用性movdx,0/movah,0ah/int21h*MOVAL,[1]/XORAH.AH/MOVSI,AX/ADDSI,2/MOVAL,24/MOV[SI],AL少这句,如你输入字串过长,覆盖到‘$',下面输出字串时,就会出错*MOVAX,0E0DH/INT10H/MOVAL,0AH/INT10H少这句,输入和输出重叠在一行,看不出显示效果movdx,0;MOVDX,02;上一位改为offsetstring,是能输出,;但输入字串在内存中的位置已不符原题要求movah,9/int21hmovah,4ch/int21h

    k***

    2008-11-15 11:40:00

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):