fork download
  1. section .data
  2. a db 0x01, 0x02, 0x03 ; a = 0x030201
  3. b db 0x05, 0x06, 0x07 ; b = 0x070605
  4. c db 0x09, 0x0A, 0x0B ; c = 0x0B0A09
  5. d db 0x00, 0x00, 0x00 ; результат (3 байта)
  6.  
  7. section .text
  8. global _start
  9.  
  10. _start:
  11. ; Загружаем b в eax
  12. movzx eax, byte [b]
  13. movzx ebx, byte [b+1]
  14. movzx ecx, byte [b+2]
  15. shl ecx, 16
  16. shl ebx, 8
  17. or eax, ebx
  18. or eax, ecx ; eax = b
  19.  
  20. sub eax, 1 ; b - 1
  21.  
  22. ; Загружаем a в ebx
  23. movzx ebx, byte [a]
  24. movzx ecx, byte [a+1]
  25. movzx edx, byte [a+2]
  26. shl edx, 16
  27. shl ecx, 8
  28. or ebx, ecx
  29. or ebx, edx ; ebx = a
  30.  
  31. add eax, ebx ; b - 1 + a
  32.  
  33. ; Загружаем c в ebx
  34. movzx ebx, byte [c]
  35. movzx ecx, byte [c+1]
  36. movzx edx, byte [c+2]
  37. shl edx, 16
  38. shl ecx, 8
  39. or ebx, ecx
  40. or ebx, edx ; ebx = c
  41.  
  42. sub eax, ebx ; (b - 1 + a) - c
  43.  
  44. ; Сохраняем результат в d (3 байта)
  45. mov [d], al
  46. shr eax, 8
  47. mov [d+1], al
  48. shr eax, 8
  49. mov [d+2], al
  50.  
  51. ; Завершаем программу
  52. mov eax, 1 ; syscall: exit
  53. xor ebx, ebx ; status 0
  54. int 0x80
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty