title: nasm,86_64,linux,"hello world" program. when link ,it says "relocation truncated to fit"
body: <pre><code>[section .data]
  strHello db "Hello World"
  STRLEN equ $-strHello
  MessageLength equ 9
  Message db "hi!!!!   "
  
  
  [section .text]
  global main
  main:
  mov edx,STRLEN;
  mov ecx,strHello;
  mov ebx,1
  mov eax,4
  int 0x80
  
  
  call DispStr
  
  
  mov ebx,0   
  mov eax,1   
  int 0x80    
  
  
  DispStr:      
    mov ax,MessageLength
    mov dh,0
    mul dh
    add ax,Message
    mov bp,ax 
    mov ax,ds
    mov es,ax 
    mov cx,MessageLength
    mov ax,01301h 
    mov bx,0007h
    mov dl,0
    int 10h
    ret 
  </code></pre>
  
  <p>Compile and run:</p>
  
  <pre><code>$ nasm -f elf64 helloworld.asm -o helloworld.o
  $ gcc -s -o helloworld helloworld.o
  helloworld.o: In function `DispStr':
  helloworld.asm:(.text+0x31): relocation truncated to fit: R_X86_64_16 against `.data'
  collect2: ld return 1
  </code></pre>