Решения задачи #6.
2. Решение by Maverick (23 байта).
3. Решение by Serj (23 байта).
4. Решение by Elf (23 байта).
5. Решение by Ungydrid (24 байта).
6. Решение by Ayl (27 байт).
Определить является ли данная строка палиндромом.
Решения задачи.
by Maverick: размер 23 байта.
;Task #6 |
by Serj: размер 23 байта.
;23 байта |
by Elf: размер 23 байта.
;Task #6 |
by Ungydrid: размер 24 байта.
.model tiny .code org 100h start: mov si, offset stroka mov di, offset str_len ; конец строки + 1 trial: dec di ;2 кратное уменьшение, т.к при cmpsb возрастают и di и si cmpsb jne exit dec di cmp di, si ;т.к. сравнение символов "навстречу" друг-другу jnbe trial not ax ;при старте eax=0000h exit: ret stroka db 'kazak' str_len db $-stroka end start |
by Ayl: размер 27 байт.
; Assembler Tasks COMPO #6 ; tasm pal.asm ; tlink /t pal.obj ; pal.com ; by Ayl ; size: 27 bytes .Model TINY .286 .Code .Startup mov si, OFFSET Stroka ; устанавливаем указатели на начало и конец стpоки mov di, OFFSET Str_Len - 1 r: lodsb ; читаем символ cmp al, [di] ; сpавниваем с симметричным jne c ; если не pавны - не полиндpом dec di ; хвостовой указатель смещается к центpу cmp di, si ; сpавниваем указатели jge r ; если не достигли сеpедины стpоки - проверяем опять mov ah, cl ; палиндpом! CL = 0ffh при запуске программы! c: mov al, ah ; а AL мы все pавно портили! ret ; конец Stroka db 'kazak' Str_Len db $ - Stroka |