Assembly language real world examples

Intel x86 family assembly language (CPU used on PCs)


.code start: 	        mov ah, 09h 
			lea dx, msg 
			int 21h 
			mov ax, 4C00
			int 21h 

PowerPC assembly language (CPU used on Wii)

_start:

movl    $len,%edx   	# 3rd argument: message len
movl    $msg,%ecx   	# 2nd argument: message ptr
movl    $1,%ebx     	# 1st argument: file handle 
movl    $4,%eax     	# system call number 	
int     $0x80       	# call kernel
movl    $0,%ebx     	# 1st argument: exit code
movl    $1,%eax     	# system call number 
int     $0x80       	# call kernel

ARM assembly language (CPU used on most mobile phones)

add     r0, r0, #2    // Add immediate:   r0 += 2;
add     r0, r0, r1    // Add register:    r0 += r1;
add     r0, r1, r2    // Add registers:   r0= r1 + r2;
ldr     r0, [r2]      // Load int from memory: r0= r2[0];
ldr     r0, [r2, #4]  // Load int from memory: r0= r2[1];
ldmia   r2, {r0, r1}  // Load multiple: r0= r2[0]; r1= r2[1];

Intel 8051 assembly language (CPU used in embedded systems, uses Harvard architecture)

init_uart_intr: 
clr     ea        
orl     pcon, #10000000b  ;set double baud rate        
anl     tmod, #00001111b  ;clear all timer1 bits in tmod        
orl     tmod, #00100000b  ;set timer1 as 8 bit auto reload        
clr     tr1               ;make sure timer1 isn't running        
clr     tf1        
mov     a, #baud_const   ;256 - (crystal / (baud * 192))        
mov     th1, a           ;set timer1 rate        
mov     tl1, a        
mov     scon, #01010000b        	;config serial port
mov     rx_buf_head, #rx_buf    	;set up empty receive buffer        
mov     rx_buf_tail, #rx_buf        
mov     tx_buf_head, #0      ;set up transmit buffer as empty        
mov     tx_buf_tail, #0      ;and no tx interrupt expected        
setb    tr1                  ;start timer1        
setb    es                   ;enable serial port interrupt        
setb    ea                   ;also turn on general interrupts