String 汇编代码中的字符串缓冲区

String 汇编代码中的字符串缓冲区,string,assembly,buffer,String,Assembly,Buffer,我刚刚结束了我的代码,允许覆盖您的密码。它是这样的(FASM): 现在我需要打印真正的密码。我知道字符串缓冲区是必须的,缓冲区的声明应该是什么样子,但我真的不知道如何使用它并使它工作。 呼救:) 干杯。由于您的程序允许输入15个字符的密码,您可以使用以下设置缓冲区: Buffer db 16 dup ("$") 在petla循环之前初始化DI寄存器,并通过stosb指令将从DOS函数获得的ASCII码放入缓冲区: mov di, Buffer mov cx, 16 petla:

我刚刚结束了我的代码,允许覆盖您的密码。它是这样的(FASM):

现在我需要打印真正的密码。我知道字符串缓冲区是必须的,缓冲区的声明应该是什么样子,但我真的不知道如何使用它并使它工作。 呼救:)
干杯。

由于您的程序允许输入15个字符的密码,您可以使用以下设置缓冲区:

Buffer db 16 dup ("$")
在petla循环之前初始化DI寄存器,并通过
stosb
指令将从DOS函数获得的ASCII码放入缓冲区:

  mov  di, Buffer
  mov  cx, 16
petla:
  mov  ah,08h
  int  21h
  cmp  al,0dh
  je   OK
  stosb
  mov  ah,02h
  mov  dl,42
  int  21h
  ;;;cmp cx,0
  ;;;je Fail
  loop petla

请注意,CX=0的编译在代码中的<代码>循环指令之前是无用的。

@ MILO,如果这个答案帮助了你并解决了你的问题,请考虑接受这个答案。有关如何接受以及为什么接受的更多信息,请参见以下SO信息:
  mov  di, Buffer
  mov  cx, 16
petla:
  mov  ah,08h
  int  21h
  cmp  al,0dh
  je   OK
  stosb
  mov  ah,02h
  mov  dl,42
  int  21h
  ;;;cmp cx,0
  ;;;je Fail
  loop petla