Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14
1

Вычисление выражения

16.09.2011, 15:37. Просмотров 820. Ответов 7
Метки нет (Все метки)

Помогите написать программу для вычисления выражения. Данные для переменных нужно вводить с клавиатуры, и потом вывести результат. как раз это у меня и не получается.
0
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2011, 15:37
Ответы с готовыми решениями:

Вычисление выражения
как на ассемблере записать выражение (A * X^4 + B * X^3 + C * X^2 + D * X) div...

Вычисление выражения A*B/C
Выручайте, напишите плиз программу -> Вычисление выражения D=A*B/C, где A=6,...

Вычисление выражения (2*b-a+b/c) / (c/4+1)
(2*b-a+b/c)/(c/4+1) как записать на языке ассемблер

Вычисление выражения
вычислить выражение (с / 4-d / 62) / (a * a + 1)

Вычисление выражения 2*a-(b^2+c)
Здравствуйте! Вычислить выражение: 2*a-(b^2+c), вместо b в квадрате записать...

7
Goodwin98
2523 / 819 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
16.09.2011, 15:56 2
Ну а где то, что получается и причины почему не получается?
0
Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14
16.09.2011, 16:02  [ТС] 3
До этого изучал ассемблер для микроконтроллеров АВР, не работал в ДОС.
Посоветуйте хотя бы книгу где все детально описано как вводить выводить данные (в данном случае числовые)
0
eji
121 / 121 / 29
Регистрация: 17.09.2010
Сообщений: 288
16.09.2011, 16:36 4
Torassk
В этой теме я выкладывал проект, похожий на Ваш.
0
Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14
16.09.2011, 16:45  [ТС] 5
там значение переменных в программе заданы, а мне надо принять их с клавиатуры во время выполнения программы
0
eji
121 / 121 / 29
Регистрация: 17.09.2010
Сообщений: 288
16.09.2011, 17:09 6
Torassk
Чтобы считать данные в регистр ax, нужно написать:
Assembler
1
call scan_num
Введенное значение будет в регистре ax, дальше уже все идет также.
0
Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14
16.09.2011, 18:24  [ТС] 7
в TASM так не получаеться
0
Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14
23.09.2011, 20:35  [ТС] 8
Наконец то что то получилось, главное что работает

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
        .model  tiny            ;Модель пам'яті, використовується для СОМ
        .data                   ;Початок сегмента даних
        
msq db "Enter Q = ",'$' 
mss db "Enter S = ",'$'
msf db "Enter F = ",'$'
msx db "Enter X = ",'$'
msz db "Results =",'$'
mse db 0Dh,0Ah,'$'
            
        .code                   ;Початок сегмента кода
        org     100h            ;Початкове значення лічильника 100h
            
start:
 
;Вводимо з клавіатури значення зміної X
    ;Повідомлення для вводу цифри з клавіатури
        mov     ah,09h            
        mov     dx,offset msx
        int     21h               
    ;Зчитуємо символ з клавіатури
        mov     ah,01h            
        int     21h               
    ;Перетворюємо ASCII код в цифру 
        sub al,'0'
        mov ah,0
    ;Запихаєм в стек
        push ax
    ;Нова стрічка
        mov ah, 09h
        mov dx, offset mse
        int 21h
 
;Вводимо з клавіатури значення зміної F     
    ;Повідомлення для вводу цифри з клавіатури
        mov     ah,09h            
        mov     dx,offset msf
        int     21h               
    ;Зчитуємо символ з клавіатури
        mov     ah,01h            
        int     21h               
    ;Перетворюємо ASCII код в цифру 
        sub al,'0'
        mov ah,0
    ;Запихаєм в стек
        push ax
    ;Нова стрічка
        mov ah, 09h
        mov dx, offset mse
        int 21h
 
;Вводимо з клавіатури значення зміної S
    ;Повідомлення для вводу цифри з клавіатури
        mov     ah,09h            
        mov     dx,offset mss
        int     21h               
    ;Зчитуємо символ з клавіатури
        mov     ah,01h            
        int     21h               
    ;Перетворюємо ASCII код в цифру 
        sub al,'0'
        mov ah,0
    ;Запихаєм в стек
        push ax
    ;Нова стрічка
        mov ah, 09h
        mov dx, offset mse
        int 21h
        
;Вводимо з клавіатури значення зміної Q
    ;Повідомлення для вводу цифри з клавіатури
        mov     ah,09h            
        mov     dx,offset msq
        int     21h               
    ;Зчитуємо символ з клавіатури
        mov     ah,01h            
        int     21h               
    ;Перетворюємо ASCII код в цифру 
        sub al,'0'
        mov ah,0
    ;Запихаєм в стек
        push ax
    ;Нова стрічка
        mov ah, 09h
        mov dx, offset mse
        int 21h
 
;ОБЧИСЛЕННЯ Z=((2*Q-S)/F+3)*X^3
        pop ax                  ;Виймаємо Q зі стеку
        add al,al               ;2*Q
        pop dx                  ;Виймаємо S зі стеку
        sub al,dl               ;2*Q-S
        pop dx                  ;Виймаємо F зі стеку
        div dl                  ;(2*Q-S)/F
        mov dl, 03h             ;(2*Q-S)/F+3
        add al,dl
        mov bl,al
        pop ax                  ;Виймаємо X зі стеку
        mov dl,al
        mul dl                  ;X^2
        mul dl                  ;X^3
        mul bl                  ;Z=((2*Q-S)/F+3)*X^3
        push ax                 ;Вставляємо Z в стек
 
;Виводимо Відповідь
        mov ah, 09h
        mov dx, offset msz
        int 21h
 
        pop ax                  ;Виймаємо Z зі стеку
 
        call print              ;Виклик підпрограми
        
;Пауза перед завершенням програми
        mov ah, 09h             
        mov dx, offset mse      ;Почати новий рядок
        int 21h
        mov ah,01h              ;Пауза до натискання кнопки
        int 21h
        
 
        ret                     ;Заваршення СОМ-програми
    
;Підпрограма для виводу числа з регістра ax на екран
print proc
        push    ax              ;Заштовхуємо до стеку робочі регістри
        push    bx
        push    cx
        push    dx
        xor     cx, cx          ;Очищаємо cx
        test    ax, ax          ;Перевірка ax
        jge     p1              ;Перехід на p1 якщо більше або дорівнює
        mov     dl, '-'         ;Негативне число, виводимо мінус
        neg     ax              ;Зміна знаку числа в ax
        jmp     short p2        ;Перезід до мітки p2
p1:     mov     dl, ' '
p2:     push    ax              ;Заштовхуємо ax до стеку
        mov     ah, 02h         ;Код для виводу символу
        int     21h             ;Переревання Дос
        pop     ax              ;Виштовхуємо ax зі стеку
        mov     bx, 10          ;bx=10
p3:     cwd                     ;Розширюємо ax
        div     bx              ;ділимо на 10
        add     dl, '0'         
        push    dx              ;Заштовхуємо dx в стек
        inc     cx              ;Інкрементуємо cx
        test    ax, ax          ;Перевірка ax
        jnz     p3              ;Перейти на p3 якщо не нуль
        mov     ah, 02h         ;Код для виводу символу
p4:     pop     dx              ;Виштовхуємо dx зі стеку
        int     21h             ;Виклик перериваня Дос
        loop    p4              ;переходити до мітки p4 поки cx!=0
        pop     dx              ;Виштовхуємо зі стеку роб. рег.
        pop     cx
        pop     bx
        pop     ax
        ret                     ;Вихід з підпрограми
print endp 
            
 
end start                       ;Кінець програми
Добавлено через 30 минут
Помогите переделать что бы оно правильный результат выдавало если число получается дробью
0
23.09.2011, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2011, 20:35

Вычисление выражения A/B*C
Напишите код, если не трудно, пожалуйста. Написать фрагмент программы на...

вычисление выражения 2A+2B
Задачку надо решить для зачета... пробовала сама решить... ничего не...

Вычисление значения выражения (2c-42)/(c+a-1)
Дано вот такое выражение: (2c-42)/(c+a-1). Нужно вычислить его значение....


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

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

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