Среднее арифметическое с 6 чисел - Assembler
Формулировка задачи:
Добрый вечер уважаемые знатоки
Столкнулся я с проблемой в одной учебной задаче и решить мне ее почему-то не удается, прога должна считать и выводить среднее с десятыми 6 чисел. Это она и делает, но работает к сожалению не правильно. К примеру среднее чисел (1+2+3+4+5+6)/6 = 3.3
Вопрос: что я делаю не так?
/* Не обращайте внимания на польский язык, учусь на данный момент в Польше и должен писать на польском */
int main(){
__int16 zme1 = 0;
__int16 zme2 = 0;
__int16 zme3 = 0;
__int16 zme4 = 0;
__int16 zme5 = 0;
__int16 zme6 = 0;
__int32 zme7 = 0;
cout << "Podaj liczby 1 : " << endl;
cin >> zme1;
cout << "Podaj liczbu 2 : " << endl;
cin >> zme2;
cout << "Podaj liczby 3 : " << endl;
cin >> zme3;
cout << "Podaj liczbu 4 : " << endl;
cin >> zme4;
cout << "Podaj liczby 5 : " << endl;
cin >> zme5;
cout << "Podaj liczbu 6 : " << endl;
cin >> zme6;
_asm {
mov ax, zme1;
push ax;
mov ax, zme2;
push ax;
mov ax, zme3;
push ax;
mov ax, zme4;
push ax;
mov ax, zme5;
push ax;
mov ax, zme6;
push ax;
call proc;
add ESP, 12;
jmp finish;
proc:
mov BX, 0;
mov ECX, 6;
add ESP, 4;
cykl:
pop AX;
add BX, AX;
loop cykl;
xor EDX, EDX;
mov CX, 6;
mov AX, BX;
div CX;
sub ESP, 16;
ret;
finish:
mov zme1, AX;
mov zme7, edx;
}
cout << "Wynik to : " << zme1 << '.' << zme7 << endl;
system("pause");
}Решение задачи: «Среднее арифметическое с 6 чисел»
textual
Листинг программы
model tiny .code org 100h szMass equ 8 start: lea di,mass xor ax,ax mov cx,szMass @@01: add al,[di] adc ah,0 inc di loop @@01 ; mov ax,321 xor si,si mov bx,10 @@02: mov cx,szMass xor dx,dx div cx push dx call outNum pop ax or ax,ax jz @@03 or si,si jnz @@1 push ax mov al,'.' int 29h mov si,1 pop ax @@1: xor dx,dx mul bx jmp @@02 @@03: ret OutNum: xor cx,cx @@04: xor dx,dx div bx push dx inc cx or ax,ax jnz @@04 @@05: pop ax add ax,'0' int 29h loop @@05 ret ; Mass label byte i_mass = 1 rept szMass db i_mass i_mass = i_mass + 1 endm