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

Задачи по ассемблеру

  Все выпуски  

Задачи по ассемблеру


Информационный Канал Subscribe.Ru


Задачи по ассемблеру.


Выпуск #5. Часть II.

Добрый день, уважаемые подписчики! Пришлось сделать дополнение к прошлому выпуску... Была просьба поконкретнее писать условие задачи - исправляюсь.

И еще у нас уже есть довольно много решений. Каждый хочет, чтобы было опубликовано его решение, но письма с Subscribe можно отправлять с очень ограниченным размером. Я предлагаю создать на моем сайте Библиотеку всех (!) решений, в порядке количества байт, ими занимаемое. Т.е. здесь будут и маленькие коды, и большие. Как Вы к тому относитесь? Пишите сюда.

Сегодня в выпуске:

1. Более рациональное решение задачи #3.

2. Решение задачи #4.

3. Задача #5.

4. Предложение

5. Голосование.

Более рациональное решение задачи #3.

Более рациональное решение было прислано Ungydrid'ом. Вот что он пишет: 

Одна голова - хорошо, а пять - пьянка.
Объединив два решения (первая половина - лучше у AYL, вторая - у Maverick и Ilia D / Broken Sword, приятно видеть знакомые хм... лица:).

И приводит два кода по 14 байт каждый:

.model tiny
.286 
.Code
.StartUp
mov al,38 
aam              ;та же самая операция деления,но  в  2-х  байтах  (второй
                 ;байт - делитель, так что иногда полезно пользоваться при
                 ;оптимизации  для  быстрого  деления  на байт, подставляя 
                 ;db D4,?? (см. Зубков)
call Twice       ;красиво, черт возьми, - to Maverick & Ilia D
Twice:
xchg ah, al
or al,30h 
int 29h 
ret 
end

И второй код:

.model tiny
.286 
.Code
.StartUp
mov al,38 
aam               ;та же самая операция деления, но в 2-х байтах (второй
                  ;байт - делитель, так что иногда полезно пользоваться при
                  ;оптимизации для быстрого деления на байт, подставляя 
                  ;db D4,?? (см. Зубков)
Twice:
xchg ah, al
or al,30h 
int 29h
inc di
jnz Twice 
ret 
end

 Решение задачи #4.

Было прислано два решения: от AYL'а и Broken Sword'a. Лидером оказался Broken Sword - 35 байт против 37 байт AYL'a. Но если у Ayl'а заменить mov ax, ... на mov al, ... (как у Broken Sword'а), то его программа займет 33 байта! Затем в день выхода рассылки были присланы еще два решения: от Mavericka (51 байт) и от Eugene (52 байт но для графического режима).

Задача #5.

У меня получилась программа на 14 байт. Кто меньше?

Задание:

Создать программу, которая бы занесла в BX количество байт, занимаемое этой программой. Т.е. если программа занимает 14 байт, то BX=14. Учесть, что выход программы будет совершен командой INT 20h, т.е. ваша задача отсчитать байты от начала программы до команды INT 20h + размер команды Int 20h. И еще. Желательно, чтобы эта программа работала, если ее исходный текст вписать в COM-программу (с перекомпиляцией естественно), обнаруживала размер данного COM-файла, если известно, что в Com-файле Int 20h встречается только один раз, т.е. нет команд типа mov ax, 0CD20h и т.п. Пример программы:

.model tiny

.code

org 100h

start:

;Здесь Ваша программа, которая определяет, кол-во байт, 

;занимаемое файлом на диске

int 20h

end start

Метки перед концом программы ставить нельзя!

Потому что таким способом может высчитать размер программы каждый.

Выход:

BX=размер программы.

Отправить решение

Предложение

Может быть вы слышали, что на сайте hugi.de/compo даются задачи (естественно труднее, чем в данной рассылке). Решить одному человеку данную задачу будет непросто, а иногда даже невозможно. Maverick предлагает создать команду (небольшую - человек 5-10) и решать задачи все вместе. Что Вы можете сказать по этому поводу?

Предложение высылайте сюда: mailto:igoryk@yandex.ru?Subject=Команда для COMPO 

Голосование

1. Что не хватает рассылке?

2. Что лишнее?

3. Как Вы отнесетесь к тому, что в ближайших выпусках появятся задачи типа CrackMe?

4. Какая тема для решения задач Вам ближе всего?

Ответы присылайте по ссылке: mailto:igoryk@yandex.ru?Subject=Голосование

В заключение...

На главной странице сайта www.igoryksoft.narod.ru будут даны размеры программ лидеров, как только таковые появятся. И так будет с каждой задачей. Узнав, эту информацию каждый может прислать более оптимизированное решение.

Любые предложения по улучшению рассылки, Ваши задачи, вопросы прошу присылать мне на почту, указанную внизу рассылки. 

(с) IgorykSoft Все права защищены! 
URL: www.IgorykSoft.Narod.Ru  E-Mail: Igoryk@Yandex.Ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное