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/