gifts2017

Программа - шутка, демонстрация возможностей CMD скриптов.

Опубликовал Дмитрий Дрейцер (MadDAD) в раздел Программирование - Теория программирования

Демонстрашка возможностей скриптов
Это CMDшка которая компилит маленькую программку при помощи "debug". Программка просто отображает бегущую строчку. Потом удаляется тем же скриптом.

Скрипт:

8<--------------------------------------------------------------------------------------------------------------------------------------------------
echo off
goto Self

a 100
mov cx,01C4
push cx
push cx
mov ah,0 ;­ з «® в ©¬Ґа 
int 1A
mov bx,dx
add bx,0
int 1A
cmp dx,bx
jle 010E ; Є®­Ґж в ©¬Ґа 
pop cx
mov si,014D
sub cx,01C4
sub si,cx
mov di,400
mov cx,14
rep movsb
mov byte ptr [di],24
mov bh,0
mov dx,0c1f
mov ah,02
int 10
mov dx,400
mov ah,09
int 21
mov ah, 86
inc cx
inc cx
xor dx,dx
int 15
mov ah,01
int 16
pop cx
jnz 014C
loop 0103
jmp 0100
ret
db " __-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-"
db " ќв® ¤«ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ­­ п бва®Є . Њ®¦Ґв Ўлвм ¤®"
db " 64Є ¤«Ё­®©. Ђ ҐйҐ вгв ¬®¦Ґв Ўлвм §«®ўаҐ¤­л© Є®¤ Є®в"
db "®ал© § а §Ёв ўбҐ ‚ иЁ ¤®Єг¬Ґ¬­вл Ё ЇҐаҐЇЁиҐв"
db " DBF­лҐ д ©«ҐЈЁ!!!!!!! Ќ® ў®®ЎйҐ-в® нв® Їа®бв® ¤Ґ¬®­б"
db "ва жЁп в®Ј®, зв® ¬®¦­® § ЇЁе вм  бᥬЎ«Ґа­л© «ЁбвЁ­"
db "Ј ў CMDиЄг Ё бЄ®¬ЇЁ«Ёвм ҐЈ® бв ­¤ ав­л¬Ё б।бвў ¬"
db "Ё Windows. ‚®®ЎйҐ ¬®¦­® нв® § ЇЁе вм ў «оЎ®© бЄаЁЇв."
db " „ ¦Ґ ў 1‘­л© ¬®¤г«м. C ­ Ё«гзиЁ¬Ё Ї®¦Ґ« ­Ёп¬Ё MadDAD. $"

rcx
219
n r_string.com
w
q

If "%1"=="" goto self

:exit

exit

:self

debug < %0 > %~DPN0.log
cls
r_string.com
echo Y|del r_string.com
goto exit

8<--------------------------------------------------------------------------------------------------------------------------------------------------

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Str.cmd
.1214868618 1,26Kb
25.09.09
8
.1214868618 1,26Kb 8 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Brr (brr) 01.07.08 08:59
Строка в какой кодировке?
2. Дмитрий Дрейцер (MadDAD) 01.07.08 09:20
Строка как и комментарии к коду в кодировке 866 (DOS)
3. Андрей (andrewalexk) 01.07.08 10:56
:)
.. а без скринов не кошерно...
aleks_cons; +1 Ответить
4. Дмитрий Дрейцер (MadDAD) 02.07.08 02:23
Да ам вобщем то скринить нечего :)
5. dolly_ev (Dolly_EV) 02.07.08 08:32
Подскажите для неассемблиста - чем регулируется видимая ширина строкии "плавность" (а то как-то рывками все...)
aleks_cons; +1 Ответить
6. Дмитрий Дрейцер (MadDAD) 02.07.08 08:45
jle 010E ; Конец таймера
pop cx
mov si,014D
sub cx,01C4
sub si,cx
mov di,400
mov cx,24 ; <- Это длина строки (отображается от начальной позиции)
rep movsb
mov byte ptr [di],24
mov bh,0
mov dx,0c1f ; <- А вот тут задается начальная позиция (экран - как длинная строка, вектор 80*25)
mov ah,02
int 10

Плавнее, даже не знаю, можно задержку в таймере сделать, а лучше распахнуть на полный экран, тогда все будет плавно :)... Забыл сказать вроде тут таймер вообще не включен(add bx,0) ...
7. Дмитрий Дрейцер (MadDAD) 03.07.08 07:22
Вот нашел статью которая сподвигла... http://wasm.ru/article.php?article=nocompiler

В код приведенный в статье я добавил таймер.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа