すみません。私はアセンブリ言語を学ぶことを理解しようとしています。しかし、私には多くの問題があります。NASM で文字列を操作しようとしています。文字列定数を文字列変数にコピーしました。最大サイズは 50 です。そのため、この境界を確認したいと思います。ただし、このプログラムはセグメンテーション違反をスローします。MASM の例を使用しているため、おそらく NASM 構文の使用エラーが存在します。私のプログラムは次のとおりです。
section .data
MAXTEXTSIZE equ 50
_cte_hola db "Hola", 0
_cte_mundo db "Mundo", 0
section .bss
MAIN_d resb MAXTEXTSIZE+1
section .text
global _start
strlen:
mov bx, 0
strl01:
cmp WORD [SI+BX],0 t
je strend
inc bx
jmp strl01
strend:
ret
strcpy:
call strlen
cmp bx, MAXTEXTSIZE
jle copiarsizeok
mov bx, MAXTEXTSIZE
copiarsizeok:mov cx, bx
cld
rep movsb
mov al,0
mov BYTE [DI], al
ret
_start:
mov ds, ax
mov es, ax
mov si, [MAIN_d]
mov di, [_cte_hola]
call strcpy
mov eax, 1
mov ebx, 0
int 80h
事前に感謝し、失礼します。私の質問は、アセンブリ プログラマーにとってばかげています。