Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > микрокод


Автор: man2002ua 20.11.2002, 01:42
Это вопрос из другого форума - там правда обсуждение не очень, решил перенести его сюда (не сочтите за хамство, просто очень интересно)

задача - вывести сообщение "Hello world!" уместив код и данные в 16 байтах программы.

Автор: AntonSaburov 20.11.2002, 01:51
Ну если на старом DOS, то вообщем то где-то так и получится.
До конца все не помню, но если память не изменяет, то через 21h (функция 9)прерывание можно вывести строку, начало которой находится в регистрах. Только надо для ассемблера указать, что это не .exe, а .com
ORG 100H - хотя могу здесь наврать. На ходу не вспомнить. Вообщем, что-то в этом роде.

Автор: man2002ua 20.11.2002, 01:53
повторяю - длина строки 13 байт
остается 3... прерывание CD 21 и retn = 3 байта

Автор: AntonSaburov 20.11.2002, 02:22
Ты хочешь код получить ?
Ну не помню я уже так хорошо асм. Может и правда для моего случая надо чуть больше. Неужели это так волнует ?

Автор: man2002ua 20.11.2002, 02:25
код хочется увидеть. Раз сказано, что можно уложиться в 16 байт - мне например очень интересно как.

Автор: AntonSaburov 20.11.2002, 02:29
Увы, работать надо, да и на машине сейчас кроме JAVA нет ничего. Попробуй сам. Если получится - напиши.

Автор: Vit 20.11.2002, 02:53
Можно уместить в 12 байтов - создаёшь BAT файл, пишешь в него "Hello world!", на экран эта запись при запуске попадёт, что и требуется...


Автор: man2002ua 20.11.2002, 02:57
Насколько я понял вопрос того форума - bat файл нельзя использовать. Как и командную строку (т.е. программа не исп. параметры ком. строки).
---
и echo тоже  :)

Автор: Baa 20.11.2002, 09:24
А почему в теме С++? На сях написать надо чтоли? дык там стаб огромный.

Автор: Klin 20.11.2002, 18:05
Создай htm, уместишся в 12 байт!

Автор: man2002ua 20.11.2002, 18:54
ну извините! Перенесите топик в ассемблер, пожалуйста.
Задача состоит в написании *.com файла.

Автор: Sail Destiny 16.2.2003, 19:47
Я над этой же задачкой 4 день думаю.
Еще на http://asm.shadrinsk.net/ некий Anshik сказал, что может в 16 байт.
Наверно это чью-то злая шутка.
Можно попробовать самомодифицирующийся код (я ничего не придумал).
Может быть надо часть строки использовать как код, но сторка дизассемблируется в бессмысленный. Или подобрать float-число в 4 байта, которое при сохранении с помощью fbstp (двоично-десятичное 10 байт) представляло бы часть (10(!) символов) этой строки (или полезного кода). Но строка содержит байты, не используемые в 2-10 числах (e.g. "l"("эль")-6CH).
Кажется интересный вопрос smile.gif

Автор: Baa 17.2.2003, 19:50
echo Hello world!
помойму токо так... где-то я видел прогу, которая так выводила, но там грили, что надо как-то tasm.exe переправить, чтобы она её скопилила... получается ооочень мелкая...

Автор: Sail Destiny 5.3.2003, 06:16
Почти втему...
А не может ли вообще произойти, напрмер, следующее: Идет группа 2 байтных инструкций, после них стоит jmp назад на нечетное число байт - в результате попадаем вразрез какой-то инструкции, получаем другую последовательность инструкций, и вдруг она окажется полезной? Нехай удастся сжать код почти в 2 раза.

Автор: Baa 5.3.2003, 08:08
Sail Destiny, не катит... сам jmp занимает место... да и ничего там полезного не выжмешь...

Автор: Shur 5.3.2003, 16:53
У меня была другая идея - запихнуть туда генератор псевдо-случайной последовательности, который "сгенерит" последовательно эти буковки.

Автор: Sext 11.3.2003, 08:25
org 100h

begin:
mov ah, 09
mov dx, 81h
int 21h
ret
end begin

8 байт. Выводит командную строку...

запускать

A.COM hello world!$

Бакс только обязательно ставить надо...

В принципе можно прогой бакс поставить, еще уложится в 16... smile.gif

Автор: stab 11.3.2003, 08:50
to Sext ну ты крут smile.gif только вот как это с условиями задачи стыкуется? smile.gif

Автор: man2002ua 20.3.2003, 18:17
командную строку использовать нельзя smile.gif

Автор: leniviy 20.3.2003, 22:36
а имя файла из PSP можно?

Автор: man2002ua 20.3.2003, 22:38
предлагалось преподу - низзя никаких Hello_world.com

Автор: stab 21.3.2003, 22:14
man2002ua предлагаю тебе написать исчерпывающее условие задачи, а то получается так -- кто бы что ни сделал все а итоге низя smile.gif не правильно это...

Автор: man2002ua 21.3.2003, 22:17
Первые мои сообщения -
Цитата
Насколько я понял вопрос того форума - bat файл нельзя использовать. Как и командную строку (т.е. программа не исп. параметры ком. строки).

+ имя файла не использовать - я на том форуме это первым делом предложил

Автор: NightGoblin 12.4.2003, 21:41
Хм.... а код для интеловских процессоров? smile.gif

Автор: man2002ua 14.4.2003, 09:17
Давай, давай smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)