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

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

  Все выпуски  

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


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


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


Выпуск #8.

Добрый день, уважаемые подписчики!

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

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

2. Задача #8.

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

4. Дискуссия.

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

Было прислано 3 решения, но признать лучшим можно было решение Ungydrid'а в 13 байт. MSoft'у нужно изменить код, потому что он не выполняет поставленного условия. А решение Sensey'а в 8 байт, используя команду xadd, тоже нельзя признать правильным, потому что я просил не использовать команды сложения.

 

Решение by MSoft. На мой взгляд решение очень интересное. Код после помещения в регистры чисел, увеличивает AX и уменьшает BX до тех пор, пока BX не станет равным нулю, т.е. пока AX<>AX+BX.

 

; Task#7
; Описание: жалкое подобие XADD (486)
; Размер: 13 байт
; Рецепт: tasm, tlink /t /x
; Автор: UNGYDRID

.model tiny
.code 
org 100h

start:
mov ax, 12ffh
mov bx, 0ed00h

push ax 
incdec:
inc ax ; ax+1*bx
dec bx
jnz incdec
pop bx
ret

end start

 

Теперь по просьбам подписчиков публикую два своих решения: 11 байт и 14 байт соответственно.

.model tiny
 .code
org 100h
start:
mov    AX, 1     ;двоичные представления чисел не должны перекрывать друг друга,
mov    BX, 2     ;т.е. биты AX равные 1 не должны быть равны 1 в BX и наоборот.
                          ;Пример: AX=1000b, BX=0100b или AX=1001b, BX=0100b
xor      AX, BX
xor      BX, AX
ret
end start

Значит, что код будет работать не при всех значениях AX и BX.

Идея второго кода заключается в равенстве AX+BX=AX-(-BX).

.model tiny
 .code
org 100h
start:
mov     AX, 123h
mov     BX, 352h
push    ax
neg     bx ;Меняем знак числа в BX
sub     ax, bx ;AX=AX-(-BX)
pop     bx
ret
end start

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

Задача #8.

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

Задание:

Написать код, который бы выполнял тело программы дважды. Учесть возможность постановки кода в действующую COM-программу. COM-программа не изменяет флаги и содержимое регистров.

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

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

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

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

Мне все-таки удалось создать конференцию на yahoogroups. Подписаться можно написав пустое письмо по адресу mailto:ruscompogroup-subscribe@yahoogroups.com. Эта конференция является закрытой, т.е. здесь не будет "случайных" людей. Тестировать нашу конференцию будем как только подпишутся несколько человек.

Дискуссия.

Любите ли Вы спорить? Может у Вас есть какая-то тема для дискуссии? Не стесняйтесь присылайте. Поспорим все вместе.

Maverick предложил тему: "Нужен ли вирмэйкинг обществу?". Все мнения будут опубликованы в следующем выпуске. Поступило 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
Отписаться
Убрать рекламу

В избранное