» Главная
eXcode.ru » Статьи » Задачи » С решениями
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 9





Сделать сайт бесплатно

Хостинг и хранение файлов. Советы по покупке и продаже квартир и др.

taba.ru


Акриловые гидромассажные ванны

Каталог с описаниями. Информация об оплате и доставке.

niagara-ural.ru




Реализация цикла без условных переходов и арифметических операций (assembler)




Автор: G3

Цель задачи: Вывести в STDOUT строку из X символов ′#′. X вводится из STDIN. 0 < X < 256.
Для вывода должна использоваться процедура 6 прерывания 21h ( mov ah,6 / int 21h ).
Можно использовать только команды работы со стеком, безусловные переходы, команды сравнения битов, логические операции и операции сдвига.

Полный список допустимых команд:
AND, BSF, BSR, BT, BTC, BTR, BTS, CALL, CBW, CLC, CMC, CWD, DEC, INT, JMP, LAHF, LEA, MOV, MOVSX, MOVZX, NOT, OR, POP, POPA, POPF, PUSH, PUSHA, PUSHF, RCL, RCR, RET, ROL, ROR, SAHF, SAL, SALC, SAR, SETxx, SHL, SHR, STC, TEST, XCHG, XOR

Решение от G3:


;Task43 by G3 (tgm80@mail.ru) 21 bytes
;fasm.exe entry.asm entry.com
org 100h
start: ;si=0100h, bp=09xxh, di=FFFEh
mov ah,07h ;
mov dl,′#′ ;выводимый символ
int 21h ;первый раз ввод символа, потом вывод
not word[si-100h+$] ;сменить на or [bp+di+3106h],ch; xor al,94h
xor [si],si ;сменить mov ah,07h на mov ah,06h
xchg ax,sp ;sp = 0700h + X
shl sp,1 ;sp = sp * 2
push ax ;sp = sp - 2, идея Shur
shr sp,1 ;sp = sp / 2, в конце цикла sp=06FFh
and si,sp ;в конце цикла si=0 (0100h and 06FFh = 0)
jmp si ;jmp 100h, в конце цикла jmp 0
К началу статьи





Добавил: LedWormДата публикации: 2005-08-19 23:25:59
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 7860

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какую музыку вы предпочитаете?
Techno
11% (29)
Rap
10% (26)
Rock
48% (126)
Trance
10% (27)
Pop
7% (17)
house
5% (13)
Классическую
7% (19)
Я не слушаю музыку
2% (4)

Проголосовало: 261
Программер живет на 12 этаже. После работы входит к себе в подъезд, заходит в лифт, нажимает 1, потом 2, а потом судорожно ищет клавишу "Enter"...
Рейтинг: 2.2/10 (4)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » Задачи » С решениями