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

RusFAQ.ru: программирование на языке Assembler


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 448
от 14.05.2006, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 331, Экспертов: 24
В номере:Вопросов: 1, Ответов: 1


Вопрос № 42486: Всем привет, мне срочно нужна прога" вычисление совершенных чисел от 1 до n" выполненная через макросы Помогите пожалуста скоро сессия ..

Вопрос № 42.486
Всем привет, мне срочно нужна прога" вычисление совершенных чисел от 1 до n" выполненная через макросы Помогите пожалуста скоро сессия
Отправлен: 09.05.2006, 00:55
Вопрос задала: Mimansa (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Начинаются сессии и это хорошо, потому что это признак конца, и начала отдыха.
> Всем привет, мне срочно нужна прога" вычисление совершенных чисел от 1 до n" выполненная через макросы Помогите пожалуста скоро сессия.
>> Давайте попробуем.
Построем наш алгоритм вот таким путём:

Задачи.
1. n = 29
3. Сохраним колл-во совершенных чисел.

Алгоритм:
Мы знаем что в промежутке от 1 до 29, есть два совершенных числа, это 6 и 28, т.е.
колл-во совершенных чисел равно двум. Вот код который это показывает:

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;от 1 до n, n = 29
;=============================================
mov cx,29 ;n = 0ah
mov ax,02h ;begin num
;=============================================
@1:
mov byte ptr [Name_A],00h
mov bl,01h ;num 1...n
@4:
push ax
div bl
cmp ah,00h
jne @@2
;=============================================
add byte ptr [Name_A],bl
@2:
inc bl
;=============================================
pop ax
cmp bl,al
jne @@4
;=============================================
cmp byte ptr [Name_A],al
jne @@3
;=============================================
add byte ptr [Count],01h
@3:
inc ax
loop @@1
;=============================================
mov cl,byte ptr [Count]
;=============================================
ret ;exit
;=============================================
Name_A db 00h
Count db 00h
;=============================================
CSEG ends
end Begin

Код !НЕ! оптимизирован ни по объму и ни по быстродействию, рекомендую сделать это вам.

Код не использует спец. инструкций так что суть понять можно без комментриев.
Все рассуждения велись относительно докуменда по этому адресу:

http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B2%D0%B5%D1%80%D1%88%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE

С, Уважением MnEm0n!C.


---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 7-ой класс)
Ответ отправлен: 09.05.2006, 05:17


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное