Advertise

Monday, 16 September 2013

Assembly Language Primer For Hackers (Part 6) Moving Data




Description
: This is Part 6 of the "Assembly Language Primer for Hackers" video series. Please begin here with Part 1, if you have not already done so. In this video we look at how to transfer data between registers and memory locations using the MOV series of instructions. We discuss data transfer between registers, immediate values and registers, memory locations and registers, immediate values and memory locations, indexed memory addressing schemes, indirect addressing using registers and many other important concepts. It is important to note that all the above are explained in detail using example code in the video. Please download the MovDemo.s code before you begin with the tutorial.

Code:
# Demo program to show how to use Data types and MOVx instructions

.data

    HelloWorld:
        .ascii "Hello World!"

    ByteLocation:
        .byte 10

    Int32:
        .int 2
    Int16:
        .short 3
    Float:
        .float 10.23

    IntegerArray:
        .int 10,20,30,40,50

 
.bss
    .comm LargeBuffer, 10000

.text

    .globl _start

    _start:
     
        nop
     
        # 1. MOV immediate value into register

        movl $10, %eax

        # 2. MOV immediate value into memory location

        movw $50, Int16
     
        # 3. MOV data between registers

        movl %eax, %ebx


        # 4. MOV data from memory to register

        movl Int32, %eax

        # 5. MOV data from register to memory

        movb $3, %al
        movb %al, ByteLocation

        # 6. MOV data into an indexed memory location
        # Location is decided by BaseAddress(Offset, Index, DataSize)
        # Offset and Index must be registers, Datasize can be a numerical value

        movl $0, %ecx
        movl $2, %edi
        movl $22, IntegerArray(%ecx,%edi , 4)

        # 7. Indirect addressing using registers

        movl $Int32, %eax
        movl (%eax), %ebx

        movl $9, (%eax)

 

        # Exit syscall to exit the program

        movl $1, %eax
        movl $0, %ebx
        int $0x80

Disclaimer: We are a infosec video aggregator and this video is linked from an external website. The original author may be different from the user re-posting/linking it here. Please do not assume the authors to be same without verifying. 

Security tube is also providing linux Assembly course for 99$ here -> http://securitytube-training.com/online-...ly-expert/
 
World of Hacker © 2011 Creative Commons License
World of Hacker by KroKite is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at http://www.worldofhacker.com.
Permissions beyond the scope of this license may be available at https://groups.google.com/forum/#!newtopic/hackerforum.