fork download
  1. bits 32
  2.  
  3. section .data
  4. num1 dd 100 ; Делимое
  5. num2 dd 10 ; Делитель
  6. msg db "Quotient (lower byte): 0x", 0
  7. newline db 10
  8.  
  9. section .bss
  10. hex_digit resb 2
  11.  
  12. section .text
  13. global _start
  14.  
  15. _start:
  16. ; Загружаем числа в регистры
  17. mov eax, [num1] ; EAX = num1 (делимое)
  18. mov ebx, [num2] ; EBX = num2 (делитель)
  19.  
  20. ; Делим числа (беззнаковое деление)
  21. xor edx, edx ; EDX:EAX = делимое (64 bit). EDX - high part, EAX - low part
  22. div ebx ; EAX = EAX / EBX (частное), EDX = EAX % EBX (остаток)
  23.  
  24. ; Получаем младший байт частного и преобразуем в hex
  25. mov al, al
  26. and al, 0x0F
  27.  
  28. cmp al, 0x0A
  29. jl is_digit
  30. add al, 0x37
  31. jmp save_digit
  32.  
  33. is_digit:
  34. add al, 0x30
  35.  
  36. save_digit:
  37. mov [hex_digit], al
  38. mov byte [hex_digit+1], 0
  39.  
  40. ; Выводим сообщение и результат
  41. mov eax, 4 ; sys_write
  42. mov ebx, 1 ; stdout
  43. mov ecx, msg ; message address
  44. mov edx, 24 ; message length
  45. int 0x80
  46.  
  47. mov eax, 4
  48. mov ebx, 1
  49. mov ecx, hex_digit
  50. mov edx, 1
  51. int 0x80
  52. ; Выводим новую строку
  53. mov eax, 4
  54. mov ebx, 1
  55. mov ecx, newline
  56. mov edx, 1
  57. int 0x80
  58.  
  59. ; Выход
  60. mov eax, 1 ; sys_exit
  61. xor ebx, ebx
  62. int 0x80
  63.  
Success #stdin #stdout 0s 5272KB
stdin
Standard input is empty
stdout
Quotient (lower byte): 0A