Changes

Jump to: navigation, search

Assembly Language

678 bytes added, 10:47, 7 January 2014
x86
=== x86 ===
Here is a "Hello, World!" program in x86 assembler for a Linux system, using the Nasm syntax:
section .text
global _start
_start:
mov edx,len ; message length(bytes) mov ecx,msg ; message location(memory address) mov ebx,1 ; file descriptor : 1 is stdout mov eax,4 ; kernel syscall number: 4 is sys_write
int 0x80
mov eax,1 ; kernel syscall number: 1 is sys_exit
int 0x80
section .rodata
msg db 'Hello, world!\n',0xa
len equ $ - msg
 
=== ARM (32-bit) ===
 
This is written in GNU assembler (gas / as) syntax:
 
.text
.globl _start
_start:
mov %r0, $1 /* file descriptor: 1 is stdout */
ldr %r1, =msg /* message location (memory address) */
ldr %r2, =len /* message length (bytes) */
mov %r7, $4 /* write is syscall #4 */
swi $0 /* invoke syscall */
/* syscall exit(int status) */
mov %r0, $0 /* status -> 0 */
mov %r7, $1 /* exit is syscall #1 */
swi $0 /* invoke syscall */
.data
msg:
.ascii "Hello, world!\n"
len = . - msg

Navigation menu