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

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

  Все выпуски  

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


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


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


Выпуск #9.

Добрый день, уважаемые подписчики! Долго думал чем бы вас удивить... Кажется придумал. Читайте!

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

1. Решение задачи #8.

2. Задача #9.

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

4. Дискуссия - результаты.

5. Кое-что еще!

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

Очень много было прислано решений. Много было непохожих друг на друга. Поэтому привожу в том выпуске все решения.

Таблица рекордов к данной задаче.

1. Broken Sword - 3 байта.

2. Serj - 4 байта.

3. G3 - 4 байта.

4. Ilya D. - 4 байта.

5. Ayl - 4 байта.

7. Yury Lunev - 4 байта.

8. Traish - 4 и 8 байт.

9. Maverick - 5 байт.

 

Как всегда начинаем с самого оптимизированного решение, каковое прислал Broken Sword.

 

; Assembler Tasks COMPO #8
; tasm entry.asm
; tlink /x /3 /t entry.obj
; entry.com
; by Broken Sword [HI-TECH]
; size: 3 bytes

                .model         tiny
                .code
                org            100h               
@@start:               
                push           SI
                xchg           SI,AX
                ret
                end            @@start 

 

Идея кода проста: команда ret отдает управление на адрес CS:SI (а при старте SI=100h, что совпадете с меткой start), а затем на адрес CS:AX, т.е. на CS:0000h.

 

Теперь остальные решения:

by Serj:

 

;task#8
;размер 4 байта
;Автор: Serj
.186
code segment
assume cs:code
org 100h
begin:
push offset a     ;пихаем в стек адрес метки а
a:
;тело проги
retn                     ;При первом выполнении идем на метку а,
                            ; при втором-выходим
code ends
end begin

 

by G3, такое же решение прислал Ayl и Traish:

;Task #8
;Способ компиляции: tasm task8.asm, tlink /t task8.obj
;Размер: 4 байта
;Автор: G3

.model tiny
.386
.code
org 100h

Start:
                call Telo
Telo:                           ;тело программы

                ret
end Start

 

by Ilya D.:

;Task #8
;tasm task8.asm
;tlink /t task8.obj
;size: 4 bytes
.model tiny
.186
.code
org 100h
begin:
push offset begin+3
ret
end begin

 

by Uriy Lunev:

org 100h
      begin:
            assume cs:cseg
            call $ + 3
            ;тело проги
            ret
      cseg ends
      end begin

 

by Maverick (5 байт)

;Task #8
;Способ компиляции: 
;tasm 1.asm
;tlink /t 8.obj
;Автор: Maverick
;Размер: 5 байт
.model tiny
.386
.code
org 100h
start:
mov cl,2
program:
;Код программы, котю нужно выполнить дважды.
loop program
ret
end start

 

by Traish (8 байт):

cseg segment
assume cs:cseg, ds:cseg
org 100h
start:  lea ax, [$+5]
         push ax
                                ;<--code
         xor ax, ax     ;В смысле любой код, едиственное,
                                ;что надо, так это чтобы он стек почистил за собой.
         xchg bx, ax 
         ret
 ends
 end start

У кого есть более короткое решение присылайте указав в теме номер задачи.

Задача #9.

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

Задание:

Написать код, который бы помещал в стек содержимое AL. 

Push AX - естественно не подойдет.

Мой код занимает при AL=0 - 13 байт, при AL <> 0 -14 байт.

Отправить решение до 23.12.2002

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

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

Кто хочет участвовать высылайте запрос сюда (я просто не обратил внимание на особенности закрытой конференции, поэтому лучше запросы посылать мне): mailto:igoryk@yandex.ru?Subject=Команда для COMPO 

Дискуссия - результаты.

Maverick предложил тему: "Нужен ли вирмэйкинг обществу?". Вот что по этому думают подписчики данной рассылки:

Maverick:

Я считаю, что нужен. Ведь что такое вирусы и антивирусы? Это ни что иное, как "гонка вооружений". В процессе создания первых, и как следствие вторых, появляются новые решения и алгоритмы. Что касается морального аспекта, то я слышал высказывание, с которым полностью согласен. Суть его в том, что вирмейкер не виноват в последствиях от своего вируса, как изобретатель оружия в жертвах от своего изобретения. А вот кто действительно виноват, так это наш среднестатический юзер, которому не хватило ума обезопасить себя. Интересно услышать мнение других читателей

Alexei Volkov:

Конечно нужен. 1) Люди, которые начинают этим заниматься, очень многое узнают. Тем более что не все пишут и потом выпускают "наружу" свои вирусы. Приобретается и опыт борьбы. Отсюда: 2) А куда девать людей, которые сейчас занимаются антивирусами, и тп?

MSoft:

    Доброго времени суток. Я думаю, что вирмэйкенинг нужен всем. Вирусы в любом слючае будут плодиться как китайцы. Так надо же делать их умело, с фантазией, а не тяп-ляп. К тому же это отличный способ по-лучше узнать ОСи, биосы, структуры FAT'ов, бут-секторов, заголовков exe'шек. Многие вирусы так и останутся не запущенными - (опять повторюсь) их часто делают для познания компа (особенно новички).

Pank:

Вирмейкинг обществу нужен. Во первых, это повышает знания асма, во вторых это снимает завесу тайны с того, что у вируса внутри, в третьих это заставляет (или помогает) изучить особенности операционной системы, в четвертых это не даст умереть с голода Касперскому, Др. Вебу и прочим :), хотя писать вирусы и распространять их, да еще и с целью причинить вред - это две большие разницы. Запрещать писать вирусы - это все равно что изъять у людей кухонные ножи, потому что ими можно кого-то зарезать, отобрать все автомобили, потому что на них можно кого-нибудь сбить.

Igoryk:

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

Возразить кому-либо

Кое-что еще.

21 декабря выйдет специальный выпуск этой рассылки, посвященный одному событию, какому именно говорить не буду. Сами подумайте и мне на почту пришлите Ваши мнения. Также пришлите что именно Вы хотели бы увидеть в этом праздничном выпуске. Жду с нетерпением.

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

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

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

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


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

В избранное