Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Mogost
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51

Вычисление полинома по схеме Горнера (исправление ошибки)

06.10.2013, 22:19. Показов 2055. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите исправить ошибку.
При отрицательном x программа считает неправильно.
При заданных параметрах ассемблер выдает 995917
Аналогичный код на си -52555
Использовать регистры EAX и тд нельзя. Нужно исправить именно это.
Код на ассемблере и си прилагаю.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
        TITLE   lab1
        PAGE    52,72
        INCLUDE macroio.inc 
DATA   SEGMENT
cr  equ 13  ; Каретка
lf  equ 10  ; Перевод строки
 
n   dw  4
a   dw  500,400,111,500
x   dw  -5 
vr  dw  0
o   dd  0
flag dw 0
t dw 0
str1    db  "Массив x^n........x^1....1",lf,"$"
str2    db  "Ответ  - $"
str3    db  "X = $"
viv db  240 dup(?)
DATA   ENDS
 
PROG   SEGMENT 'CODE'
       ASSUME  DS:DATA,ES:DATA,CS:PROG,SS:SPROG
START:
       MOV     AX,DATA 
       MOV     DS,AX
       MOV     ES,AX
 
    @DispStr    str1
    mputi       2,n,a,viv
    @DispStr    viv
    @DispCh cr lf
 
    @DispStr    str3    
    puti        2,x,viv
    @DispStr    viv
    @DispCh cr lf
    
;Начало вычислений
    mov cx, n;
    mov si, 0
    cmp x,0
    jg LN1
    mov flag, 1
    neg x
LN1:
;;o=o*x
    mov ax, word ptr o  
    mul x
    mov word ptr o, ax
    mov vr, dx
    mov ax, word ptr o+2
    mul x
    adc ax, vr
    mov word ptr o+2, ax
;;/o=o*x
;;/////o=-o if need
    cmp flag,0
    je LN3
    mov ax, word ptr o
    neg ax
    add ax,1
    mov word ptr o, ax
    mov ax,word ptr o+2
    neg ax
    adc ax,0
    mov word ptr o+2,ax
LN3:
;;/////
;;o=o+a[i]
    mov ax, word ptr o
    add ax, a[si]
    mov word ptr o, ax
    adc ax, 0
    mov ax, word ptr o+2
;;/o=o+a[i]
    add si, 2   
loop  LN1
;Конец вычислений
    @DispStr    str2    
    puti        4,o,viv
    @DispStr    viv
    @DispCh cr lf
    
@Exit
PROG ENDS
 
SPROG SEGMENT STACK 'STACK'
  DB  512 DUP(?)
SPROG ENDS
  END  START
C
1
2
3
4
5
6
7
8
9
    int a[]={500,400,111,500};
    int o=0;
    int x=-5;
    int n=4;
    for(int i=0;i<n;i++)
    {
        o=(o*x)+a[i];
        cout<<"o="<<o<<endl;
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2013, 22:19
Ответы с готовыми решениями:

Вычисление полинома по схеме Горнера
Дана вроде бы стандартная задача, на вычисление суммы, но портит ее то, что надо вычислить ее по схеме...

Вычисление производных полинома в данной точке по схеме Горнера
Помогите составить программу на паскале для вычисления производных полинома в данной точке по схеме Горнера. Сам в программировании и...

Вычислить значение полинома по схеме Горнера
ПОМОГИТЕ МОЖАЛУЙСТА,НУЖНО НАПИСАТЬ ПРОГРАММУ: Вычислить: p(x)=a(n)x^n+a(n-1)x^(n-1)+...+a1x+a(o) для x=1.2, n=5, a=(1.3,-0.8, 1.8,...

5
programmer
 Аватар для Thread
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
07.10.2013, 03:53
используйте инструкцию imul
Назначение: операция умножения двух целочисленных двоичных значений со знаком.
0
 Аватар для Mogost
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
07.10.2013, 09:16  [ТС]
Шикарное просто предложение. А теперь вопрос, как я им воспользуюсь без регистров eax... Читайте внимательнее.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
07.10.2013, 09:25
Mogost,
imul может работать как с содержимым регистра ЕАХ, АХ, AL так и не используя этих регистров, читай о команде imul с двумя и тремя операндами
0
 Аватар для Mogost
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
07.10.2013, 09:30  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
Mogost,
imul может работать как с содержимым регистра ЕАХ, АХ, AL так и не используя этих регистров, читай о команде imul с двумя и тремя операндами
Проблема в том что результат в двойном слове. Ну вот например если я сделаю так
Assembler
1
2
3
4
5
6
7
8
    mov ax, word ptr o  
    imul x
    mov word ptr o, ax
    mov vr, dx
    mov ax, word ptr o+2
    imul x
    adc ax, vr
    mov word ptr o+2, ax
результат от этого правильным, то не станет.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
07.10.2013, 10:16
Mogost,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
; masm dos com #
.286
.model tiny
.code
org 100h
comment #
int a[]={500,400,111,500};
    int o=0;
    int x=-5;
    int n=4;
    for(int i=0;i<n;i++)
    {
        o=(o*x)+a[i];
        cout<<"o="<<o<<endl;
    }
#
start:  mov ax,3
    int 10h
    mov si,offset a
    mov cx,4
@@: imul dx,o,-5
    lodsw
    add dx,ax
    mov o,dx
    loop @b
    neg o
    mov al,'-'
    int 29h
    mov bx,10
    mov ax,o
@@: xor dx,dx
    div bx
    add dl,'0'
    push dx
    inc cx
    test ax,ax
    jnz @b
@@: pop ax
    int 29h
    loop @b
    mov ah,0
    int 16h 
    ret
a dw 500,400,111,500
o dw 0
end start
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2013, 10:16
Помогаю со студенческими работами здесь

Деление полинома p(x) на бином (x–α) по схеме Горнера
Помогите составить программу на паскале для деления полинома p (x) на бином (x–α) по схеме Горнера. Сам в программировании и...

Составить подпрограмму вычисления значение полинома n-го порядка по схеме Горнера
Здравствуйте. помогите пожалуйста. Задание: составить подпрограмму вычисления значение полинома n-го порядка по схеме Горнера. Используя...

Составить программу для вычисления значения полинома по схеме Горнера
Объясните пожалуйста программу, каждую строку Завтра нужно преподу объяснить Спасибо! Условие задачи: Составить программу для...

Вычисление значения полинома, используя формулу Горнера
Составить блок-схему и программу для вычисления значения полинома, используя формулу Горнера. t=15f11+13f10+4f8-2f7+16f5-3f+1

Вычисление по схеме Горнера
Для данного действительного числа X произвести вычисление по схеме Горнера Y=x^10+2x^9+3x^8...10x+11. помогите с кодом пожалуйста....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru