Advertisement
pasholnahuy

Untitled

Oct 7th, 2023
1,610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  1 .global supersum                                                                                                                                                                          
  3.  2                                                                                                                                                                                          
  4.  3 supersum:                                                                                                                                                                                
  5.  4     xor %edx, %edx // буфер для промежуточной суммы                                                                                                                                      
  6.  5     cmp %esi, %edi                                                                                                                                                                        
  7.  6     jle swap                                                                                                                                                                              
  8.  7     push %ebx                                                                                                                                                                            
  9.  8     mov $-1, %ebx                                                                                                                                                                        
  10.  9     jmp put                                                                                                                                                                              
  11. 10                                                                                                                                                                                          
  12. 11 put:                                                                                                                                                                                      
  13. 12     xor %edx, %edx                                                                                                                                                                        
  14. 13     inc %ebx                                                                                                                                                                              
  15. 14     cmp %ebx, %edi                                                                                                                                                                        
  16. 15     jle loop                                                                                                                                                                              
  17. 16     mov (%eax, %ebx, 1), %edx                                                                                                                                                            
  18. 17     mov %edx, (%ecx, %ebx, 1)                                                                                                                                                            
  19. 18     jmp loop                                                                                                                                                                              
  20. 19                                                                                                                                                                                          
  21. 20 loop:                                                                                                                                                                                    
  22. 21     inc %eax                                                                                                                                                                              
  23. 22     cmp %eax, %edi                                                                                                                                                                        
  24. 23     jg add_remain                                                                                                                                                                        
  25. 24     addw (%ecx, %eax, 1), %dx                                                                                                                                                            
  26. 25     addw (%ebx, %eax, 1), %dx                                                                                                                                                            
  27. 26     mov %dl, (%ecx, %eax, 1)                                                                                                                                                              
  28. 27     mov %dh, %dl                                                                                                                                                                          
  29. 28     xor %dh, %dh                                                                                                                                                                          
  30. 29     jmp loop                                                                                                                                                                              
  31. 30                                                                                                                                                                                          
  32. 31 swap:                                                                                                                                                                                    
  33. 32     xchg %eax, %ebx                                                                                                                                                                      
  34. 33     xchg %esi, %edi                                                                                                                                                                      
  35. 34     jmp supersum                                                                                                                                                                          
  36. 35                                                                                                                                                                                          
  37. 36 add_remain:                                                                                                                                                                              
  38. 37     addw (%ecx, %eax, 1), %dx                                                                                                                                                            
  39. 38     mov %dl, (%ecx, %eax, 1)                                                                                                                                                              
  40. 39     mov %dh, %dl                                                                                                                                                                          
  41. 40     xor %dh, %dh                                                                                                                                                                          
  42. 41     cmp $0, %dl                                                                                                                                                                          
  43. 42     jnz loop                                                                                                                                                                              
  44. 43                                                                                                                                                                                          
  45. 44 call_ret:                                                                                                                                                                                
  46. 45     mov (%esp), %ebx                                                                                                                                                                      
  47. 46     ret                                                                                                                                                                                  
  48. 47                                                                                                                                                                                          
  49.                                                                                                                                                                                              
  50.                                                                                                                                                
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement