30.05.2020, 21:10 [+3 UTC]
в нашей команде: 4 575 чел. | участники онлайн: 4 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
29.05.2020, 13:47

Последний вопрос:
30.05.2020, 17:05
Всего: 152529

Последний ответ:
30.05.2020, 16:47
Всего: 260219

Последняя рассылка:
30.05.2020, 17:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
17.02.2019, 22:26 »
dar777
Это самое лучшее решение! [вопрос № 194725, ответ № 277487]
12.10.2009, 12:53 »
Милюков Антон Борисович
Огромное спасибо! Я получил ответы даже на те вопросы, которые не задал, но которые возникли у меня уже после подачи вопроса. Не ожидал. Еще раз огромное спасибо, Вы очень мне помогли. [вопрос № 173095, ответ № 255330]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Мастер-Эксперт)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 1570
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 482
cain52
Статус: 3-й класс
Рейтинг: 7

Перейти к консультации №:
 

Консультация онлайн # 143688
Раздел: • Assembler
Автор вопроса: Alexkharkov
Отправлена: 12.09.2008, 00:00
Поступило ответов: 2

Доброго времени суток,уважаемые эксперты! Только приступил к изучению Ассемблера (MASM32) и нуждаюсь в Вашей помощи.
Найти значение выражения: (a – d)/b + d при a=12; b=17; d=2110
Часть программы в приложении.
Благодарен Вам за помощь.

Приложение:

Состояние: Консультация закрыта

Ответ # 229068 от Trulala

;Найти значение выражения: (a – d)/b + d при a=12; b=17; d=2110
;MASM32

.386
.model flat, stdcall

.data
a DD 12
b DD 17
d DD 2110

res DD ?

.code

;ВОЗВРАТ: eax = (@@a – @@d)/@@b + @@d
Get_Result PROC USES edx @@a:DWORD, @@b:DWORD, @@d:DWORD

mov eax,@@a
sub eax,@@d ;(@@a – @@d)

cdq ;преобразование двойного слова в учетверенное слово, копирует знаковый бит EAX на все биты EDX
idiv @@b ;/@@b

add eax,@@d ;+ @@d

ret
Get_Result ENDP

start:

push d
push b
push a
call Get_Result ;или invoke Get_Result, a,b,d

mov res,eax ;res:= (12 – 2110)/17 + 2110 = 1987

nop

;...
;выход из программы
;...



END start


Консультировал: Trulala
Дата отправки: 12.09.2008, 04:50

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 229088 от Boriss

Здравствуйте, Alexkharkov!
Вот еще вариант более соответствующий masm32 - используются полезные макросы (отсюда и название masm smile )
Снабдил кое-какими пояснениями, если не понятно что будет - пишите

Приложение:


Консультировал: Boriss
Дата отправки: 12.09.2008, 11:44

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 143688
неизвестный

# 1

= общий = | 12.09.2008, 19:44

мы ещё макросы не проходили. Это всего 2 лабораторная работа. Если можете, допишите пожалуйста мою программу в приложении. Спасибо.

Boriss

# 2

= общий = | 12.09.2008, 23:12

Таки Trulala Вам и написал все. Но только там результат целочисленный, а дал вариант, чтобы показать, как легко, используя макросы, работать с вещественными числами в masm32
В его процедуре Get_Result и есть решение задачи. Или не понятно что в его решении?

неизвестный

# 3

= общий = | 13.09.2008, 11:37

Не понятно как получить дробную часть результата.

Boriss

# 4

= общий = | 13.09.2008, 13:25

Поверьте, проще всего действовать именно так, как я написал - через макросы.
Или искусственно:
Чтобы получить десятые и сотые доли, исходное число умножайте на 100 и работайте как с целыми числами (как в примере Trulala), но перед выводом двух последних цифр, выведите десятичную точку smile

 

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

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.22517 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39