Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. extern "C" //ЭТО ИЗ MAIN.CPP ОБЪЯВЛЕНИЕ ФУНКЦИЙ
  2. {
  3. void in_str(unsigned short int num, char* ans);
  4. void in_num(char* str, int len, unsigned short int* ans);
  5. }
  6. ; А ВОТ ЭТО НАЧАЛО ASM КОДА
  7.  
  8. .586
  9. .model flat, C
  10. .code
  11.  
  12. ; 1. 2. 4. 1. В
  13. ; 16 бит без учета знака шестнадцатиричная near через кадр стека
  14. ; in_str(unsigned short int num, char* ans);
  15. ; +8 +12
  16.  
  17. in_str proc
  18. push ebp
  19. mov ebp, esp
  20.  
  21. mov eax, [ebp + 8] ; число тут
  22.  
  23. xor ecx, ecx ; в ecx будет хранится кол-во знаков нового числа
  24. mov ebx, 16 ; в bx основания системы счисления
  25.  
  26. delim:
  27. xor edx, edx
  28. div ebx ; в edx кладется остаток от деления eax, в eax остается целая часть от деления
  29.  
  30. push edx
  31. inc ecx
  32.  
  33. test eax, eax
  34. jnz delim
  35.  
  36. xor esi, esi ; индекс элемента
  37. mov ebx, [ebp + 12] ; смещение на строку
  38. write:
  39. pop eax
  40. and eax, 15 ; нулим все кроме числа
  41.  
  42. cmp eax, 9 ; если нужно использовать
  43. jg char
  44.  
  45. add eax, 48
  46. mov [ebx + esi], eax
  47. inc esi
  48. jmp end_loop
  49.  
  50. char:
  51. add eax, 55
  52. mov [ebx + esi], eax
  53. inc esi
  54. jmp end_loop
  55.  
  56. end_loop:
  57. loop write
  58.  
  59.  
  60. pop ebp
  61. ret
  62. in_str endp
  63. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement