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

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

  Все выпуски  

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


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


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


Выпуск #12.

Добрый день, уважаемые подписчики! Всех с новым годом! Счастья и здоровья в новом году! На днях постараюсь обновить архив задач.

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

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

2. Задача #12.

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

4. Дискуссия: новая тема.

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

Таблица рекордов:

1. G3 - 37 байт.

2. [stl] - 38 (37) байт.

3. Ayl - 38 байт.

4. Edward Samokhvalov - 40 байт.

 

Решение by G3:

;tasm /m task.asm
;tlink /x /3 /t task.obj
;37 байт
;by G3

.model tiny
.386
.code
org 100h

Start:
mov cl,M2-M1 ;2
mov di,offset M1 ;3
MainLoop:
mov al,[di+M2-M1] ;3
xor al,[di] ;2
jz L1 ;2

xor [di],al ;2
inc bx ;1
L1:
inc di ;1
loop MainLoop ;2

ret ;1

M1 db 'ASSEMBLER' ;9
M2 db 'FOREVER!!' ;9

end Start

 

Решение by [stl]:

; task11.asm
; by [stl]
; tasm task11.asm
; tlink /x /3 /t task11.obj
; 39 bytes (maybe 38 if strings shorter than 256b)
.386
IDEAL
MODEL tiny
CODESEG
ORG 100h
start:
diff=OFFSET M2-OFFSET M1
mov cx,9
mov si,OFFSET M1
loop0:
mov al,[si+diff]
xor [si],al
jz short continue
inc bx
continue:
mov [si],al
inc si
loop loop0
ret
M1 DB "ASSEMBLER"
M2 DB "FOREVER!!"
END start

 

Решение by Ayl:

; Assembler Tasks COMPO #11
; tasm 11.asm
; tlink /x /t 11.obj
; 11.com
; by Ayl
; size: 38 bytes with data, 20 bytes only code

.Model TINY
.286

.Code
.StartUp
mov cl, (m2 - m1) ; загрузить размер массива
lea si, m1 ; загрузить адрес массива, который будет изменяться
mov bp, cx ; загрузить смещение второго массива относительно первого
r:
mov al, [si + bp] ; загрузить очередной элемент эталонного массива 
; (несмотря на адресацию от SS адресуем то, что надо: SS = CS = DS!)
sub al, [si] ; высчитываем разницу между элементами (про sub в задании ничего не сказано!)
jz c ; если элементы равны - переходим к следующему элементу
add [si], al ; иначе добавляем разницу к элементу первого массива (m2[i] = m1[i] + (m2[i] - m1[i])!)
inc bx ; и корректируем счетчик разлиций
c:
inc si ; переходим к следующему элементу
loop r ; перебираем весь массив

ret ; все!

m1 db 'ASSEMBLER'
m2 db 'FOREVER!!'
end

 

Решение by Edward Samokhvalov:

;bY S/-\m0Khval0FF Edw/==\RD
;flat assemler for windows 1.42 (FASM)
;http://fasm.metro-nt.pl/fasm142.zip
;40 bYt3zZ
org 100h
mov si, B0T_ET0_MOU_PA3MEP4UK
davay_ka:
mov al, byte ptr m2+si-1
sub byte ptr m1+si-1, al
jz XPEH
inc bx ;для протокола
XPEH: mov byte ptr m1+si-1, al
dec si
jnz davay_ka
ret
m1 db "ASSEMBLER"
m2 db "AS*EMBLER"
B0T_ET0_MOU_PA3MEP4UK = $-m2 

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

Задача #12.

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

Задание:

Для начала в конце текста Вашего решения напишите:

Stroka DB "1234567"

Len EQU $-Stroka

А теперь, собственно задание:

Нужно вывести на экран в одну строку - один символ, два ... семь символов:

1121231234123451234561234567

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

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

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

А вообще кто хочет попасть в команду, напишите письмо по адресу: igoryk@yandex.ru. Только прошу учесть, что в этой команде мы только решаем COMPO. И еще прошу писать предложения о том, как это все лучше организовать.

Дискуссия.

Что Вы думаете о законах по поводу защиты авторских прав программистов?

Мнения сюда: igoryk@yandex.ru 

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

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

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

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


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

В избранное