Advertisement
Guest User

nanker

a guest
Feb 1st, 2015
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. sys_exit equ 1
  2. sys_read equ 3
  3. sys_write equ 4
  4. sys_open equ 5
  5. sys_close equ 6
  6. sys_brk equ 45
  7. sys_newstat equ 106
  8.  
  9. O_RDONLY equ 0
  10. O_WRONLY equ 1
  11. O_RDWR equ 2
  12.  
  13. stdin equ 0
  14. stdout equ 1
  15. stderr equ 2
  16.  
  17. struc STAT
  18. .st_dev: resd 1
  19. .st_ino: resd 1
  20. .st_mode: resw 1
  21. .st_nlink: resw 1
  22. .st_uid: resw 1
  23. .st_gid: resw 1
  24. .st_rdev: resd 1
  25. .st_size: resd 1
  26. .st_blksize: resd 1
  27. .st_blocks: resd 1
  28. .st_atime: resd 1
  29. .st_atime_nsec: resd 1
  30. .st_mtime: resd 1
  31. .st_mtime_nsec: resd 1
  32. .st_ctime: resd 1
  33. .st_ctime_nsec: resd 1
  34. .unused4: resd 1
  35. .unused5: resd 1
  36. endstruc
  37.  
  38. %define sizeof(x) x %+ _size
  39.  
  40. SECTION .data
  41. szFile db "TEST", 0
  42. File_Len equ $-szFile
  43.  
  44.  
  45. SECTION .bss
  46. stat resb sizeof(STAT)
  47. Org_Break resd 1
  48. TempBuf resd 1
  49.  
  50. SECTION .text
  51. global _start
  52.  
  53. _start:
  54. ;~ Get file size
  55. mov ebx, szFile
  56. mov ecx, stat
  57. mov eax, sys_newstat
  58. int 80H
  59.  
  60. ;~ Get end of bss section
  61. xor ebx, ebx
  62. mov eax, sys_brk
  63. int 80H
  64. mov [Org_Break], eax
  65. mov [TempBuf], eax
  66. push eax
  67.  
  68. ; extend it by file size
  69. pop ebx
  70. add ebx, dword [stat + STAT.st_size]
  71. mov eax, sys_brk
  72. int 80H
  73.  
  74. ;~ open file
  75. mov ebx, szFile
  76. mov ecx, O_RDONLY
  77. xor edx, edx
  78. mov eax, sys_open
  79. int 80H
  80. xchg eax, esi
  81.  
  82. ;~ read in file to buffer
  83. mov ebx, esi
  84. mov ecx, [TempBuf]
  85. mov edx, dword [stat + STAT.st_size]
  86. mov eax, sys_read
  87. int 80H
  88.  
  89. ;~ display to terminal
  90. mov ebx, stdout
  91. mov ecx, [TempBuf]
  92. mov edx, eax
  93. mov eax, sys_write
  94. int 80H
  95.  
  96. ;~ close file
  97. mov ebx, esi
  98. mov eax, sys_close
  99. int 80H
  100.  
  101. ;~ "free" memory
  102. mov ebx, [Org_Break]
  103. mov eax, sys_brk
  104. int 80H
  105.  
  106. Exit:
  107. mov eax, sys_exit
  108. xor ebx, ebx
  109. int 80H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement