みんな。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で調べてみましたが、ポイントがわかりません...