Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Torassk
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 14

Проблема с выводом результатов

26.09.2011, 00:43. Показов 779. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно ввести с клавиатуры значение переменных, вычислить выражение и вывести результат на экран, программа почти рабочая (выводит правильный результат например когда: Q=5, S=4, F=3, X=2) только вот проблема с выводом дробного числа, помогите пожалуйста доделать программу.


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                                               ;Кінець програми
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2011, 00:43
Ответы с готовыми решениями:

Проблема с выводом кириллицы
Короче, я в программировании на asm еще новичек. Учусь по книге зубкова. Программа com .model tiny .data text db 'Привет$' ...

Проблема с выводом строки
В программе нужно вводить предложение, определять максимальное и минимальное по длине слова и менять их местами. Поиск max и min сделал, но...

Поиск с выводом результатов
Добрый день! Прошу вашей помощи. Имеется такой код: Sub sea() Dim strStartAddr As String Dim rgResult As Range...

1
247 / 205 / 26
Регистрация: 03.02.2009
Сообщений: 785
27.09.2011, 08:22
Для простоты используйте математический сопроцессор.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2011, 08:22
Помогаю со студенческими работами здесь

Поиск с выводом результатов
Не знаю даже как правильно обозвать вопрос, но если по-простецки: хотелось бы узнать, есть ли готовое решение поиска для своего сайта,...

Поиск в БД с выводом результатов в TextBox-ы
Имеется БД Microsoft Access которая подключена к программе сделаной на VB.Net. Вот надо сделать поиск по этой БД и что бы результат поиска...

Поиск в БД Access с выводом результатов
Здравствуйте. У меня следующий вопрос: Я подключен БД Access (Код видно на прикрепленном файле Code). Первая форма (Tablic)...

Калькулятор с выводом результатов в TextBox
Доброго времени суток. Нужна помощь в работе с калькулятором. В прикрепленном файле есть калькулятор, который нужно что бы работал...

Скрипт с выводом результатов в файл
Народ! Помогите пожалуйста. Нужен простенький скрипт, который: 1. Смотрит содержимое буфера обмена зашедшего на страничку. 2. Смотрит...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru