【问题标题】:Jump instruction doesn't work跳转指令不起作用
【发布时间】:2014-05-19 09:26:01
【问题描述】:
 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'它永远不会执行。谁能告诉我为什么?

【问题讨论】:

  • 因为条件从未满足?

标签: linux assembly att


【解决方案1】:

这就是原因:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多