Консультация № 199092
23.08.2020, 14:33
0.00 руб.
0 22 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
С чего начать изучение ассемблера? Я решил его изучить благодаря книги - аблязов Программирование на ассемблере на платформе x86-64. Но я ничего не понимаю, что написанно в данной книге.Тогда решил взять книгу - калашников ассесмблер это просто!Но пообщавшись с другими челиками которые кодят на асм - они сказали, что она устарела и в ней много ненужной инфы... И лучше за нее не браться.
Под какие ос я хочу кодить на асм:
1)Windows
2)Linux
Под какие платформы?:
1)x64
2)x86
Я так понимаю, что x86 - это x32? И чем отличается x64 от x86 в плане программирование на асм? Только регистрами или еще чем нибудь?
Предпочтительны: MASM and FASM.
Я в растерянности, не знаю, хотя б как начать, не то, что продолжить....

Буду признателен, если ответите.

Обсуждение

давно
Мастер-Эксперт
259041
7459
23.08.2020, 15:35
общий
23.08.2020, 15:38
Адресаты:
Вы писали : "я ничего не понимаю, что написанно в данной книге" - это естественно, потому что Assembler - трудный для понимания, абстракный язык. Изучать его имеет смысл только продвинутым программистам, которым явно не хватает производительности в процессе выполнения больших программ, написанных ими на лёгких, высокоуровневых языках.

"Я так понимаю, что x86 - это x32?" - Да. Но этот Ваш вопрос означает, что Вы не есть профессионал в программировании. И поэтому начинать изучение программирования с Ассемблера - это так же безуспешно, как пытаться учить первоклашек интегрированию.

"не знаю, хотя б как начать" - начните с лёгких для понимания языков. VBScript - самый практичный язык для работы с файлами, папками, текстами, ДатаВремя-данными и комп-инструментами. VBScript проще, чем Basic и прочие языки по той причине, что он не нуждается в компиляции и работает в любой Windows-системе сразу после правки кода. Советую Вам начать изучение прог-языков с VBScript .
На портале rfpro.ru есть раздел JavaScript / VBScript Ссылка на rfpro.ru/ask/651 , в котором эксперты помогут Вам в теме "Создание программ на языках JavaScript и VBScript" .
давно
Старший Модератор
31795
6196
24.08.2020, 18:20
общий
Адресаты:
1)Этапы развития CPU
  • Реальный режим х86(16-ть бит);
  • Защищенный режим х86(х286 -20-ть бит, х186 - пробыл не долго, т.к. была ограниченная партия);
  • Защищенный режим х386+(32-а бита);
  • Защищенный режим х386+(64-е бита).


2)Под каждый CPU - писалассь соответсвующая ОСЬ.
3)Каждая ОСь - имеет свои особенности, в программировании на чистом ассемблере.
4)Каждый процессор - имеет свои особенности, в программировании на чистом ассемблере без ОСи.
5)Большенство преподов рекомендуют начать таки с реального режима, т.к. есть возможность изучить основы программирования на чистом CPU - понять вкус этого "адреналина". А если говорить серьезно: от простого к сложному - позволяют быстрее пререходить от одного этапа развития CPU, к другому. Изучать №№3-4 самостоятельно очень трудно. В книгах пишут в основном о х86 - 16-ть бит. Иногда о чистом 32-х битноном режиме под ту или иную ОСь. Книга: Аблязов Р. Программирование на ассемблере на платформе х86-64, в некотором роде исключение.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
24.08.2020, 18:54
общий
Адресаты:
Цитата: Алексеев Владимир Николаевич
Assembler - трудный для понимания, абстракный язык.

Каждый бит в КОП'е что-то, да означает, операнды, размер опрерандов, направление передачи данных. Ну, да это
куда "абстрактней" чем в
Цитата: Алексеев Владимир Николаевич
JavaScript и VBScript

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
25.08.2020, 11:17
общий
Адресаты:
Какой у Вас РС?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404308
10
25.08.2020, 12:31
общий
Адресаты:
У меня:
i3 x64
ssd 256gb
8gb ОЗУ
Win 10
давно
Старший Модератор
31795
6196
25.08.2020, 12:59
общий
Адресаты:
Чтобы начать Вам нужен DOSBox
Есть вресии под:
Mac OS X 0.74-3-1 dmg (Universal)
Windows 0.74-3 Win32 installer
Fedora 0.74-3 rpm
Source 0.74-3 Source
Debian 0.74-3 deb
FreeBSD package 0.74-2 ports
RISC OS 0.74-2 zip
Gentoo Linux 0.74 portage
OS/2 0.74 exe (OS2)
Solaris 10 - sparc 0.73 pkg
BeOS

Как работать.

Возможности компиляторов.

Список книг, основная масса написана под WIN'ь, но для старта достаточно.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404308
10
25.08.2020, 13:07
общий
Адресаты:
Спасибо!
давно
Старший Модератор
31795
6196
25.08.2020, 13:15
общий
Адресаты:
Определитесь с выбором, дальше перейдем к первому старту программы(это как велосипед - одинраз научился ).
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
25.08.2020, 15:05
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
дальше перейдем к первому старту программы

Цитата: valerius
мы?

Вы можете к примеру посмотреть видеоуроки: Ссылка >> или Ссылка >>. их много этих курсов. Самостоятельно.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
26.08.2020, 14:13
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
Определитесь с выбором,

Вы определились?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404308
10
26.08.2020, 15:23
общий
Адресаты:
Да, определился:
Калашников Ассемблер это просто!
аблязов р. – программирование на ассемблере на платформе x86-64

Masm, Fasm
давно
Старший Модератор
31795
6196
27.08.2020, 09:51
общий
27.08.2020, 10:01
Адресаты:
Уточните, какой именно у Вас : Калашников О. Ассемблер. Это просто:
  • ISBN 5-94157-709-5 = 1-e издание;
  • ISBN 978-5-9775-0591-8 = 2-e издание.

Это нужно, чтобы мы говорили на одном языке, и не было ="трудностей перевода".

Я создал папку D:\200826(число сегодня такое ), именно к этой папке, я буду подключаться:


У меня win'ь 7 32-bit, по этому буду эмулировать.

