現在、私はバッファ内のすべての単一バイトを(ファイルから読み込み)ループし、それらのどれかが空白であるかどうかを比較し、それらをSTDOUTに書き込もうとしています。なんらかの理由でプログラムはコンパイルされて正常に動作しますが、出力はゼロになります。バイト以上のNASMループ
section .data
bufsize dw 1024
section .bss
buf resb 1024
section .text
global _start
_start:
; open the file provided form cli in read mode
mov edi, 0
pop ebx
pop ebx
pop ebx
mov eax, 5
mov ecx, 0
int 80h
; write the contents in to the buffer 'buf'
mov eax, 3
mov ebx, eax
mov ecx, buf
mov edx, bufsize
int 80h
; write the value at buf+edi to STDOUT
mov eax, 4
mov ebx, 1
mov ecx, [buf+edi]
mov edx, 1
int 80h
; if not equal to whitespace, jump to the loop
cmp byte [buf+edi], 0x20
jne loop
loop:
; increment the loop counter
add edi, 1
mov eax, 4
mov ebx, 1
mov ecx, [buf+edi]
int 80h
; compare the value at buf+edi with the HEX for whitespace
cmp byte [buf+edi], 0x20
jne loop
; exit the program
mov eax, 1
mov ebx, 0
int 80h
0x20は「空白」ではなく、文字通り単に*スペース*、つまり空白のサブセットです。しかしこれはおそらくニットピッキングです。 :) – unwind
愚かな質問ですが、あなたのファイルに '0x20'がいくつかあるのでしょうか? – cha0site
これは32ビットLinuxですか、それともBSDですか? –