我在汇编中尝试代码,我有一点问题。我的程序停止了SIGSEV分段错误。 GDB停在
在check_loop中cmpb%bl,0x41
。程序只检查每个字符,并在小写,大字或其他
时修改它.bss
.comm textin, 512
.comm textout, 512
.text
.global main
main:
movq $SYSREAD, %rax
movq $STDIN, %rdi
movq $textin, %rsi
movq $BUFLEN, %rdx
syscall
CALL changing
changing:
movl $0, %edi
jmp check_loop
check_loop:
movb textin(,%edi,1),%bl
cmpb %bl, 0x41
jl other
cmpb %bl, 0x5A
jl great
cmpb %bl, 0x61
jl other
cmpb %bl, 0x7a
jg other
lower:
addb %bl, 0x06
movb %bl,textout(,%edi,1)
jmp isEND
great:
addb %bl, 0x08
movb %bl,textout(,%edi,1)
jmp isEND
other:
movb %bl,textout(,%edi,1)
jmp isEND
isEND:
incl %edi
cmpl %eax, %edi
jl check_loop
ret