Теперь о папках:
  • x16 - тут будут хранится исходники и исполняемые файлы, различатся они будут по номеру урока = pr00.asm(исходники урока) pr00.exe(исполняемый файл) pr00.com(исисполняемый файл);
  • Masm -masm510.zip (459.9 кб) или Masm_613.zip (12.03 Mб);
  • Tasm -
  • [tasm2.zip (580.5 кб) .

В двух последних папках будут хранится различные компиляторы tasm и masm

В книге Олега, код основан на Tasm и Masm
Берете ссылки и распаковываете в соответсвующие папки:

В папке х16 создаем ВАТ-файл.
у меня такой, с полными путями(моими):
Цитата: ТС2
D:\CAT\_Lang\Tasm\tasm.2\tasm %1
D:\CAT\_Lang\Tasm\tasm.2\tlink %1 /t


У Вас будет он, что-то в таком-же духе:
Цитата: ТС2
..\Tasm\tasm.2\tasm %1,,,
..\Tasm\tasm.2\tlink %1,,, /t


У Вас должно получится, что-то вроде этого:


И так:
  • Монтируем диск;
  • Переходим на диск;
  • Переходим в папку;
  • Смотрим содержимое папки;
  • Смотрим содержимое обоих файлов;
  • Компилируем с помощью ВАТ-файла;
  • Запускаем.


Всё.

Показан, пример на Tasm, т.к. он более дружелюбен к начинающим и у него простой интерфейс. При этом формируется полный набор файлов:


В Masm, чтобы сделать тоже нужен набор ключей .
Код:

d:\CAT\_my>D:\CAT\_Lang\Masm\Masm.613\BIN\ml /?
ML [ /options ] filelist [ /link linkoptions ]
/AT Enable tiny model (.COM file) /nologo Suppress copyright message
/Bl<linker> Use alternate linker /Sa Maximize source listing
/c Assemble without linking /Sc Generate timings in listing
/Cp Preserve case of user identifiers /Sf Generate first pass listing
/Cu Map all identifiers to upper case /Sl<width> Set line width
/Cx Preserve case in publics, externs /Sn Suppress symbol-table listing
/coff generate COFF format object file /Sp<length> Set page length
/D<name>[=text] Define text macro /Ss<string> Set subtitle
/EP Output preprocessed listing to stdout /St<string> Set title
/F <hex> Set stack size (bytes) /Sx List false conditionals
/Fe<file> Name executable /Ta<file> Assemble non-.ASM file
/Fl[file] Generate listing /w Same as /W0 /WX
/Fm[file] Generate map /WX Treat warnings as errors
/Fo<file> Name object file /W<number> Set warning level
/FPi Generate 80x87 emulator encoding /X Ignore INCLUDE environment path
/Fr[file] Generate limited browser info /Zd Add line number debug info
/FR[file] Generate full browser info /Zf Make all symbols public
/G<c|d|z> Use Pascal, C, or Stdcall calls /Zi Add symbolic debug info
/H<number> Set max external name length /Zm Enable MASM 5.10 compatibility
/I<name> Add include path /Zp[n] Set structure alignment
/link <linker options and libraries> /Zs Perform syntax check only

В Tasm, они тоже есть, но
Код:
d:\CAT\_my>D:\CAT\_Lang\Tasm\tasm.4\BIN\tasm /? 
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International
Syntax: TASM [options] source [,object] [,listing] [,xref]
/a,/s Alphabetic or Source-code segment ordering
/c Generate cross-reference in listing
/dSYM[=VAL] Define symbol SYM = 0, or = value VAL
/e,/r Emulated or Real floating-point instructions
/h,/? Display this help screen
/iPATH Search PATH for include files
/jCMD Jam in an assembler directive CMD (eg. /jIDEAL)
/kh# Hash table capacity # symbols
/l,/la Generate listing: l=normal listing, la=expanded listing
/ml,/mx,/mu Case sensitivity on symbols: ml=all, mx=globals, mu=none
/mv# Set maximum valid length for symbols
/m# Allow # multiple passes to resolve forward references
/n Suppress symbol tables in listing
/os,/o,/op,/oi Object code: standard, standard w/overlays, Phar Lap, or IBM
/p Check for code segment overrides in protected mode
/q Suppress OBJ records not needed for linking
/t Suppress messages if successful assembly
/uxxxx Set version emulation, version xxxx
/w0,/w1,/w2 Set warning level: w0=none, w1=w2=warnings on
/w-xxx,/w+xxx Disable (-) or enable (+) warning xxx
/x Include false conditionals in listing
/z Display source line with error message
/zi,/zd,/zn Debug info: zi=full, zd=line numbers only, zn=none

d:\CAT\_my>D:\CAT\_Lang\Tasm\tasm.4\BIN\tlink /? /t
Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Syntax: TLINK objfiles, exefile, mapfile, libfiles, deffile, resfiles
@xxxx indicates use response file xxxx
/x No map /c Case sensitive symbols
/m Map including public names /C Case sensitive exports & imports
/M Map with mangled public names /ye Expanded memory swapping
/s Map plus detailed segment map /yx Extended memory swapping
/l Map plus source line #s /d Warn if duplicate symbols in libraries
/i Initialize all segments /f Inhibit optimizing far calls to near
/L Specify library search paths /Gx Goodies
/n Ignore default libraries n=discard Nonresident name table
/v Full symbolic debug information r=transfer Resident names to
/Tti Specify target & image type nonresident names table
t can be d = DOS (default) /A=dd Set segment alignment
w = Windows /R[mpekv] Specify option to RLINK
x = DPMI /t Create COM file (same as /Tdc)
i can be e=EXE or d=DLL /k Suppress "No stack" warning msg
/3 Enable 32-bit processing /Ox Optimizations
/o Overlay switch c=chained fixups
/P[=dd] Pack code segments i=iterated data
/Vd.d Expected Windows version a=minimum segment alignment
/j Specify object search paths r=minimum resource alignment

Но есть и альтарнативный вариант их включения:

Советую найти ещё две книги
  • Данкан Р. Профессиональная работа в MS-DOS;
  • Зубков С. Assembler для DOS, Windows и UNIX.

В первой описаны основные принципы MS-DOS и большое количество прерываний, во второй основные команды ассемблера
и директивы компилятора.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404308
10
27.08.2020, 10:41
общий
Адресаты:
Здравствуйте! Не могли б кинуть CD файлы к книге калашников ассемблер это просто, 2-е издание, когда скачал CD с:https://vk.com/wall-51126445_20275
когда открываю у меня не корректен текст в текстовых файлах.А больше негде нет CD, сайта калашникова больше нет... Может у вас есть? Если есть киньте пожалуйста...
давно
Старший Модератор
31795
6196
27.08.2020, 13:01
общий
Адресаты:
Диск, правда не помню от какого издания.
Русский в кодировке ср866, прочитать можно в командной строке командой "EDIT"
Прикрепленные файлы:
a62b4878216a7d15f4dbfb24b3daefab.zip
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
27.08.2020, 13:11
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
У Вас должно получится, что-то вроде этого:








Комментарии постом раньше.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
27.08.2020, 15:00
общий
Адресаты:
Цитата: valerius
А по практической части? или это все?

Смотрите пост №18.

Написание кода, это за Вами.

Можно прописать в конфигурации:
mount d: d:\200826
d:
cd x16
- можно прописать в конфигурации.
Когда вы запускаете DOSBox, есть строка CONFIG: и там прописан путь к файлу, откройте его и измените его.

Ну разве ещё FASM:
Смотрите картинку:

Я добавил ещё один файл : pr01f.asm и скомпилировал его:
Код такой:
[code lang=asm];CSEG segment
org 100h
;Begin:
mov ah,9
mov dx, Message
int 21h
int 20h
Message db 'Hello, world!$'
;CSEG ends
;end Begin[/code]
Обратите внимание на различия и закомментированные строки.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
27.08.2020, 15:05
общий
Адресаты:
И перестаньте удалять свои сообщения, я их все равоно вижу.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404308
10
27.08.2020, 15:26
общий
Адресаты:
То есть практика выступает в роли создании приложений на основе изученного материала, разборе и модификации файлов-приложений находящихся в CD?
давно
Старший Модератор
31795
6196
27.08.2020, 21:18
общий
Адресаты:
Цитата: valerius
То есть практика выступает в роли создании приложений на основе изученного материала, разборе и модификации файлов-приложений находящихся в CD?

Таки -ДА. Чем больше Вы пищете кода, тем быстрее Вы освоите базовые прерывания-функции, не важно какой системы. В книге Данкан Р. Профессиональная работа в MS-DOS приводится сравнение = портирование между ОСями.


Аналогично и с компиляторами, один синтаксис заменяется другим - смотри разницу кода Tasm/Masm и FASM.
В данном случае говорится о портировании кода между компиляторами.

Т.е. если Вы хотите писать на разных ОСях и на разных компиляторах Вы должны понимать эти различия, т.е. уметь портировать одно в другое.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
29.08.2020, 17:49
общий
Адресаты:
У Вас что-либо получилось?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.08.2020, 16:33
общий
Адресаты:
Повторяю:
Цитата: Зенченко Константин Николаевич
valerius:
И перестаньте удалять свои сообщения, я их все равоно вижу.

Как админ - рассылки и как модератор:

Как модератору, мне приходят сообщения:
Удаление сообщения в мини-форуме
valerius (Посетитель) удалил сообщение в мини-форуме онлайн-консультации # 199092, оставленное valerius (Посетитель).
Текст сообщения на момент удаления:
Да все получается! Только, когда я использую прерывание 21h, я не понимаю почему именно в регистр ah загружается 9, а в регистр dx сообщение.И почему именно 9? И еще по поводу одного термина, аблязов говорит - Прерывание MS-DOS - это некая подпрограмма( часть MS-DOS ), которая находится постоянно в памяти и может вызываться в любое время из любой программы, верно?, именно прерывание ms-dos или просто прерывание?, прерывание ms-dos в каком смысле?, это только в ms-dos?Регистры ah, dx в них только эти значения можно загружать(выше) или еще чего?


Как админу рассылки мне приходят сообщения
Сообщение в мини-форуме консультации № 199092
valerius (Посетитель) оставил Вам персональное сообщение в мини-форуме консультации № 199092
дальше по тексту

Вот Вы удалили свое сообщение, я его Вижу так:

Повторяю:
Цитата: Зенченко Константин Николаевич
valerius:
И перестаньте удалять свои сообщения, я их все равоно вижу.

Ещё одно удаление своих сообщений, и я начну блокировать Вас на портале на месяц, два или бесконечность.

Теперь по Вашему вопросу:
Цитата: valerius
Только, когда я использую прерывание 21h, я не понимаю почему именно в регистр ah загружается 9, а в регистр dx сообщение


Чистое железо предоставляет только функции BIOS
При старте BIOS ищет MBR на дисках, и после этого, передает ему управление.

MBR-код запускает что-то : это может быть загрузчик ОСи(неважно какой) или код USER'a.

Но это только вершина: железо общается с внешними устройствими, с помощью портов, список Вы найдете в Control Panel\All Control Panel\Device manager
Любая ОСь предостваляет USER'у ,базовые возможностити, на освановании которых USER, пишет свой код. Я Вам давал инфо:= Данкан Р. Профессиональная работа в MS-DOS =
Цитата: Зенченко Константин Николаевич
В первой описаны основные принципы MS-DOS и большое количество прерываний
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
01.09.2020, 10:36
общий
это ответ
Здравствуйте, valerius!

Чтобы начать Вам нужен DOSBox, есть много версий. Как с ним работать..

Я создал папку D:\200826(число сегодня такое ), именно к этой папке, я буду подключаться:


У меня win'ь 7 32-bit, поэтому буду всё эмулировать.

Теперь о папках:
  • x16 - тут будут хранится исходники и исполняемые файлы, различатся они будут по номеру урока = pr00.asm(исходники урока) pr00.exe(исполняемый файл) pr00.com(исисполняемый файл);
  • Masm -masm510.zip (459.9 кб) или Masm_613.zip (12.03 Mб);
  • Tasm -
  • [tasm2.zip (580.5 кб) .

В двух последних папках будут хранится различные компиляторы tasm и masm

В книге, код основан на Tasm и Masm. Берете ссылки и распаковываете в соответсвующие папки:

В папке х16 создаем ВАТ-файл. Пример на Tasm, т.к. он более дружелюбен к начинающим и у него простой интерфейс.

У Вас ВАТ-файл будет таким:
Цитата: ТС2
..\Tasm\tasm.2\tasm %1,,,
..\Tasm\tasm.2\tlink %1,,, /t


Код с книги Калашников О. Ассемблер. Это просто ISBN 5-94157-709-5
[code lang=asm]CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
CSEG ends
end Begin[/code]

И так в DosBox:
  • Монтируем диск;
  • Переходим на диск;
  • Переходим в папку;
  • Смотрим содержимое папки;
  • Смотрим содержимое обоих файлов;
  • Компилируем с помощью ВАТ-файла;
  • Запускаем.








В каждом пакете Fasm, есть справочник по различиям Fasm < - > Tasm/Masm, изучите его и Вы будете легко портировать код с одного компилятора в другой.
Код Fasm:
[code lang=asm]org 100h
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'[/code]
Обратите внимание на различия.

Удачи!
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа