Найти в Дзене

Моя первая программка на Ассемблере

Я прирождённый изобретатель и мечтаю о том, чтобы изобрести, что то
новое, что до меня никто ещё не изобретал. Программировать на компьютере и
самому создавать свои программы, лучший способ приспособить компьютер,
под какие-нибудь новые цели. Я очень много занимался изучением языков
программирования и их конструкций. Я успешно освоил 5 языков
программирования: Assembler, BASIC, C++, HTML и Pascal. Я знаю многие
тонкости в системном программировании. Я один из лучших профессиональных
программистов.
Такие, как я программисты относятся к программированию очень серьёзно
и даже могут, на этом сделать свою карьеру. Поэтому, можно сказать, что уже довольно давно, я почти, что стал великим известным программистом,
как например Питер Нортон или Евгений Касперский. Я предчувствую, что в недалёком будущем, моим именем, будет гордится человечество. Мои программы будут продаваться моими курьерами. Меня будет знать каждый пользователь компьютера во всём мире. Я успешно могу работать с системн

Я прирождённый изобретатель и мечтаю о том, чтобы изобрести, что то
новое, что до меня никто ещё не изобретал. Программировать на компьютере и
самому создавать свои программы, лучший способ приспособить компьютер,
под какие-нибудь новые цели. Я очень много занимался изучением языков
программирования и их конструкций. Я успешно освоил 5 языков
программирования: Assembler, BASIC, C++, HTML и Pascal. Я знаю многие
тонкости в системном программировании. Я один из лучших профессиональных
программистов.
Такие, как я программисты относятся к программированию очень серьёзно
и даже могут, на этом сделать свою карьеру. Поэтому, можно сказать, что уже довольно давно, я почти, что стал великим известным программистом,
как например Питер Нортон или Евгений Касперский. Я предчувствую, что в недалёком будущем, моим именем, будет гордится человечество. Мои программы будут продаваться моими курьерами. Меня будет знать каждый пользователь компьютера во всём мире.

Я успешно могу работать с системными утилитами диагностики устройств и
программ дизассемблирования, типа Code View из пакета среды программирования Macro Assembler. Мною создан целый ряд дистрибутивных программных комплексов для работе в DOS и Windows. Но, давным давно, в том памятном, уже безнадёжно далёком 2001 году, когда я ещё только, только делал первые наброски своих первых программных проектов, у меня родилась идея написать на языке Ассемблера, такой системный драйвер, который позволял бы сделать из компьютера робота.
Прежде, всего для этой цели надо было модернизировать чёрно-белый принтер, типа EPSON и Системный блок с монитором. А клавиатура, в этом изобретательском проекте играет вспомогательную роль.
Идея проекта, была такова для того, чтобы из компьютера сделать автоматического робота, необходимо использовать операционную систему MS-DOS любой версии.
Лучше, всего её загружать в этом случае, не с жёсткого диска, а с системной гибкой дискеты. При этом, операционная система MS-DOS должна загружаться не для того, чтобы пользователь в ней работал, а для того чтобы написанный мною системный драйвер заставлял компьютер постоянно, работать в автоматическом режиме.
Исполняемый файл, этого системного драйвера представляет собой программу
ATRB3.EXE

Вы может быть спросите, почему именно 3, а не другое число. Так, именно 3 потому, именно третья версия этого драйвера, у меня получилась удачная. Нетрудно понять, что ATRB это сокращённое название двух слов: Автоматический робот. Для загрузки операционной системы MS-DOS c помощи этого драйвера, командный файл CONFIG.SYS должен быть, настроен следующим образом:

SWITCHES /F /N
NUMLOCK = OFF
BREAK = ON
DOS = HIGH, UMB
FILES = 10
BUFFERS = 10
FCBS = 8
STACKS = 18, 512
DEVICE = HIMEM.SYS
INSTALL = INFO.EXE
INSTALL = ATRB3.EXE

Стоит обратить внимание, в данной конфигурации системные файлы
AUTOEXEC.BAT и COMMAND.COM отсутствуют. Так, как все функции автоматической работы компьютера без непосредственного участия пользователя, передаются программе-драйверу ATRB3.EXE
в интерпликаторе команд COMMAND.COM полностью отпадает всякая необходимость.
Нет, никакой надобности здесь и во втором командном загрузочном файле, типа AUTOEXEC.BAT Все функции, по загрузки системы с нужными параметрами может выполнять, только один командный файл CONFIG.SYS

Итак, системная дискета с которой должна загружаться система в данном режиме, должна содержать следующий пакет нужных файлов:
IO.SYS - главный загрузочный модуль MS-DOS
MSDOS.SYS - второй обязательный системный файл
HIMEM.SYS - драйвер расширенной оперативной памяти
CONFIG.SYS - командный файл настройки загрузки системы (его текст представлен выше)
INFO.EXE - программа вывода на экран информации о загрузке драйвера.
ATRB3.EXE - программа-драйвер автоматической работы компьютера, без помощи человека.

На системной дискете, в данном случае могут быть, только эти шесть файлов. Любые другие остальные файлы - не нужны, их смело можно удалить с нашей дискеты. Теперь, для того, чтобы всё заработало, нужно перед тем как нажать кнопку POWER на системном блоке, включить кнопку ON LINE и всё готово. Если, конечно вместо листа бумаги, вставить бумажную муфту. Пишущая лента в принтере, здесь тоже не нужна. Программа ATRB, предназначена для
автоматической работы периферийного оборудования подключаемого периферийного оборудования, подключаемого
к параллельному порту системного блока компьютера LPT1.

С помощи программы ATRB вы протестируете, ваше периферийное устройство (принтер или другое) как на работоспособность, так и на возможность работы в автоматическом режиме.
Пользоваться программой ATRB нужно так :
В начале, включите периферийное устройство, на кнопку ON LINE Затем, если это принтер вставьте в него чистый лист бумаги. После этого, запустите программу ATRB. Когда программа ATRB будет загружена, по её запросу два раза нажмите любую клавишу. Потом периферийное устройство начнёт свою работу, если конечно оно исправное. Лучше конечно, если при этом
бумагу вставленную в принтер, склеить с помощи липкой ленты (прямо в нём) в замкнутую муфту. Тогда устройство всё время будет работать, в постоянном автоматическом режиме, пока его не выключишь.

В последствии, я создал для автоматической работы компьютера программный комплекс AUTOINT4 который является более совершенный, чем системный драйвер ATRB3 и к тому же состоит, из куда большего числа файлов. Но, а ATRB3 навсегда, в моей памяти останется одним из первых набросков. Теперь, когда я будучи опытным системным программистом, могу зарабатывать деньги на более совершенных проектах, я с теми из вас, кто разбирается в языке
Ассемблера, могу поделится исходным текстом этой программы:

TITLE Programma Auto Robot Tsr - Version 3.1
TEXT SEGMENT 'CODE'
ASSUME CS:TEXT, DS:TEXT
ORG 100H

MAIN PROC
;Section Program executy :
ENTRY:

AND BYTE PTR [SI+69],CL
DB 110 ;OUTSB
DB 101, 58 ;CMP AH,BYTE PTR GS:[BX+SI]
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BP+69],AL
DB 108 ;INSB
DB 101, 58 ;CMP AH,BYTE PTR GS:[BX+SI]
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH

AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
PUSH CX
JNZ Varianty2
JZ Varianty1
AND BYTE PTR [DI+53],AL
INC BX
AND BYTE PTR [BX+SI],AH
AND BYTE PTR [BX+SI],AH
DEC BP
DB 111 ;OUTSW
JBE Vozvrate3
CMP AH,BYTE PTR [BX+SI]
SBB BYTE PTR [BX+SI],AH
SBB WORD PTR [BX+SI],SP
PUSH AX
INC DI

PUSH BP
PUSH AX
AND BYTE PTR [BX+SI+47],DL
INC SP
DEC SI
AND BYTE PTR [BX+SI+4Fh],CL
DEC BP
INC BP
AND BYTE PTR [DI+4Eh],AL
INC SP
AND BYTE PTR [BX+DI],AL
ADD BYTE PTR [SI-4FB5h],DH
ADD BYTE PTR [SI-4FC3h],DH
ADD BYTE PTR [SI-47B1h],DH
ADD AL,BYTE PTR [BX+SI]
MOV AH,2D
MOV BX,0001
MOV AX,0000

Varianty1: MOV AX,0002
MOV AH,34
MOV BX,0001
DB 180, 75 ;MOV AH,4B
MOV AL,00
MOV AH,3D
MOV AL,00
MOV AH,4Fh
MOV AX,0002
MOV AH,2D
MOV BX,0001
MOV AX,0000
MOV AX,0002
MOV AH,34

MOV BX,0001
DEC SI
INC DX
XOR BYTE PTR [BX+SI],BH
FADD DWORD PTR [BP+SI] ;Control tochka 1

Varianty2: ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BX+SI],AL
ADD WORD PTR [BX+SI],AX
ADD WORD PTR [BX+SI],AX
INC BX
PUSH SI

Vozvrate3: ADD WORD PTR [BX+SI],AX
ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BX+SI],AL
MOV WORD PTR [BX+DI],ES
ADD BYTE PTR [BX+SI],AL
OR WORD PTR [BX+DI+74],SP
XOR BP,WORD PTR [7361]
DB 109 ;INSW
ADD BYTE PTR [BX+SI],AL
ADD WORD PTR [BX+SI],AX
ADD BYTE PTR [BX+SI],AL
OR AL,BYTE PTR [BX+SI]

ADD AX,5800
ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BX+DI],AL
ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BP+SI],DL
ADD BYTE PTR [BX+DI],CL
ADD BYTE PTR [BX+DI],AL
ADD BYTE PTR [BX+SI],AL
ADD BYTE PTR [BX+DI],CL
DB 97 ;POPA
DB 98, 51 ;BOUND SI,WORD PTR [BP+DI]
DB 111 ;OUTSW
DB 98, 106, 0 ;BOUND BP,WORD PTR [BP+SI]
ADD BYTE PTR [BP+SI],DH

ADD BYTE PTR [BX+DI],AL
ADD BYTE PTR [BX+DI],AL
ADD AX,WORD PTR [BX+SI]
ADD BYTE PTR [BP+DI],CH
DEC BP
DB 105, 99, 114, 111, 115 ;IMUL SP,[BP+DI+72],736F
DB 111 ;OUTSW
DB 40, 82, 41 ;SUB BYTE PTR [BP+SI+29],DL
AND BYTE PTR [DI+61],CL
DB 99, 114, 111 ;ARPL WORD PTR [BP+SI+6F],SI
MAIN ENDP

TEXT ENDS
END MAIN

Могу поделиться, также и комбинацией исполняемого файла ATRB3.EXE
в коде ASCII:
4D 5A 9C 00 02 00 00 00 20 00 11 00 FF FF 0A 00
00 01 00 00 10 00 00 00 1E 00 00 00 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20 4C 69 6E 65 3A 20 20 20 20 20 20 20 20 20 20
46 69 6C 65 3A 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 51 75 69 74 3A 20 45 53 43 20
20 20 20 4D 6F 76 65 3A 20 18 20 19 20 50 47 55
50 20 50 47 44 4E 20 48 4F 4D 45 20 45 4E 44 20
01 00 B4 4B B0 00 B4 3D B0 00 B4 4F B8 02 00 B4
2D BB 01 00 B8 00 00 B8 02 00 B4 34 BB 01 00 B4
4B B0 00 B4 3D B0 00 B4 4F B8 02 00 B4 2D BB 01
00 B8 00 00 B8 02 00 B4 34 BB 01 00 4E 42 30 38
A4 01 00 00 00 00 00 00 00 00 43 56 09 61 74 72
62 35 2E 6F 62 6A 00 00 02 00 04 00 70 00 00 00
40 00 00 00 2E 00 00 00 0E 00 03 01 00 00 03 00
00 00 04 5F 65 6E 64 00 0E 00 03 01 00 00 03 00
00 00 05 5F 5F 65 6E 64 12 00 03 01 00 00 03 00
00 00 06 5F 65 64 61 74 61 00 00 00 12 00 03 01
50 00 02 00 00 00 07 4C 49 4E 45 4E 55 4D 00 00
12 00 03 01 00 00 03 00 00 00 07 5F 5F 65 64 61
74 61 00 00 12 00 03 01 00 00 02 00 00 00 08 53
54 41 54 4C 49 4E 45 00 06 00 00 00 28 00 00 00
2C 00 00 00 30 00 00 00 38 00 00 00 3C 00 00 00
40 00 00 00 01 00 01 00 02 00 01 00 01 00 00 00
6C 00 00 00 58 00 00 00 30 00 00 00 44 00 00 00
20 00 00 00 10 00 00 00 03 00 00 00 16 00 00 00
16 00 00 00 1E 00 00 00 00 00 02 00 04 00 6C 00
00 00 44 00 00 00 10 00 00 00 20 00 00 00 30 00
00 00 58 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
04 00 03 00 05 00 00 00 02 00 00 00 00 00 06 00
00 00 00 00 10 00 00 00 05 00 00 00 03 00 01 00
0B 00 11 00 00 00 00 00 8C 00 00 00 0D 00 00 00
03 00 01 00 16 00 1C 00 90 00 00 00 00 01 00 00
0D 00 00 00 01 00 01 00 22 00 FF FF 00 00 00 00
8C 01 00 00 5F 54 45 58 54 00 43 4F 44 45 00 5F
44 41 54 41 00 44 41 54 41 00 53 54 41 43 4B 00
53 54 41 43 4B 00 44 47 52 4F 55 50 00 00 00 00
10 00 0C 00 07 00 00 00 00 00 00 00 00 00 00 00
20 01 01 00 08 00 00 00 12 00 00 00 2A 01 FF FF
1C 00 00 00 EE 00 00 00 29 01 FF FF 0C 01 00 00
10 00 00 00 28 01 FF FF 1C 01 00 00 00 00 00 00
2B 01 FF FF 1C 01 00 00 08 00 00 00 2D 01 FF FF
24 01 00 00 54 00 00 00 2E 01 FF FF 78 01 00 00
29 00 00 00 4E 42 30 38 10 02 00 00

Но, а делать эту программу, лучше всего в версии Macro Assembler фирмы
Microsoft версии 6.11 Таким образом:

КАК СОЗДАВАЛАСЬ ПРОГРАММА АTRB3.EXE

1-Й ЭТАП : ТРАНСЛЯЦИЯ
C:\ASSEMB~1>masm /zi /z /n atrb3, atrb3, atrb3;

Microsoft (R) MASM Compatibility Driver
Copyright (C) Microsoft Corp 1993. All rights reserved.

Invoking: ML.EXE /I. /Zm /c /Zi /Sn /Fl atrb3.asm

Microsoft (R) Macro Assembler Version 6.11d
Copyright (C) Microsoft Corp 1981-1995. All rights reserved.

Assembling: atrb3.asm

2--Й ЭТАП : СОЗДАНИЕ БИБЛИОТЕЧНОГО МОДУЛЯ

C:\ASSEMB~1>lib atrb3.lib + atrb3.obj, atrb3.lst


Microsoft (R) Library Manager Version 3.20.010
Copyright (C) Microsoft Corp 1983-1992. All rights reserved.

3--Й ЭТАП : КОМПОНОВКА

C:\ASSEMB~1>link /co atrb3.lib, atrb3.exe;


Microsoft (R) Segmented Executable Linker Version 5.31.009 Jil 13 1992
Copyright (C) Microsoft Corp. 1987-1992. All rights reserved.

LINK : warning L4021 : no stacks segment
Microsoft Debugging Information Compactor Version 4.01.00
Copyright (c) 1987-1992 Microsoft Corporation

Line/Address size - 196
Public symbol size - 40
Initial symbol size - 189
Final symbol size - 168
Global symbol size - 40
Initial type size - 20
Compacted type size - 36


В итоге, размер программного файла Atrb3.exe должен составить 1196 байт. Другого размера, ни на байт меньше, ни на байт больше, он не должен иметь!!!!
Дальнейшая отладка, программы Atrb3.exe, с помощи утилиты "CodeView" не потребуется.

Программа Atrb3.exe (если, её размер составляет 1196 байт), готова к выполнению сразу после компоновки.

Скачать исходники, исполняемые файлы и эту информацию в виде справочных текстовых файлов можно по ссылкам:

Исходники
https://disk.yandex.ru/d/ifzbQHLxvSsTsA
Исполняемые программы
https://disk.yandex.ru/d/kJqHqF7EaY1auQ
Справочная информация
https://disk.yandex.ru/d/muHV0DQstP9eeA

ВНИМАНИЕ:

Многие из исходников, представленных здесь программ, а также файлов документации к ним (типа READ ME) имеют русскоязычный DOS-формат. Так многие из них, создавались на компьютерах со старой 16-ти разрядной системой DOS.

ПОЭТОМУ, для конвертирования файлов исходников программ и документации в формат Windows, лучше всего воспользоваться программой текстового редактора Microsoft Word из пакета Microsoft Office 2003.

При открытии файлов исходников (с расширениями *.ASM, *.BAS, *.PAS, *.CPP, *.INC и прочих) появляется диалоговое окно, в котором надо выбрать опцию "Формат DOS", а затем нажать <ENTER> или кликнуть левой клавишей мыши на кнопку "OK".

С файлами документации (с расширениями *.TXT, *.LOG, *.DOC и прочих) приложенным к исходникам данных программ для их конвертации из формата DOS в формат Windows, следует поступать также, с помощи этой же программы Microsoft Word из пакета Microsoft Office 2003.

-2
-3
-4
-5
-6
-7
-8
-9