How to jump to an address saved in a register in intel assembly?

user3001010

If I calculate an address of a label and store it in the eax register, how can I conditionally jump (using JE) to eax?

jmp eax

compiles, but I didn't check if it works.

je eax

doesn't compile (invalid combination of opcode and operands). Why the difference? And how can I jump if equal to eax?

Michael

There simply is no such form of je. What you can do is put a relative conditional jump based on the opposite condition, followed by an unconditional register-indirect jump:

jne skip
jmp eax
skip:

You could make a macro out of this to save you from writing the same thing over and over. For example, in NASM syntax that macro could look like this:

%macro je_reg 1 
    jne %%skip 
    jmp %1 
    %%skip: 
%endmacro

And could be used like this:

je_reg eax
je_reg ebx

The macro could be generalized to work with any condition code:

%macro jcc_reg 2 
    j%-1 %%skip   ; %-1 expands to the inverse of the condition in the first macro argument
    jmp %2 
    %%skip: 
%endmacro

; Example usage
jcc_reg e,eax
jcc_reg no,ebx

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

add number to address in an address register assembly language

From Dev

add number to address in an address register assembly language

From Dev

ARM assembly branch to address inside register or memory

From Dev

MIPS assembly language - temporary register vs saved registers

From Dev

GCC inline assembly intel syntax "Error: invalid use of register"

From Dev

How to print register address in GDB?

From Dev

How to avoid goto and jump when coding in assembly?

From Dev

How to get asm to jump to a variable address in c?

From Dev

How to register a COM assembly in Windows 7?

From Dev

How to make VSIX installer to register assembly automatically

From Dev

MvvmCross, how to register Service in another assembly?

From Dev

How do you divide a register in assembly?

From Dev

MvvmCross, how to register Service in another assembly?

From Dev

Assembly- How to input interrupt and save it in register

From Dev

Moving the memory address of a 32 bit register [esi] into an 8 bit low register in Assembly language x86

From Dev

C++ mid-function hook: get register values and jump back [x86 assembly on windows]

From Dev

How to register for a vendor OUI MAC address prefix?

From Dev

How would this jump instruction be encoded in Intel64?

From Dev

How to modify return address on Stack in C or Assembly

From Dev

How to modify return address on Stack in C or Assembly

From Dev

Jump if overflow (Assembly)

From Dev

Manual Null-Termination on Unix using Intel x86 Assembly (address vs value in memory operands)?

From Dev

Assembly: Segment register & offset register

From Dev

Assembly: Segment register & offset register

From Dev

Intel register naming

From Dev

Get register value by detouring specific address [x86 assembly on Windows]

From Dev

Why does move copy variable address to register, in x64 assembly?

From Dev

How do you use the buffer? [intel based assembly]

From Dev

How to use Intel's RDRAND using inline assembly with .Net

Related Related

  1. 1

    add number to address in an address register assembly language

  2. 2

    add number to address in an address register assembly language

  3. 3

    ARM assembly branch to address inside register or memory

  4. 4

    MIPS assembly language - temporary register vs saved registers

  5. 5

    GCC inline assembly intel syntax "Error: invalid use of register"

  6. 6

    How to print register address in GDB?

  7. 7

    How to avoid goto and jump when coding in assembly?

  8. 8

    How to get asm to jump to a variable address in c?

  9. 9

    How to register a COM assembly in Windows 7?

  10. 10

    How to make VSIX installer to register assembly automatically

  11. 11

    MvvmCross, how to register Service in another assembly?

  12. 12

    How do you divide a register in assembly?

  13. 13

    MvvmCross, how to register Service in another assembly?

  14. 14

    Assembly- How to input interrupt and save it in register

  15. 15

    Moving the memory address of a 32 bit register [esi] into an 8 bit low register in Assembly language x86

  16. 16

    C++ mid-function hook: get register values and jump back [x86 assembly on windows]

  17. 17

    How to register for a vendor OUI MAC address prefix?

  18. 18

    How would this jump instruction be encoded in Intel64?

  19. 19

    How to modify return address on Stack in C or Assembly

  20. 20

    How to modify return address on Stack in C or Assembly

  21. 21

    Jump if overflow (Assembly)

  22. 22

    Manual Null-Termination on Unix using Intel x86 Assembly (address vs value in memory operands)?

  23. 23

    Assembly: Segment register & offset register

  24. 24

    Assembly: Segment register & offset register

  25. 25

    Intel register naming

  26. 26

    Get register value by detouring specific address [x86 assembly on Windows]

  27. 27

    Why does move copy variable address to register, in x64 assembly?

  28. 28

    How do you use the buffer? [intel based assembly]

  29. 29

    How to use Intel's RDRAND using inline assembly with .Net

HotTag

Archive