0

入力からバイト文字列を読み取り、ASCIIZ 形式で格納する手順を作成しようとしています (文字列は で終わります0)。以下は今までのコードです。文字列を読み取った後、文字列の最後のバイトにアクセスして に設定する方法がわかりません0

READ_ASCIIZ PROC
    PUSH BP
    MOV BP, SP

    MOV AH, 0AH
    MOV DX, 4H[BP]
    INT 21H

    POP BP
    RET 2H
READ_ASCIIZ ENDP
4

1 に答える 1

0

次の方法でそれを行うことができます(nasm構文で、テストされていません):

  ; saved modified registers
  push  bx
  push  si
  ; get pointer to buffer
  mov   si, [bp+4]
  ; grab number of chars read 
  ; (zero-extending as the length is stored as a byte)
  movzx bx, byte [si+1]
  ; write zero at end of character buffer (overwriting the newline)
  ; (+2 since that's were the buffer starts)
  mov   byte [si+bx+2], 0
  ; restore registers
  pop   si
  pop   bx

(これは最適化された方法ではないことに注意してください)

于 2013-01-14T18:34:02.743 に答える