Среднее арифметическое с 6 чисел - Assembler

Узнай цену своей работы

Формулировка задачи:

Добрый вечер уважаемые знатоки Столкнулся я с проблемой в одной учебной задаче и решить мне ее почему-то не удается, прога должна считать и выводить среднее с десятыми 6 чисел. Это она и делает, но работает к сожалению не правильно. К примеру среднее чисел (1+2+3+4+5+6)/6 = 3.3 Вопрос: что я делаю не так? /* Не обращайте внимания на польский язык, учусь на данный момент в Польше и должен писать на польском */
Листинг программы
  1. int main(){
  2. __int16 zme1 = 0;
  3. __int16 zme2 = 0;
  4. __int16 zme3 = 0;
  5. __int16 zme4 = 0;
  6. __int16 zme5 = 0;
  7. __int16 zme6 = 0;
  8. __int32 zme7 = 0;
  9. cout << "Podaj liczby 1 : " << endl;
  10. cin >> zme1;
  11. cout << "Podaj liczbu 2 : " << endl;
  12. cin >> zme2;
  13. cout << "Podaj liczby 3 : " << endl;
  14. cin >> zme3;
  15. cout << "Podaj liczbu 4 : " << endl;
  16. cin >> zme4;
  17. cout << "Podaj liczby 5 : " << endl;
  18. cin >> zme5;
  19. cout << "Podaj liczbu 6 : " << endl;
  20. cin >> zme6;
  21. _asm {
  22. mov ax, zme1;
  23. push ax;
  24. mov ax, zme2;
  25. push ax;
  26. mov ax, zme3;
  27. push ax;
  28. mov ax, zme4;
  29. push ax;
  30. mov ax, zme5;
  31. push ax;
  32. mov ax, zme6;
  33. push ax;
  34. call proc;
  35. add ESP, 12;
  36. jmp finish;
  37. proc:
  38. mov BX, 0;
  39. mov ECX, 6;
  40. add ESP, 4;
  41. cykl:
  42. pop AX;
  43. add BX, AX;
  44. loop cykl;
  45. xor EDX, EDX;
  46. mov CX, 6;
  47. mov AX, BX;
  48. div CX;
  49. sub ESP, 16;
  50. ret;
  51. finish:
  52. mov zme1, AX;
  53. mov zme7, edx;
  54. }
  55. cout << "Wynik to : " << zme1 << '.' << zme7 << endl;
  56. system("pause");
  57. }

Решение задачи: «Среднее арифметическое с 6 чисел»

textual
Листинг программы
  1. model tiny
  2. .code
  3. org 100h
  4. szMass  equ 8
  5. start:  lea di,mass
  6.  
  7.     xor ax,ax
  8.     mov cx,szMass
  9. @@01:   add al,[di]
  10.     adc ah,0
  11.     inc di
  12.     loop    @@01
  13. ;
  14.     mov ax,321
  15.     xor si,si
  16.     mov bx,10
  17. @@02:   mov cx,szMass
  18.     xor dx,dx
  19.     div cx
  20.     push    dx
  21.     call    outNum
  22.     pop ax
  23.     or  ax,ax
  24.     jz  @@03
  25.     or  si,si
  26.     jnz @@1
  27.     push    ax
  28.     mov al,'.'
  29.     int 29h
  30.     mov si,1
  31.     pop ax
  32. @@1:    xor dx,dx
  33.     mul bx
  34.     jmp @@02
  35. @@03:   ret
  36. OutNum: xor cx,cx
  37. @@04:   xor dx,dx
  38.     div bx
  39.     push    dx
  40.     inc cx
  41.     or  ax,ax
  42.     jnz @@04
  43. @@05:   pop ax
  44.     add ax,'0'
  45.     int 29h
  46.     loop    @@05
  47.     ret
  48. ;
  49. Mass    label   byte
  50. i_mass  =   1
  51.     rept    szMass
  52.     db  i_mass
  53. i_mass  =   i_mass + 1
  54.     endm

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы