1

みんな。NASM で、変数として提供された文字列の長さを計算するプログラムを作成しました。

section .data
    ; str1 db '12345678901'
    str1 db '123456789012'

section .text
    global _start

_start:
    mov eax, str1
    mov ecx, -1

.loop:
    inc ecx
    cmp byte [eax + ecx], 0
    jne .loop

.done:
    mov eax, 1
    mov ebx, ecx
    int 80h

最初の文字列 (このリストでコメントされている) でプログラムを実行すると、正しい値 11 が返されます。なぜそうなのか、私にはわかりません。64ビットマシンで組み立てられています。GDBで調べてみましたが、ポイントがわかりません...

4

3 に答える 3