汇编cmp SIGSEV分段错误

时间:2016-03-15 22:45:58

标签: linux assembly x86 att

我在汇编中尝试代码,我有一点问题。我的程序停止了SIGSEV分段错误。 GDB停在

  

cmpb%bl,0x41

在check_loop中

。程序只检查每个字符,并在小写,大字或其他

时修改它
.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

0 个答案:

没有答案