Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 1000
от 20.03.2008, 00:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 357, Экспертов: 19
В номере:Вопросов: 2, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 127244: Добрый день, уважаемые эксперты! Помогите пожалуйста с написанием кода 2х небольших программ: 1)Ввести число N. Вывести его N!(факториал). Выход по нажатию клавиши.(число N не очень большое: N<10) 2)Ввести символ и число. Вывести по диагон...
Вопрос № 127256: Здравствуйте! Начал понемногу изучать арифметический сопроцессор. Под DOS пробовал писать разные программки на MASM6.12, а сейчас решил попробовать, как это будет выглядеть во встроенном в Delphi_6 ассемблере. Меня заинтересовало, как Delphi_...

Вопрос № 127.244
Добрый день, уважаемые эксперты! Помогите пожалуйста с написанием кода 2х небольших программ:
1)Ввести число N. Вывести его N!(факториал). Выход по нажатию клавиши.(число N не очень большое: N<10)
2)Ввести символ и число. Вывести по диагонали символ пирамидкой по уменьшению:
пример: ввели d и 5, получилось следующее:
ddddd
dddd
ddd
dd
d
т.е. при переходе на новую строку число выводимых символов уменьшается на 1.
---
Спасибо заранее большое, т.к. я знаю, что вы - мастера своего дела! Надеюсь на вашу поддержку.

Да, еще: вы не могли бы кроме кода программ выложить эти скомпиллированные задачки - а то у меня потерялись tasm и tkink...
В коде я постараюсь разобраться, а задачки - как наглядный пример.
Спасибо!
Отправлен: 14.03.2008, 06:30
Вопрос задал: Mamontenok (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Mamontenok!

Обе программы выполняются последовательно.
Tasm 4.10
Удачи!

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 14.03.2008, 11:50
Оценка за ответ: 5
Комментарий оценки:
Как и обещал, ставлю оценку за Ваш ответ))) Сейчас прыгаю до потолка, задачи решены! Спасибо!

Отвечает: Trulala
Здравствуйте, Mamontenok!

http://depositfiles.com/files/4124580

Приложение:

Ответ отправил: Trulala (статус: 1-ый класс)
Ответ отправлен: 15.03.2008, 02:14
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам огромное!!! Очень рад, что наконец-то смогу сдать и объяснить эти задачи! Надеюсь на Вашу помощь в дальнейшем! С уважением, Мамонтёнок!


Вопрос № 127.256
Здравствуйте!
Начал понемногу изучать арифметический сопроцессор. Под DOS пробовал писать разные программки на MASM6.12, а сейчас решил попробовать, как это будет выглядеть во встроенном в Delphi_6 ассемблере.
Меня заинтересовало, как Delphi_6 обрабатываются исключительные ситуации.
Написал простейшую пробу (деление 1 на 0):
fld1
fldz
fdiv
Смотрю в пошаговом режиме окошки CPU и FPU. На строчке «fdiv» ничего никуда невылетает, правда, биты ZE, ES в регистре состояния арифметического сопроцессора устанавливаются в единицу. И что интересно, в последовательности инструкций в окне CPU ничего ведь не указано, как эту ситуацию обрабатывать. Тем не менее, все аккуратно переходит на исключение, как будто какой-то скрытый текст работает.
 Хотелось бы хотя бы в общих словах знать, как Delphi_6 это обрабатывает
 И как самому, непосредственно в своем коде, грамотнее всего отслеживать такие ситуации (ну, или как это обычно принято делать). Я имею в виду разные ситуации, например, логарифм или квадратный корень отрицательного числа и многое другое…
Отправлен: 14.03.2008, 09:56
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
1) Чтобы "вылетало", надо сначала разрешить сопроцессору сообщать о такой ситуации.
Например, чтобы вылетало по делению на 0, надо сбросить бит ZM в слове управления. Т.е. надо писать
ZM equ 0fffbh
.data
ControlWord dw 0
.code
;...
fstcw ControlWord
and ControlWord, ZM
fldcw ControlWord

fld1
fldz
fdiv

wait
; кроме этого, надо обязательно, чтобы отработалась команда wait
; (которая предшествует практически любой команде сопроцессору)
2) Насчет Delphi...
Видать смотрел не там... Delphi где-то, в другом месте, иницирует обработку
исключительных ситуаций, которые работают как прерывания, поэтому ты и не
видишь всего этого в своем коде.
Если есть ассемблерный код ВСЕЙ программы, то поищи строку fs:[0].
3) В заключение хочу предложить тебе посмотреть примеры в MASM32 (Если нет то обя зательно поставь).
Там есть примеры и на исключительные случаи.
В приложение небольшой примерчик по мотивам того примера, что в MASM32

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 17.03.2008, 12:14
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Теперь расковыряю как нибудь


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.5 от 17.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное