Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2013, 22:51   #1
Evelin_18
 
Регистрация: 09.12.2012
Сообщений: 8
По умолчанию Ассемблерные вставки пример

вот условие:
y1 = 8 +|x|, если x<1
иначе
y1 = 3, если x>=1

y2 = |a|*2, если x>=1
иначе
y2 = a+1, если x<1

Выводит ошибку если вводить x=0 и a=31
вот код
Код:
#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{int a,x,y,y1,y2;
int ot;
    cout<<"vvedite x = "<<endl;
    cin>>x;
    cout<<"vvedite a = "<<endl;
    cin>>a;
 
    _asm
    {
        mov eax,x
        cmp eax,1
        jl p1 
   
        mov y1,3
        jmp per
     
     p1:
        mov eax,x
         neg eax
        mov ebx,8
        add eax,ebx
        mov y1,eax
 
    per:
        mov eax,x
        cmp eax,1
        jge p2
 
        mov eax,a
        add eax,1
        mov y2,eax
        jmp ennd
    
    p2:
        mov eax,a
        m2:neg eax
        js m2
        mov ebx,2
        mul ebx
        mov y2,eax
 
    ennd:
        mov eax,y1
        mov ebx,y2
        div ebx
        mov y,eax
        mov ot,edx
}
    cout<<"y1="<<y1<<endl;
    cout<<"y2="<<y2<<endl;
 
cout<<"y="<<y<<"."<<ot<<endl;   
    system("pause");
    return 0;
}
Выводит вот такую ошибку
Как это исправить?
Изображения
Тип файла: jpg 0 (1).jpg (63.6 Кб, 118 просмотров)
Evelin_18 вне форума Ответить с цитированием
Старый 13.12.2013, 22:59   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Обнулите EDX перед делением на EBX.
DIV делит 64бит из EDX:EAX. Там явно лежит "мусор", в результате получается переполнение.
waleri вне форума Ответить с цитированием
Старый 13.12.2013, 23:02   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Xor edx,edx

не успел
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблерные вставки. Stasiksis Общие вопросы C/C++ 2 14.02.2013 22:34
Ассемблерные вставки в СИ sunny_alice Помощь студентам 0 22.12.2012 00:54
ассемблерные вставки в c++ chupchupps Помощь студентам 1 09.02.2011 11:54
Ассемблерные вставки в Delphi Jupiter Общие вопросы Delphi 2 24.08.2008 16:41
Ассемблерные вставки Assassin Помощь студентам 1 26.05.2008 08:19