+ -
当前位置:首页 → 问答吧 → 关于从控制台读写字符的问题

关于从控制台读写字符的问题

时间:2011-02-24

来源:互联网

刚学习汇编遇到从控制台读写字符的问题

编写一个过程,此过程用寄存器传递参数,参数内容为某一存储变量的首地址
过程功能体为循环从控制台读字符并回显,同时将读到的字符存储到由寄存器参数所指示的存储变量中形成一个字符串,遇到回车结束
调用后再将存储变量中的字符传打印输出,为什么控制台没有打印任何结果?我的代码如下
  .data
  TEMP DB 1000 dup(?) ;定义字节变量

  .code
;从控制台都字符,遇到回车结束
READ_CHARA PROC 
XOR SI, SI
loop:
MOV AH, 01H
INT 21H
CMP AL, 0DH
  JE RESULT
MOV BYTE PTR[BX+SI], AL
INC SI
JMP loop
RESULT:
MOV BYTE PTR[BX+SI], '$'
RET
READ_CHARA ENDP

  .STARTUP
  MOV AX, @data
MOV DS, AX

LEA BX, TEMP ;将内存变量地址保存到基址寄存器
 
CALL READ_CHARA
   
  ;打印字符串
  MOV DX, BX
MOV AH, 09H
INT 21H
 
;退出
MOV AH, 4CH  
INT 21H
  END 

请有知道的恳请指导一下

作者: lcy779779   发布时间: 2011-02-24

Assembly code

  .data
     TEMP DB 1000 dup(?) ;定义字节变量
  .code
     ;从控制台都字符,遇到回车结束
  READ_CHARA PROC  
     XOR SI, SI
  loop:
     MOV AH, 01H
     INT 21H
     CMP AL, 0DH 
     JE RESULT
     MOV BYTE PTR[BX+SI], AL
     INC SI
     JMP loop
   RESULT:
     MOV BYTE PTR[BX+SI], '$'
     RET
   READ_CHARA ENDP

  .STARTUP
     MOV AX, @data
     MOV DS, AX

     LEA BX, TEMP ;将内存变量地址保存到基址寄存器
 
      CALL READ_CHARA 
    
     ;打印字符串
      MOV DX, BX
     MOV AH, 09H
     INT 21H
  
     ;退出
     MOV AH, 4CH   
    INT 21H
  END  


这样看得清一些

作者: lcy779779   发布时间: 2011-02-24