Калькулятор.с ошибкой - Assembler

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

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

вводим первое число, второе, действие. Сравниваем знаки с кодами знаков и по меткам к совершению действия. Успеваю ввести только числа и сразу выводит непонятный результат при этом действие еще не успел задать!!!
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>

int main(int argc, char* argv[])
{ char plus='+',minus='-',umn='*',delit='/',s[260];
 int d;
 float FIRST,SECOND,RESULT;
 printf("1=");
 scanf("%f",&FIRST);
 printf("\n2=");
 
 scanf("%f",&SECOND);
 printf("\ns=");
 
    scanf("=%s", &s);
 if (s[0]==plus) d=43;//kod '+'
 if (s[0]==minus) d=45;//lod '-' ... t.d.
 if (s[0]==delit) d=47;
 if (s[0]==umn) d=42;
 
    _asm 
    {
        mov ecx,'+';
        sub ecx, d;
        jecxz SLOZHENIE;
        xor ecx,ecx;
        mov ecx,'-';
        sub ecx, d;
        jecxz VICHITANIE;
        xor ecx,ecx;
        mov ecx,'*';
        sub ecx, d;
        jecxz UMNOZHENIE;
        xor ecx,ecx;
        mov ecx,'/';
        sub ecx, d;
        jecxz DELENIE;
        xor ecx,ecx;
        jmp finishh;
 
SLOZHENIE:
        
        fld [SECOND];
        fld [FIRST];
        fadd st,st(1);
        fstp [RESULT];
        jmp finishh;
VICHITANIE:
        
        fld [SECOND];
        fld [FIRST];
        fsub st,st(1);
        fstp [RESULT];
        jmp finishh;
 
UMNOZHENIE:
        
        fld [SECOND];
        fld [FIRST];
        fmul st,st(1);
        fstp [RESULT];
        jmp finishh;
DELENIE:
        
        fld [SECOND];
        fld [FIRST];
        fdiv st,st(1);
        fstp [RESULT];
        jmp finishh;
 
     finishh:   
    
    }
    
    printf("\n%f\n",RESULT);
    _getch();
    return 0;
}

Решение задачи: «Калькулятор.с ошибкой»

textual
Листинг программы
"=%s"

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы