Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Zeth
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
1

Помогите переделать рабочую программу подсчета полинома под 32разрядные регистры

28.12.2010, 15:53. Просмотров 481. Ответов 0
Метки нет (Все метки)

Добрый день. У меня программа считает значение полинома Y=Ax^4+Bx^3+Cx^2+Dx+E при X от -10 до 10 (с шагом 1). Одна процедура считает значения, вторая преобразует их в ASCII-код. Программа нормально работает с маленькими значениями, но с нужными мне значениями возникает переполнение. А с 32разрядными я никогда до этого не работал. Подскажите пожалуйста.

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
91
92
.model small
.stack 256
.486
.data
;пропущу всё ненужное
 
MAS_A DW  -9, -2, -9, 0, -9 
N       DW 4
Y_ASCII DB 7 dup(?)
sign    DB (?)
NUMBER  DW (?) 
X       DW -11
Y       DW (?)
NAMBER DW 0
 
;подсчет полинома Y=Ax^4+Bx^3+Cx^2+Dx+E
;массив MAS_A содержит в себе коэфиценты A,B,C,D,E
;формула подсчета: Y=[((((x+a)*x+b)*x+c)*x+d)*x+e]
 
POLI PROC 
LEA SI, MAS_A
MOV CX, N
XOR DX, DX
MOV AX,[SI]
IT: IMUL X
INC SI
INC SI                                    
ADD AX, [SI]
LOOP IT
MOV Y, AX
RET
POLI ENDP
 
preobr  proc
 
          mov   sign, ' '       ;пробел в sign      
          cmp   ax, 0           ;сравнить AX и 0   
          jns   m_1             ;если AX>=0 то M_1
 
          mov   sign, '-'       ;если AX<0 то знак:='-'
          NEG  ax               ;преобразовать AX в обратный код
 
m_1:  xor cx,  cx               ;CX:=0
          mov   bx, 10          ;BX:=10 (делитель)
m_2:  xor dx, dx                ;DX:=0
          div   bx              ;AX:=AX/BX (поделить число на 10)
          push  dx              ;остаток в стек
          inc cx                ;CX:=CX+1
          cmp ax, 0             ;сравнить AX, 0
          jne    m_2            ;если целая часть результата деления AX не 0 то провести еще одно деление
 
 
XOR SI, SI                      ;SI:=0
mov al,  sign                   ;AL:=sign (код знака в AL)
mov Y_ASCII[si], al             ;сделать первым символом знак
inc si                          ;увеличить SI
m_3:  pop   ax                  ;из стека в AX
add al, 30h                     ;прибавить к AL 30
mov Y_ASCII[si] ,al             ;переслать код символа в Y_ASCII
 
 inc    si;                     ;SI:=SI+1 (индекс+1)
loop    m_3                     ;цикл равный количеству символов
mov Y_ASCII[SI], ' '            ;пробел для понятного вывода
inc SI
mov  Y_ASCII[si], '$'           ;в последний элемент строки символ конца строки
ret
preobr  endp                    ;конец процедуры
 
CYCL:INC X
     MOV DH, 12      
     XOR AX, AX
     MOV AX, X
     MOV DL, 25
     ADD DH, AL
     MOV AH, 02H
     INT 10H             ;установка курсора в нужную точку
     MOV AX, X
     MOV Y, AX
     CALL PREOBR
     CALL OUTX         ;процедура просто выводит "X=<значение X>"
     MOV DH, 12
     XOR AX, AX
     MOV AX, X
     MOV DL, 33
     ADD DH, AL
     MOV AH, 02H
     INT 10H                 ;тоже курсор
     CALL POLI
     CALL PREOBR
     CALL OUTRES      ;тоже просто вывод для Y
     CMP X, 10
JNE CYCL
Пожалуйста помогите. Я в панике (.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 15:53
Ответы с готовыми решениями:

Нужно немного переделать рабочую программу
Сделал программу сортировки массива в виде трех подпрограмм, не считая модуля main. #include...

помогите переделать под функции две программы
пожалуйста, помогите #include &lt;iostream&gt; int _tmain(int argc, _TCHAR* argv) { int matrix ; ...

Помогите с кодом. Код из Визуала надо переделать под билдер.
Здравствуйте! Работаю в C++ Builder 6. При компиляции выдаёт ошибку UFOD1.cpp(42): E2040...

Переделать программу со структурами под программу со списками
Изначально задача звучала так: На писать программу с использованием структур. Даны три параметра...

Переделать программу под программу с использованием функции
program perev; uses crt; var s,s1:string; i:integer; begin writeln('vvedite chislo');...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2010, 15:53

помогите переделать программу
Всем привет! есть программа в паскале требуется переделать её на питон! program den; uses crt;...

помогите переделать программу
Есть готовая программа, нужно как нить ее пределать до не узнаваимости :( там как нить переменные...

помогите переделать программу!)
Ребята, вы уже не раз меня выручали) Опять столкнулся с проблемкой. Нужно написать программу,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru