data
 tekst: .ascii "heLLo WoRlD 93a9s\0"
 tekst_len = . - tekst
 .text
.global _start
   _start:
   mov $tekst_len, %edx
   petla:
cmp $tekst_len, %edx
je koniec
cmpb $'a', tekst(,%edx,1)
jg zamien    #?????????????????????????????????????
inc %edx
  jmp petla
  zamien:
  movb $'X', tekst(,%edx,1)
  inc %edx
  jmp petla
  koniec:
movl $4, %eax
movl $1, %ebx
movl $tekst, %ecx
movl $tekst_len, %edx
int $0x80

我有这样一个问题:“jg zamien”指令不起作用。不管我选择“jl”,“je”什么条件,它都不会执行。有人能告诉我为什么吗?

最佳答案

这就是原因:

mov $tekst_len, %edx
petla:
cmp $tekst_len, %edx  <-- edx will equal $tekst_len here on the first iteration
je koniec

在循环的第一次迭代中,您总是跳到koniec
mov应该是mov $0,%edx

关于linux - 跳转指令不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22907285/

10-12 23:45