Как установить assembler на windows 10

В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных транслятор...

В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.

MASM

Используется для создания драйверов под Windows.

По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:masm32. Создадим программу prog11.asm, которая ничего не делает.

.586P
.model flat, stdcall 
_data segment 
_data ends
_text segment
start:
ret   
_text ends
end start

Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.

image
Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)

Как сказано в Википедии

MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».

Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.

MASM с сайта Microsoft

Далее скачаем MASM (версия 8.0) с сайта Microsoft по ссылке. Загруженный файл носит название «MASMsetup.exe». При запуске этого файла получаем сообщение -«Microsoft Visual C++ Express Edition 2005 required».

Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.

image

MASM в Visual Studio

Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:Program FilesMicrosoft Visual Studio 10.0VCbinml.exe.

image

Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:Program FilesMicrosoft Visual Studio 10.0VCbinamd64 и вот здесь — C:Program FilesMicrosoft Visual Studio 10.0VCbinx86_amd64.

TASM

Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.

Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».

stacksg segment para stack 'stack'
    db 12 dup ('stackseg')
stacksg ends
codesg segment para 'code'
begin proc far
 assume ss:stacksg,cs:codesg,ds:nothing
 push ds
 sub ax,ax
 push ax
 mov ax, 0123h
 add ax, 0025h
 mov bx,ax
 add bx,ax
 mov cx,bx
 sub cx,ax
 sub ax,ax
 nop
 ret
begin endp
codesg ends
 end begin

Выполним ассемблирование (трансляцию) файла abel32.asm.

image

Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.

Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:

image

Ключ /coff здесь не используется.
Линковка производится файлом link16.exe

Вот здесь приводится порядок действий, которые необходимо выполнить для запуска TASM в DOSbox. Для линковки понадобится файл DPMI16BI.OVL

FASM

В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»

Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:fasmfasmw.exe. В папке C:fasmEXAMPLESHELLO есть файл HELLO.asm.

include 'win32ax.inc' 
.code
  start:
 invoke    MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK
    invoke    ExitProcess,0
.end start

Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:fasmINCLUDEWIN32AX.INC’. Запускаем из меню Run → Run.

image

Вот ссылки на ресурсы, посвященные FASM:

→ FASM на Cyberforum’е
→ FASM на asmworld .com программы под Dos
→ Цикл статей «Ассемблер под Windows для чайников»
→ Сайт на narod’е

FASM в Linux

Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.

image

Корректность работы программы можно проверить в отладчике.

Nasm

Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.

Nasm в Linux можно установить с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.

Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.

%include "stud_io.inc"
global _start
section .text
_start: mov eax, 0
again:  PRINT "Hello"
PUTCHAR 10
inc eax
cmp eax, 5
jl again
FINISH

Выполним ассемблирование и линковку и запустим файл hello.asm.

$ nasm -f elf hello.asm
$ ld hello.o -o hello
$ ./hello

Для 64bit необходимо использовать команду nasm -f elf64 hello.asm

NASM для Windows

NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.

Ассемблирование:
nasm -f bin имя_файла.asm -o имя_файла.com

Ссылки на ресурсы, посвященные Nasm:

→ Сайт А.В. Столярова
→ Сайт, на котором лежит электронный учебник (в архиве)
→ То же самое

AS

Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.

Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».

Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s

.section .text
   .globl _start
   _start:
      movl  $1, %eax
      movl  $2, %ebx
      int   $0x80

Выполним ассемблирование (трансляцию), линковку и запуск программы:

$ as -o gas.o gas.s
$ ld -o gas gas.o
$ ./gas

Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.

.section .text
   .globl main
   main:
      movl  $1, %eax
      movl  $2, %ebx
      int   $0x80

Выполним ассемблирование (трансляцию), линковку и запуск программы:

$ gcc gas.s -o gas
$ ./gas

Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.

P.S. Про обработку строк в ассемблере на примере создания транслятора простого «эзотерического» языка можно прочитать здесь.
P.P.S. Упрощенный ограниченный набор ассемблерных инструкций используется в учебной модели компьютера Little Man Computer, которому у меня также посвящено несколько статей ссылка.

In this guide you will learn how to install MASM32 on a Windows 10 machine, and also how to modify the Path environment variable to use the MASM tools directly from the command prompt. By the end of the guide you will have an environment to start writing software in assembly.

Let’s begin.

Download MASM for Windows 10

The first thing you need to do is head over to the MASM32 SDK download page. Select a mirror and your download should begin.

Next open up the archive and extract the installer to your desktop.

Installing MASM on Windows 10

Double click on the installer. It will ask for administrator privileges. This application is deemed to be safe so you can safely press yes. After you have granted permissions you will see a dialog similar to the one below:

Click on the install icon on the top left and select the drive you want to use to install MASM. I will select my D: partition. MASM will install all the necessary files to the root directory of whatever partition you select.

Tip: I like to create a separate partition for my assembly projects and install MASM to the root directory of the partition. This makes it much easier to include libraries and includes such as windows.inc and friends.

MASM will proceed to run a bunch of tests to see if you’re computer is compatible and able to run MASM32. You will see a number of dialog boxes appear that require you to press the ok button.

Once the tests are complete press the extract button.

After the extraction has completed you will see another dialog box that informs you a command prompt will appear to complete the installation. Press ok and let the installation finish. It should only take a few moments.

After the installation has finished you will once again see a couple of dialog boxes that require you to press ok. You will also see a different type of dialog box similar to the one below. This runs a VB script to add an icon to your desktop for the MASM editor. If you want an icon on your desktop press yes.

Finally if everything went well you will see the final dialog box telling you the installation is complete.

Don’t run off just yet

I don’t use the default MASM editor. Instead I use Vim, or Sublime. This means I need to call the MASM compiler and linker directly from the command line to build my code. To do this you need to add the location of the MASM32 installation directory to your Path environment variable.

Adding a directory to environment variable Path on Windows 10

Open up the system properties dialog by entering the following command on the command prompt:

sysdm.cpl SystemProperties

Click the advanced tab, and click the Environment Variables button.

Next select the Path item from the list and click Edit.

On the next dialog press New and enter the path to the MASM bin directory. This contains the tools needed to compile and link assembly. For me the path is D:masm32bin. In most cases just change the drive letter if you installed to a different partition. The rest of the path is the same.

Press the ok button, and then then the apply button to save and close the system properties dialog.

Open a new command prompt and enter the following command to run the MASM assembler:

ml 

If everything installed correctly and your Path is setup correctly you will see some output similar to the image below:

💡 Assembly Language Weekly Newsletter

Every week I publish a newsletter that contains tutorials, tips, tricks and resources related to assembly language. If you would like to receive this newsletter subscribe here: http://eepurl.com/ghximb

All Done!

And that’s all there is to it folks. If you want to hit the ground running check out my guide on how to compile and link MASM assembly to produce an executable on Windows 10.

If you’re having any issues following this guide please leave a comment and I will help you the best I can. You can also check out the official documentation includes detailed installation instructions and FAQ’s to solve common problems.

MASM is an assembler developed and maintained by Microsoft. MASM (8086) won’t run on Windows 7 or newer versions easily whereas it runs well on Windows XP. That is why in this post I am going to show you how to install MASM in Windows.

This tutorial is valid for Windows 10, 8.1, 8, 7.

So, Let’s begin.

Here are 5 steps to Install MASM in Windows.

1. Setup DOSBox on your OS

First, you have to download DOS Box for your PC

Visite this link (click here)
Click on Download
Wait 5-second download will start automatically

Download DOSBox from Sourceforge
Download DOSBox from Sourceforge

After that install DOSBox if you have any doubts about how to install DOSBox, Here is a Guide on how to install DOSBox on Windows.

2. Download 8086.rar

Visit this link (click here)
Click on Download

3. Setup 8086.rar

Open the zip file that you downloaded in step 2.
Copy the 8086 folders in drive C:

4. Create Assembly file (.asm)

Open your favorite code editor,
Enter the following code

; Hello World program by 360 Tech Explorer’s

DATAS  SEGMENT
     STRING  DB  'Hello World!',13,10,'$'

DATAS  ENDS

CODES  SEGMENT
     ASSUME    CS:CODES,DS:DATAS

START:
     MOV  AX,DATAS
     MOV  DS,AX

     LEA  DX,STRING

     MOV  AH,9
     INT  21H 

     MOV  AH,4CH
     INT  21H
CODES  ENDS
END   START

Save this file with the “.asm” file extension.

5. Run Assembly file (.asm) in Windows

Open DOSBox by clicking on it.
Enter the following command in DOSBox

Z:> mount c c:8086

This command will mount 8086 directory as C drive for DOSBox

Then, execute the following command to navigate into drive C

Z:> c:

If you want to write a new assembly file, execute the following command

C:> edit file_name.asm

If you already have the Assembly file, follow the following steps

Copy your Assembly file to the “C:/8086” folder (remember the name)
Then execute the following to run that file

C:> masm your_file_here.asm
C:> link your_file_here.obj
C:> your_file_here.exe

Before we get started with TASM installation on a Windows machine, let’s get some knowledge about TASM and learn what it will do for us.

Turbo Assembler (TASM) a small 16-bit computer program which enables us to write 16 bit i.e. x86 programming code on 32-bit machine. It can be used with any high level language compliers like GCC compiler set to build object files. So that programmers can use their daily routine machines to write 16-bit code and execute on x86 devices.

So let get started with installation steps. Before we get started to make sure that you have the following software. If not, you can download it by clicking on it.

Requirements.

1. DosBox software.

2.  TASM installation files.

Steps

1. First, install DOSBox software on your system.

2. Just run the downloaded setup file to install as just like other software you install.

3. Then extract the TASM zip file.

4. After that copy that extracted the folder to C drive of your system.

5. Now we have to mount our C drive to DosBox so that we can use our TASM libraries there.

6. To do that go to the following path on your PC

For 32-bit PC

C:Program FilesDOSBOX-0.74

For 64-bit PC

C:Program Files (x86) DOSBOX-0.74

7. Then there you will see a file named “DOSBOX 0.74 Options” click on it to open.

8. It will open a text file in notepad. Then navigate to the last line of that file where it shows “# You can put your MOUNT lines here”.

9. Add the following lines after that.

mount c c://tasm

c://

10. And save that file.

11. And now open DOSBOX. You’re done.
12. To run a TASM program copy your program file into the TASM folder which is under your C: drive.

13. And now open DOSBOX. And navigate to the TASM folder by typing cd TASM and hit enter.

14. Now type tasm  <program_name>. Replace <program_name> with your actual program name. in my case, my program name is the timer so I will type tasm timer.asm

15. After you hit enter. You will see an error, warning messages. If there isn’t anything wrong with your program syntactically, you will see none there.

16. And now link your program to that type tlink <program_name> and hit enter. And now execute program by typing <program_name> only.
17. The program will start executing. To stop execution type exit and hit enter.

So in this way you can install TASM on your system and execute x86 code on your machine. This tutorial is applicable to Windows 7/8/8.1/10.

If you face any problem while doing this, make sure that you hit the comment below with your problem.

via

Содержание

  1. MASM под Windows: быстрый старт
  2. Установка MASM
  3. Простейшая программа
  4. Трансляция и запуск программы
  5. Как это устроено
  6. Командный файл для упрощения запуска
  7. Assembler. Установка интерпретатора и запуск первой программы через DOSBox
  8. Регистры
  9. Флаги
  10. Маленькая шпаргалка для заметок:
  11. GUI Turbo Assembler 5.0 (TASM) для Windows 10
  12. Описание и возможности
  13. Как пользоваться
  14. Загрузка и установка
  15. Инструкция по работе
  16. Достоинства и недостатки
  17. Похожие приложения
  18. Системные требования
  19. Скачать
  20. Видеообзор
  21. Вопросы и ответы
  22. Assembler на Windows 10
  23. MASM, TASM, FASM, NASM под Windows и Linux

MASM под Windows: быстрый старт

Олег Французов
2017

В этом документе кратко описан процесс установки учебной среды на основе ассемблера MASM под ОС Windows, а также порядок работы с ней.

Установка MASM

Скачайте архив c MASM с сайта arch32.cs.msu.su.

Скачайте файл prompt.bat и положите его в ваш рабочий каталог.

Простейшая программа

Для следующего шага вам потребуется текстовый редактор, пригодный для работы с программным кодом. Заметим, что Microsoft Word или встроенный в Windows редактор WordPad являются текстовыми процессорами и для работы с программным кодом непригодны. Редактор Notepad (Блокнот) подходит для работы с текстовыми файлами (plain text), но неудобен в качестве программистского редактора — в нем отсутствует подсветка синтаксиса и другие стандартные для таких редакторов функции.

Вы можете воспользоваться вашим любимым текстовым редактором или, если вы затрудняетесь с выбором, скачать простой программистский текстовый редактор Notepad2.

Примечание: Если вы решили скачать Notepad2, при первом запуске установите ширину табуляции (Tabulator width) в значение 8 при помощи меню Settings > Tab Settings.

Создайте в вашем рабочем каталоге файл hello.asm следующего содержания:

Трансляция и запуск программы

Для запуска программы требуется ее оттранслировать. Первый шаг — запуск ассемблера MASM, который построит по исходному тексту програмы объектный файл:

Аргумент /c инструктирует ассемблер выполнить только трансляцию в объектный файл, без компоновки (которую мы выполним чуть позже). Аргумент /coff указывает формат объектного файла — COFF (Common Object File Format).

Аргумент /subsystem:console говорит компоновщику, что нужно построить консольное Windows-приложение.

Как это устроено

Командный файл prompt.bat запускает окно командной строки и задает переменные окружения так, чтобы программы ml и link были доступны без указания пути к ним, а пути к include- и lib-файлам MASM также были известны.

Пути заданы жестко, поэтому и требовалось распаковать архив в строго определенный каталог.

Командный файл для упрощения запуска

Когда вам надоест каждый раз набирать три команды для трансляции и запуска программ, создайте такой командный файл (назвать его можно, например, mkr.bat — то есть make/run):

Использовать его можно будет следующим образом:

Несколько комментариев по устройству этого командного файла:

Команда @echo off отключает дублирование каждой исполняемой команды в окне командной строки.

Аргумент /nologo при вызове ассемблера и компоновщика убирает строчку “Copyright (C) Microsoft”, захламляющую экран.

%1 меняется на аргумент, который передан командному файлу, то есть имя программы на ассемблере (выше — hello.asm ).

n1 меняется на тот же аргумент, но без расширения (выше — hello ).

Связка && выполняет очередную команду, только если предыдущая завершилась успешно. В случае ошибок трансляции ваша программа запущена не будет.

То, что получилось в итоге — это простейшая система программирования, состоящая из транслятора (ассемблера MASM), текстового редактора (Notepad2 или иного, если вы его предпочли) и примитивной системы сборки на единственном командном файле.

Несмотря на простоту этой системы, она основывается на тех же общих принципах, что и более сложные системы программирования. Подробнее с этим вы сможете познакомиться на втором курсе.

Источник

Assembler. Установка интерпретатора и запуск первой программы через DOSBox

В данной статье разбирается способ установки интерпретатора и запуск файла EXE через DOSBox. Планировалось погрузить читателя в особенности программирования на TASM, но я согласился с комментаторами. Есть много учебников по Ассемблер и нет смысла перепечатывать эти знания вновь. Лично мне в изучении очень помог сайт av-assembler.ru. Рекомендую. В комментариях также вы найдёте много другой литературы по Assembler. А теперь перейдём к основной теме статьи.

Для начала давайте установим наш старенький интерпретатор.
Ссылка

Почему именно vk.com?

Я прекрасно понимаю, что это ещё тот колхоз делиться файлами через обсуждения VK, но кто знает, во что может превратиться эта маленькая группа в будущем.

После распаковки файлов, советую сохранить их в папке Asm на диск C, чтобы иметь меньше расхождений с представленным тут материалом. Если вы разместите директорию в другое место, изменится лишь путь до файлов, когда вы будете использовать команду mount.

Для запуска интерпретатора нам так же потребуется эмулятор DOSBox. Он и оживит все наши компоненты. Скачаем и установим его!
Ссылка

В папке Asm я специально оставил файл code.asm. Именно на нём мы и потренируемся запускать нашу программу. Советую сохранить его копию, ибо там хранится весь код, который в 99% случаев будет присутствовать в каждом вашем проекте.

Итак. Запускаем наш DOSBox и видим следующее:

905025751a7d037914be994ca7dec849

Для простоты сопоставим имя пути, по которому лежит наша папка Asm. Чтобы это сделать, пропишем следующую команду:

8ff1486a85fde1bf2744fd26e758d85f

Здесь вместо d: мы можем использовать любую другую букву. Например назвать i или s. А C это наш реальный диск. Мы прописываем путь до наших файлов ассемблера.

Теперь, откроем смонтированный диск:

Прописав команду dir, мы сможем увидеть все файлы, которые там хранятся. Здесь можно заметить и наш файл CODE с расширением ASM, а также дату его создания.

9f26805248b3197361b1b87b003f64f3

И только теперь мы начинаем запускать наш файл! Бедные программисты 20 века, как они только терпели всё это? Пропишем следующую команду:

После мы увидим следующее сообщение, а наша директория пополнится новым файлом с расширением OBJ.

ab88a97efa85c8ecfec60840d2821bda

Теперь пропишем ещё одну команду:

В нашей папке появилась ещё пара файлов – CODE.MAP и CODE.EXE. Последний как раз и есть исполняемый файл нашего кода assembler.

de94309fbc875167960c4cdf7e22423b

Если он появился, значит, мы можем запустить режим отладки нашей программы, введя команду последнюю команду. Обратите внимание, теперь мы не указываем расширение файла, который запускаем.

0e9d1f7bdc885fb38598f1e8f4361b40

Этот старинный интерфейс насквозь пропитан духом ушедшей эпохи старых операционных систем. Тем не менее…

Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на котором мы потренировались запускать нашу программу в режиме дебага. Реальное “волшебство” мы увидим лишь с полноценным кодом на asm.

Небольшой пример для запуска

Прога проверяет, было ли передано верное число открывающих и закрывающих скобок:

Давайте ознакомимся с имеющимися разделами.

2e7a327866eb7819501c3f863ea4ba4f

Code segment – место, где turbo debug отражает все найденные строки кода. Важное замечание – все данные отражаются в TD в виде 16-ричной системы. А значит какая-нибудь ‘12’ это на самом деле 18, а реальное 12 это ‘C’. CS аналогичен разделу “Begin end.” на Pascal или функции main.

Data segment, отражает данные, которые TD обнаружил в d_s. Справа мы видим их символьную (char) интерпретацию. В будущем мы сможем увидеть здесь наш “Hello, world”, интерпретируемый компилятором в числа, по таблице ASCII. Хорошей аналогией DS является раздел VAR, как в Pascal. Для простоты можно сказать, что это одно и тоже.

Stack segment – место хранения данных нашего стека.

Регистры

Все эти ax, bx, cx, si, di, ss, cs и т. д. – это наши регистры, которые используются как переменные для хранения данных. Да, это очень грубое упрощение. Переменные из Pascal и регистры Assembler это не одно и тоже, но надеюсь, такая аналогия даёт более чёткую картину. Здесь мы сможем хранить данные о циклах, арифметических операциях, системных прерываниях и т. д.

Флаги

Все эти c, z, s, o, p и т.д. это и есть наши флаги. В них хранится промежуточная информация о том, например, было ли полученное число чётным, произошло ранее переполнение или нет. Они могут хранить результат побитого сдвига. По опыту, могу сказать, на них обращаешь внимание лишь при отладке программы, а не во время штатного исполнения.

Маленькая шпаргалка для заметок:

mount d: c:asm – создаём виртуальный диск, где корень –папка asm

tasm code.asm – компилируем исходный код

tlink code.obj – создаём исполняемый файл

td code – запускаем debug

F7 – делаем шаг в программе

Буду ждать комментарии от всех, кому интересен Assembler. Чувствую, я где-то мог накосячить в терминологии или обозначении того или иного элемента. Но статья на Habr отличный повод всё повторить.

Источник

GUI Turbo Assembler 5.0 (TASM) для Windows 10

ikonka tasm

Инструмент, о котором мы расскажем в этом материале, представляет собой программный пакет, используемый для разработки различного софта на языке ассемблера. Предлагаем бесплатно скачать GUI Turbo Assembler 5.0 (TASM) для Windows 10 x32/x64 Bit и познакомиться с данным продуктом ближе. По уже имеющейся на сайте традиции разберемся с возможностями утилиты, сразу после чего поговорим о ее загрузке и инсталляции на компьютер или ноутбук.

Описание и возможности

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

polzovatelskiy interfeys turbo assembler

Утилита часто применяется для обучения программированию на языке ассемблере. Для расширения функций программы используются наборы дополнительных макросов.

Как пользоваться

Скачивание и установка приложения проводится довольно быстро и легко. Для этого не понадобится каких-то особых знаний и умений. Читайте инструкцию и выполняйте каждый ее шаг.

Загрузка и установка

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

rabota s turbo assembler

TASM в вашем полном распоряжении. Можно смело переходить к изучению и использованию программного обеспечения.

Инструкция по работе

Конечно же, в двух словах описать принципы работы с утилитой не получится. Для полного освоения софта вам потребуется не один день. Единственное, на чем хотелось бы сделать акцент, это то, что ввод, редактирование или копирование кодов здесь осуществляется через удобную панель. На этой же панели расположены основные клавиши для тестирования и запуска готового проекта. Кроме этого, в разделе настроек пользователь может изменить конфигурацию графического интерфейса или воспользоваться некоторыми дополнительными функциями.

kod v turbo assembler

При желании изучить все функции программного обеспечения можно почитать обучающую литературу по данной теме или просмотреть видео в сети.

Достоинства и недостатки

Пришло время уделить внимание рассмотрению сильных и слабых сторон приложения, о котором мы говорим сегодня.

Похожие приложения

В качестве среды разработки на ПК или ноутбуке можно также использовать такие решения:

Системные требования

Назовем рекомендуемые параметры электронной машины для стабильной работы софта:

Скачать

Прямо сейчас у вас есть возможность получить желаемый инструмент на свой ПК по ссылке ниже.

Версия: 5.0
Разработчик: Borland
Информация обновлена и актуальна на: 2022 год
Название: GUI Turbo Assembler
Платформа: Microsoft Windows XP, 7, 8 или 10
Язык: Русский
Лицензия: Бесплатно
Пароль к архиву: bestsoft.club

Видеообзор

Начните изучение программы с этого небольшого ролика. Уверены, он будет полезным для вас.

Вопросы и ответы

Теперь вы можете смело переходить к практике и устанавливать приложение на ПК. Если в процессе этого появятся трудности, мы всегда рады помочь советом. Достаточно лишь описать проблему через форму обратной связи ниже.

Источник

Assembler на Windows 10

Помощь в написании контрольных, курсовых и дипломных работ здесь.

tickAssembler и Windows 7
Столкнулся с проблемой: мы начали изучать асемблер на основе i8086, но при написании своей проги у.

Assembler на 64-разрядной Windows 7
Я хочу изучить Assembler, но у меня на компе 64-разрядная винда. само-собой асс не идет, требует.

Блокиратор Windows на Assembler
Короче, задали написать блокиратор виндовс. Код не мой, компилируется, но вылетает. Что делать не.

Ну надо понимать что это не чистый дос, например обращения к жесткому диску (int 13h) не прокатят.

В теме Заданы 2 числа. Определить является ли первое число кубом второго пользователь приводит программу с неизвестными, но работающими процедурами ввода и вывода.

Но сам я никогда не пользовался этой программой.

В masm32 есть множество примеров, которые можно использовать, как заготовки.

Не вижу смысла асм программ с GUI интерфейсом, но в консоль вывод не сложнее, чем в DOS.

Редактор. Много копий сломано по этому поводу. Лично я для учебных asm программ на форум использую или SciTE или идущий в комплекте с masm32 редактор qeditor (основная проблема с настройкой путей ко включаемым файлам и библиотекам). Отладку выполняю в OllyDbg, но последнее время на форуме пропагандируют «более новый и лучший» x64dbg.

Обучение Assembler на Windows х64
С чего начать? Большинство учебников вводят в assembler с 16-разрядного программирования, но коль.

Assembler/windows/dos/tasm/emu8086
Записывает в текстовый файл символ, воспринимая информацию введенную в него как аски код того.

компилятор assembler для windows 7 и работает ли visual C++ Express 2010 c asembler-ом
Какие компиляторы asembler будут работать на windows 7 x64?Так же в инете я нашол, что visual C++.

tickAssembler для Windows
Ребят, таков вопрос, раньше немного писал на ассемблере на win.xp, сейчас есть возможность писать.

Источник

MASM, TASM, FASM, NASM под Windows и Linux

В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.

Используется для создания драйверов под Windows.

По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:masm32. Создадим программу prog11.asm, которая ничего не делает.

Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.

image loader
Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)

MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».

Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.

MASM с сайта Microsoft

Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.

image loader

MASM в Visual Studio

Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:Program FilesMicrosoft Visual Studio 10.0VCbinml.exe.

image loader

Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:Program FilesMicrosoft Visual Studio 10.0VCbinamd64 и вот здесь — C:Program FilesMicrosoft Visual Studio 10.0VCbinx86_amd64.

Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.

Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».

Выполним ассемблирование (трансляцию) файла abel32.asm.

image loader

Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.

Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:

image loader

Ключ /coff здесь не используется.
Линковка производится файлом link16.exe

В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»

Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:fasmfasmw.exe. В папке C:fasmEXAMPLESHELLO есть файл HELLO.asm.

Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:fasmINCLUDEWIN32AX.INC’. Запускаем из меню Run → Run.

image loader

Вот ссылки на ресурсы, посвященные FASM:

Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.

image loader

Корректность работы программы можно проверить в отладчике.

Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.

Nasm в Linux можно установить его с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.

Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.

Выполним ассемблирование и линковку и запустим файл hello.asm.

NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.

Ссылки на ресурсы, посвященные Nasm:

Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.

Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».

Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.

Источник

The Netwide Assembler is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16-bit, 32-bit and 64-bit programs. NASM is considered to be one of the most popular assemblers for Linux. 

NASM  stands for the net  assembler.  if you want to type edit and execute an assembly language program you need to install NASM on Windows 10 using DosBox.  in this tutorial  you will be guided about how to install NASM on Windows 10 using dosbox. you will also be guided to type an assembly language program and how to to assemble it and then execute the Assembly language program in AFD. 

NASM can be used to write 16 bit, 32-bit and 64-bit programs. NASM is  one of the most popular assemblers for Linux. 

NASM Installation on Windows 10 using DOSBOX

Here are steps to Install NASM on Windows

  • Click to download NASM and DOSBOX
  • Install DOXSBOX 
  • Extract NASM in a Folder
  • Run DoxBox 
  • Mount NASM folder to a Drive  using “ mount [driveletter] [NASM Path]

For example we have extracted NASM on F:Assebmly then here is command to mount it to X Drive

---> mount X f:assembly 
Type x:
x:>

First Program to Add two Numbers in Assembly Language

Type following first program of Assembly Language in any Editor. Like Notepad

;assembly language program to add two numbers
org 0x100
mov ax,5
mov bx,10
add ax,bx
mov ax, 0x4c00
int 0x21
  • Save it with name  “newf1.asm”  in the same folder you have installed NASM 
  • Open DosBox and Assemble it using NASM (like compile in C++)
x:>NASM newf1.asm -o nf1.com
x:>AFD nf1.com
  • Program will be loaded in Debugger. USE F2 to run the program and to see the values of registers.

NASM Installation Windows 10 | Run Assembly Program | ADD two numbers | How to Install NASM

Post Views: 13,232

Related

Как установить NASM в Windows 10?

Я пытаюсь изучить сборку и хотеть скачать NASM, я использую Windows 10, возможно ли установить NASM без использования DOSBOX или VM ?? Потому что я видел кого-то, используя CodeBlocks с NASM для кода в сборке ..

2 ответа

NASM имеет установщики для Windows, доступных с его сайта под вкладкой «Загрузки»

Последняя стабильная сборка Win64 (по состоянию на 15 см2019) доступна здесь: https: //www.nasm.us/pub/nasm/reelaseBuilds/2.14.02/Win64/.

Простая альтернатива для Windows 10 будет устанавливать NASM с помощью NASM с помощью Vinget Менеджер пакета.

Запустите командную строку в качестве администратора, а затем:

добавьте его на путь

Перезагрузите командную строку и проверить

NASM версия 2.15.05 скомпилирована 28 августа 2020

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Basic support for MASM/TASM v1.x

Basic language support for assembly in DOS environment. may be suitable for studying MASM/TASM in DOSBox or courses like principles& peripheral technology of microprocessor.

  • Language Support: Offer grammar,basic outline view,hover,code formate support for DOS assembly language
  • Run and debug: Right click on the VSCode editor panel, run and debug your code
  • Diagnose: process the output of ASM tools and display them in VSCode
  • support all platform including Web, see platform support
  • Note: this extension is built for learning assembly in DOS, it can not work with assembly for win32

Demo 1: Language Features

Formate Codes Diagnose

The extension offers some language features like «hover»,»formate»,»jump to definition» as language id assembly . You can also use other extension for Assembly language Support, for example language ID asm-collection by installing extension ASM Code Lens.

Demo 2: Run and Debug

using TASM via DOSBox using MASM via msdos-player

when you are editing assembly files ,you can right click at the editor panel,then you will see several choices listed below:

  1. Open Emulator: Open the dosbox, prepare the environment
  2. Run ASM code: Assemble,link and Run the program
  3. Debug ASM code: Assemble,link and Debug the program
  • If your code just in a single file, set configuration masmtasm.ASM.mode as single file . The extension will copy your file to a seperate space in your machine to keep your workspace Folder clean.
  • If your project is complex and making up with many files, you may set configuration masmtasm.ASM.mode as workspace and keep your files’ names follow the emulator’s limitation.
    • take include <filename> for example, the <filename> should be the relative path to your workspace Folder

    The extension depend on vscode-dosbox for intergration with DOS emulator. It has packaged all binary files for windows system.

    Follow its doc for installing emulator like DOSBox in other system.

    About DOSBox ‘s disk

    The extension will mount some folder to DOSBox ‘s disk.

    in DOSBox real path in the computer
    C: the path of tools folder
    D: the path of the work space

    Compile to .com files

    You can change the command to exec in setting masmtasm.ASM.actions . For example, if you want to compile your code to .com , you can add a setting like this. And set masmtasm.ASM.assembler to its key TASM-com

    According to VSCode-doc, the extension will be installed in following folder:

    • Windows %USERPROFILE%.vscodeextensions
    • mac-OS

    Assembler – Урок 0: Установка компилятора и запуск первой программы через DOSBox

    В данном курсе планируется разобрать основные особенности программирования на самой простой реализации assembler – TASM. Этих знаний лично мне вполне хватило, чтобы на отлично сдать ЭВМ в институте и закончить все лабораторные работы. Во многих уроках будет домашние задание по их мотивам.

    Для начала давайте установим наш старенький компилятор.
    Ссылка

    Почему именно vk.com?

    Я прекрасно понимаю, что это ещё тот колхоз делиться файлами через обсуждения VK, но кто знает, во что может превратиться эта маленькая группа в будущем.

    После распаковки файлов, советую сохранить их в папке Asm на диск C, чтобы иметь меньше расхождений с представленным тут материалом.

    Для запуска компилятора нам так же потребуется эмулятор DOSBox. Он и оживит все наши компоненты. Скачаем и установим его!
    Ссылка

    В папке Asm я специально оставил файл code.asm. Именно на нём мы и потренируемся запускать нашу программу. Советую сохранить его копию, ибо там хранится весь код, который в 99% случаев будет присутствовать в каждом вашем проекте.

    Итак. Запускаем наш DOSBox и видим следующее:

    Для начала нам нужно смонтировать диск, на который вы сохранили вашу папку Asm. У меня это диск C, поэтому я прописываю следующую команду:

    Здесь d: это не реальный диск на вашем компьютере, а виртуальный. С таким же успехом вы можете назвать его i или s. А вот C это наоборот реальный диск. Мы прописываем путь до наших файлов ассемблера.

    Теперь, откроем смонтированный диск:

    Прописав команду dir, вы сможете увидеть все файлы, которые там хранятся. Здесь можно заметить и наш файл CODE с расширением ASM, а так же дату его создания.

    И только теперь мы начинает запускать наш файл! Бедные программисты 20 века, как они только терпели всё это? Пропишем следующую команду:

    После мы увидим следующее сообщение, а наша директория пополнится новым файлом с расширением OBJ.

    Теперь пропишем ещё одну команду:

    В нашей папке появилась ещё пара файлов – CODE.MAP и CODE.EXE. Последний как раз и есть исполняемый файл нашего кода assembler.

    Если он появился, значит, мы можем запустить режим отладки нашей программы, введя команду последнюю команду. Обратите внимание, теперь мы не указываем расширение файла, который запускаем.

    Этот старинный интерфейс насквозь пропитан духом ушедшей эпохи старых операционных систем. Тем не менее…

    Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на которым мы потренировались запускать нашу программу в режиме дебага. Реальное “волшебство” мы увидим лишь в следующих уроках. Пока давайте лишь ознакомимся с имеющимися разделами.

    Code segment – место, где turbo debug отражает все найденные строки кода. Важное замечание – все данные отражаются в TD в виде 16-ричной системы. А значит какая-нибудь ‘12’ это на самом деле 18, а реальное 12 это ‘C’. CS аналогичен разделу “Begin end.” на Pascal или функции main.

    Data segment, отражает пока все мусорные данные, которые обнаружил TD. Справа мы видим их символьную (char) интерпретацию. В будущем мы сможем увидеть здесь наш “Hello, world”, интерпретируемый компилятором в числа, по таблице ASCII. Хорошей аналогией DS является раздел VAR, как в Pascal. Пока будем считать, что это одно и тоже.

    Stack segment – место хранения данных нашего стека. Возможно, вы уже слышали о такой структуре данных. Если нет, обязуюсь пояснить в последующих статьях.

    Регистры

    Все эти ax, bx, cx, si, di, ss, cs и т. д. – это наши регистры, которые используются как переменные для хранения данных. Да, это очень грубое упрощение. Переменные из Pascal и регистры Assembler это не одно и тоже, но надеюсь, такая аналогия даёт более чёткую картину. Здесь мы сможем хранить данные о циклах, арифметических операциях, системных прерываниях и т. д.

    Флаги

    Все эти c, z, s, o, p и т.д. это и есть наши флаги. В них хранится промежуточная информация о том, например, было ли полученное число чётным, произошло ранее переполнение или нет. Они могут хранить результат побитого сдвига. По опыту, могу сказать, на них обращаешь внимание лишь при отладке программы, а не во время штатного исполнения.

    Если пока что-то не понятно, уверяю, каждый из сегментов мы рассмотрим подробнее в следующих уроках. Они заслуживают детального обсуждения, и уместить в один абзац всю информацию просто невозможно.

    Ещё одно замечание. Если вы измените данные исходного файла с расширением .ASM, то вам придётся совершить все ранее описанные операции вновь, ибо обновив например code.asm вы не меняете code.obj или code.exe.

    Маленькая шпаргалка для заметок:

    mount d: c:asm – создаём виртуальный диск, где корень –папка asm

    d: — открываем созданный диск

    tasm code.asm – компилируем исходный код

    tlink code.obj – создаём исполняемый файл

    td code – запускаем debug

    F7 – делаем шаг в программе

    Буду ждать комментарии от всех, кому интересен Assembler. Чувствую, я где-то мог накосячить в терминологии или обозначении того или иного элемента. Но статья на Habr отличный повод всё повторить.

1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

1

16.05.2021, 22:09. Показов 2652. Ответов 16


Очень много всего на форуме интересного и у меня простой вопрос: Как выполнить код ассемблера?

За основу по изучению языка взял сайт, где выложены уроки 2021 года, для выполнения кода предлагают установить Linux и далее ставить NASM, для тех кто не хочет устанавливать Linux могут скачать Visual Studio Code и поставить расширение для ассемблера. Больше никаких пояснений.

Можно пользоваться онлайн компиляторами и даже есть 2 сайта для этого, но в них можно только выполнить код, а я хочу посмотреть как именно он записан в самой программе. Хотя я так и пользовался онлайн компилятором, пока не нашёл уроки 2015 года, где exe файл перетаскивают в консоль винды и делается debug с наглядным кодом, что мне очень понравилось. Но те уроки выполнялись на виртуальной машине под 32 битную виндоус.

У меня виндоус 10 х64. Нашёл в инете статьи от 2008 до 2016 годов о NASM, FASM, TASM вроде даже под виндоус 10 х64, о том как запускать из Sublime Text, а можно из под Visual Studio, a можно под Visual Studio Code…На этом форуме тоже есть установка но пост сделан очень давно. У каждой среды своя собственная стилистика кода ассемблера и написанное на одном, на другом уже выдаёт ошибку и это путает больше всего. Какой стиль написания изучать? В чём писать код?

В общем, у меня есть Visual Studio, Visual Studio Code, FASM 1.73, Sublime Text, я хочу написать код, посмотреть как он выполняется и потом открыть исполняемый файл и посмотреть как этот код записан внутри, чтоб наглядно видеть как записаны все эти сегменты памяти, смещения, как происходит перестановка значений при записи из регистра в память и обратная перестановка при записи из памяти в регистр.

Подскажите, что качать под виндоус? Какой стиль написания кода учить?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Модератор

Эксперт по электронике

8277 / 4181 / 1595

Регистрация: 01.02.2015

Сообщений: 13,002

Записей в блоге: 3

16.05.2021, 23:06

2

Попробую тезисами.
1. Существует несколько компиляторов ассемблера.
2. Существуют разные режимы работы процессора — 16, 32 и 64 разрядные — при программировании ощущение, что это даже процессоры разные.
3. Системные вызовы (ввод с клавиатуры, вывод на экран) в разных операционных системах (DOS, Windows, Linux) очень разные, ещё и для разрядности различаются.

Есть какие-то общие принципы, но и различия велики.

Т.к. вы учитесь, то компилятор, разрядность и ОС выбирает преподаватель, который готовит методички, план занятий.

Если нужен NASM, разрядность 32 или 64 и безразлична ОС, то берите пакет и IDE SASM — ввод и вывод организованы макросами, а остальное для лабораторок делаете на ассемблере не задумываясь о системных особенностях.
https://dman95.github.io/SASM/

Меня в этой IDE SASM раздражает только размер таба в 4 пробела и то, что при сохранении исходника не удаляются лишние (хвостовые) пробелы в строках.



1



DessanM

1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

17.05.2021, 00:02

 [ТС]

3

Цитата
Сообщение от ФедосеевПавел
Посмотреть сообщение

Т.к. вы учитесь, то компилятор, разрядность и ОС выбирает преподаватель, который готовит методички, план занятий.

А если я уже давно не студент, а теперь, на старости лет, хочется познать мир программирования…Начитался всего подряд по ассемблеру и теперь не знаю как правильно начать практику. Линукс ставить не хочется.

SASM выдаёт ошибки:

Код

c:/program files (x86)/sasm/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x25): undefined reference to `WinMain'

или

Код

C:Program Files (x86)SASMMinGW64x86_64-w64-mingw32binld.exe: unrecognised emulation mode: 64
Supported emulations: i386pep i386pe

Я хочу запустить код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
section .text
   global _start    ; необходимо для линкера (ld)
    
_start:             ; сообщает линкеру стартовую точку
   mov  edx,len     ; длина строки 
   mov  ecx,msg     ; строка
   mov  ebx,1       ; дескриптор файла (stdout)
   mov  eax,4       ; номер системного вызова (sys_write)
   int  0x80        ; вызов ядра
    
   mov  eax,1       ; номер системного вызова (sys_exit)
   int  0x80        ; вызов ядра 
 
section .data
msg db 'Hello, world!', 0xa  ; содержимое строки для вывода
len equ $ - msg              ; длина строки

А еще лучше вот этот:

Assembler
1
2
3
4
5
6
7
8
9
10
format mz
 
mov ax, cs
mov ds, ax
mov dx, 0000h
 
mov ah, 9h
int 21h
 
db 'Hello, world!$'

И потом при дизассемблировании увидеть что-то типа:

Assembler
1
2
3
0B70:0000 8CC8      MOV     AX, CS
0B70: 0002 8ED8        MOV   DS, AX
........



0



ФедосеевПавел

Модератор

Эксперт по электронике

8277 / 4181 / 1595

Регистрация: 01.02.2015

Сообщений: 13,002

Записей в блоге: 3

17.05.2021, 00:17

4

hello world на NASM с библиотекой SASM будет

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%include "io.inc"
section .data
    aszHello    db  'hello', 0Dh, 0Ah, 0
    aszHello2   db  "hello2", 0
section .text
global CMAIN
CMAIN:
    ;write your code here
    PRINT_STRING "hello, world!"
    NEWLINE
    PRINT_STRING aszHello
    mov eax,    aszHello2
    PRINT_STRING [eax]
    xor eax, eax
    ret

PRINT_STRING и NEWLINE — это макросы из библиотеки SASM. Справка по F1.

Добавлено через 6 минут
С дизассемблированием сложнее, т.к. собранная программа «прячется» где-то в дебрях системных папок пользователя, но найти можно.

Можно не пользоваться библиотекой SASM, выводить вызовом системных функций, компилировать и компоновать из пакетного файла. Это можно увидеть даже в статье о NASM в Wikipedia.

Или берите пакет masm32 (masm64) и работайте из разрозненных инструментов.
Тут всё равно, чем пользоваться.



0



1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

17.05.2021, 01:12

 [ТС]

5

Цитата
Сообщение от ФедосеевПавел
Посмотреть сообщение

hello world на NASM с библиотекой SASM будет

Пишет «instruction not supported in 32-bit mode» , а когда меняю в настройках режим на 64 бита — «instruction not supported in 64-bit mode».

Но работает стандартный пример Hello world. Хорошо, по-другому. Чтоб работать с С++, писать драйверы, программировать микроконтроллеры, ардуино, понимать отладчики (вроде OllyDbg) и т.д. какой именно диалект нужно учить в 2021 году?



0



Модератор

1763 / 866 / 157

Регистрация: 23.07.2018

Сообщений: 2,939

Записей в блоге: 3

17.05.2021, 13:24

6

Цитата
Сообщение от DessanM
Посмотреть сообщение

Чтоб работать с С++, писать драйверы, программировать микроконтроллеры, ардуино, понимать отладчики (вроде OllyDbg) и т.д. какой именно диалект нужно учить

Никакие диалекты учить не нужно.

Чтобы программировать современные 32-разрядные микроконтроллеры с архитектурой MIPS, ARM, RISC-V ( и, тем более, 64-разрядные SoC), обычно достаточно Си, с использованием или без использования готовых библиотек, и наличия документации по программированию устройства.
Программирование микроконтроллеров на языке С

Чтобы исследовать, как работает машинозависимый код (как выполняемые интрукции изменяют содержимое регистров, памяти и т.д.), нужен симулятор, вроде qemu, имитирующий работу машины с изучаемой архитектурой.
Чтобы исследовать работу программы, выполняющейся на машине, нужен отладчик, вроде OllyDbg, DEBUG.COM, GDB, DDT, x64dbg или встроенного отладчика Microsoft Visual Studio.

О программировании 8-разрядных AVR, на которых обычно работает Arduino, узнать можно в соответствующем разделе:
https://www.cyberforum.ru/avr/



1



1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

17.05.2021, 16:15

 [ТС]

7

Ясно, спасибо

Добавлено через 4 минуты

Цитата
Сообщение от politoto
Посмотреть сообщение

Никакие диалекты учить не нужно.

Если всё так красиво получается без Ассемблера, для чего Ассемблер тогда?))

Добавлено через 52 минуты

Цитата
Сообщение от politoto
Посмотреть сообщение

Чтобы исследовать работу программы, выполняющейся на машине, нужен отладчик, вроде OllyDbg

А чтоб понимать что написано в коде отладчика OllyDbg Ассемблер тоже не нужен?OllyDbg отладка напоминает NASM



0



Модератор

1763 / 866 / 157

Регистрация: 23.07.2018

Сообщений: 2,939

Записей в блоге: 3

17.05.2021, 16:21

8

Не по теме:

А для чего компоновщик, текстовый редактор, загрузчик?

Разные ассемблеры нужны, чтобы формировать объектную программу, заполняя её кодом и данными,
по исходному символическому тексту, в котором данные, адреса и инструкции заданы в символической форме.



0



Модератор

Эксперт по электронике

8277 / 4181 / 1595

Регистрация: 01.02.2015

Сообщений: 13,002

Записей в блоге: 3

17.05.2021, 17:37

9

Есть заблуждение, что ассемблер подобен C/C++ — на всех процессорах одинаковый.
Но нет, это не так. У каждого семейства процессоров, семейства микроконтроллеров свой собственный неповторимый ассемблер, с разными мнемониками инструкций, с разным функциональным набором инструкций. Зная ассемблер одного семейства, никак не начать сразу делать программы для другого семейства. Разница, как между C и Pascal.
Поэтому определяйтесь с платформой и учите для неё.

Для микроконтроллеров хорошие компиляторы C/C++ — поэтому на ассемблере там есть смысл кодировать только критические участки.
Да и для компьютеров программа на ассемблере не обязательно будет лучше полученной при компиляции из C/C++ — слишком много правил совместимости инструкций процессора.



0



1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

17.05.2021, 19:01

 [ТС]

10

Вы простите если я задаю глупые вопросы, но для меня они очень важны.
Я вижу в инете как ребята работают с памятью компьютера на С++ и записывают адреса памяти, ссылки на ячейки памяти, значения в ячейках памяти, что-то складывают, вычитают в этих адресах, смещение указывают и рассказывают, что без ассемблера сложно понять, что они пишут в коде. А я застопорился на этапе установки…меня это очень сильно огорчает и я не могу найти ответов в интернете, потому обращаюсь к знающим людям на форуме. Сегодня, я обнаружил, что то что я читал про ассемблер было и вовсе под Linux, а я тут пытаюсь всунуть программу с прерываниями int 80h под виндоус 10 и не понимаю почему не работает.
Всё это усугубляется документацией несколько летней давности. Берёшь что-то за основу, начинаешь учить и на первом же вопросе тебе говорят «А зачем это тебе, вот есть намного новей». Берёшь то что новей, начинаешь учить, на следующем вопросе «так это не то, вот три варианта модификаций», а оно у тебя вообще не работает, начинаешь искать документацию…неделя прошла, а у тебя в итоге 500 открытых окон в браузере с различными вариантами документации, а программа даже не установлена.



0



Модератор

Эксперт по электронике

8277 / 4181 / 1595

Регистрация: 01.02.2015

Сообщений: 13,002

Записей в блоге: 3

17.05.2021, 19:34

11

Если задача — ассемблер для компьютера — берите NASM в среде SASM и осваивайте инструкции и алгоритмы.
Не лучше и не хуже всех остальных.
FASM тоже хорош, но он уже в значительной мере прячет код под слоем множества макросов.
Для режима x64 уже не получится использовать OllyDbg — только x64dbg.

Если работаете по какому-то учебнику — берите рекомендуемый в учебнике компилятор.
Пакеты masm32 и masm64 тоже хороши — большим количеством примеров, библиотек, заголовочных файлов.

Останавливайте выбор на чём-нибудь и вперёд.



1



Модератор

1763 / 866 / 157

Регистрация: 23.07.2018

Сообщений: 2,939

Записей в блоге: 3

17.05.2021, 20:00

12

Цитата
Сообщение от DessanM
Посмотреть сообщение

Сегодня, я обнаружил, что то что я читал про ассемблер было и вовсе под Linux, а я тут пытаюсь всунуть программу с прерываниями int 80h под виндоус 10 и не понимаю почему не работает.

Чтобы в 64-разрядной Windows 10 можно было запускать приложения для linux, нужно установить WSL2 или WSL https://docs.microsoft.com/ru-… tall-win10
и затем бесплатно купить-установить из Магазина приложений Windows какой-нибудь дистрибутив, например, Ubuntu https://www.microsoft.com/ru-r… 6svws3rx71 или Kali https://www.microsoft.com/ru-r… kr34tncv07

После этого можно осваивать программирование для linux на x64 c помощью GDB и любимых компиляторов и ассемблеров
https://www.cyberforum.ru/assembler-linux/
https://www.cyberforum.ru/assembler-x64/

Добавлено через 4 минуты

Цитата
Сообщение от DessanM
Посмотреть сообщение

записывают адреса памяти, ссылки на ячейки памяти, значения в ячейках памяти, что-то складывают, вычитают в этих адресах, смещение указывают и рассказывают, что без ассемблера сложно понять, что они пишут в коде.

Нужно знать архитектуру вычислительной системы. Например, по каким адресам, что записать, чтобы получить нужный результат. Без этого знания манипуляции с адресами бесполезны, и ассемблер бесполезен тоже.

Добавлено через 6 минут

Цитата
Сообщение от DessanM
Посмотреть сообщение

чтоб понимать что написано в коде отладчика OllyDbg Ассемблер тоже не нужен?OllyDbg отладка напоминает NASM

OllyDbg и NASM не придумывают инструкции процессора. Инструкции, и способы их кодирования придумывают разработчики архитектуры, в рассматриваемом случае intel и AMD.



1



1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

18.05.2021, 02:44

 [ТС]

14

Спасибо, буду изучать masm через visual studio — самый простой вариант для меня оказался.
Процессор у меня Intel 10700k и я немножко не понимаю, что это значит. Я нахожу учебники для процессоров архитектуры 32 разрядных регистров, а получается, что мне доступны не только 32 разрядные, но еще 64-разрядные RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP и R8, R9, R15 ?

Добавлено через 35 минут
«Для работы со стеком предназначены три регистра:

ss – сегментный регистр стека;
sp/esp – регистр указателя стека;
bp/ebp – регистр указателя базы кадра стека.

Размер стека зависит от режима работы микропроцессора и ограничивается 64 Килобайтами

(или 4 Гигабайтами в защищенном режиме). В каждый момент времени доступен только один стек, адрес сегмента которого содержится в регистре SS.»

Статья написана 2015 году, эти данные ещё актуальны?
И у процессора есть 3 вида кэша. У моего L1 = 256 kb, L2 = 8×256 kb, L3 = 16 mb. В какой именно кэш записываются значения регистров EAX, EBX, ESP, SS и т.д.?Или вся память просто суммируется?



0



Модератор

1763 / 866 / 157

Регистрация: 23.07.2018

Сообщений: 2,939

Записей в блоге: 3

18.05.2021, 03:28

15

У Вас же 64-разрядная система, а 64-разрядные ( и даже 48- или 40-разрядные ) неудобно втискивать в 32-разрядные регистры.
Найдите AMD64 Architecture на странице
https://developer.amd.com/reso… s-manuals/
Там — регулярно обновляющиеся справочники по всё ещё развивающейся архитектуре.
Для начала можно ограничиться
AMD64 Architecture Programmer’s Manual Volume 1: Application Programming
https://www.amd.com/system/fil… /24592.pdf
и
AMD64 Architecture Programmer’s Manual Volume 3: General Purpose and System Instructions
https://www.amd.com/system/fil… /24592.pdf
Для математических вычислений в Вашей машине есть регистры и пошире!

Учебники так часто не переиздаются, да и незачем.
В дополнение к официальным справочникам и руководствам, можно найти онлайн-справочники, которые, хоть и обновляются реже, но позволяют быстрее найти нужную информацию.

Чтобы знать, какие возможности предоставляет Windows 10 классическим настольным приложениям, Вам понадобится справочник по

API

( «Win32» ) этой системы: https://docs.microsoft.com/en-us/windows/win32/

Кроме этого для разработки платформозависимого кода необходимо иметь представление об

ABI

Windows 10 — правилах оформления программ для используемой аппаратной платформы (архитектуры), в частности, как использовать регистры, в каких регистрах или областях основной памяти передавать параметры в вызываемые функции и где получать результат
https://docs.microsoft.com/en-… onventions
Зубрить формат и промежуточных (результат работы ассемблеров и компиляторов) и исполняемых объектных файлов, конечно, не нужно, но представлять, какую информацию они содержат, иногда бывает полезно:
https://docs.microsoft.com/en-… /pe-format

И, наконец, справочник по Microsoft macro assembler’у
https://docs.microsoft.com/en-… -reference
и другим утилитам, используемым в процессе разработки программ
https://docs.microsoft.com/en-… -reference

Если заинтересует разработка в Visual studio программ для linux, в т.ч. встроенной в Windows 10 WSL(2)
https://docs.microsoft.com/en-… t-workload



0



Модератор

1763 / 866 / 157

Регистрация: 23.07.2018

Сообщений: 2,939

Записей в блоге: 3

18.05.2021, 03:50

16

Цитата
Сообщение от DessanM
Посмотреть сообщение

у процессора есть 3 вида кэша. У моего L1 = 256 kb, L2 = 8×256 kb, L3 = 16 mb. В какой именно кэш записываются значения регистров EAX, EBX, ESP, SS и т.д.?Или вся память просто суммируется?

Кэш нужен, чтобы не бегать каждый раз во внешнюю относительно медленную RAM за данными. При программировании наличие кэша позволяет надеятся, что повторное использование данных будет быстрее, чем первое, пока их не вытеснят из кэша другие, более часто используемые данные.
Можно считать, что значения регистров хранятся где-то в ядре процессора. У каждого ядра свой RSP ( или ESP в 32-разрядных режимах ).
Про 16-разрядные SP и BP лучше забыть.

DessanM, если вопрос выбора ассемблера и подготовки его к работе решён, то для других возникающих вопросов лучше открывать отдельную тему. Не следует превращать обсуждение вопроса в кашу.



0



1 / 1 / 0

Регистрация: 16.10.2019

Сообщений: 81

18.05.2021, 06:54

 [ТС]

17

Цитата
Сообщение от politoto
Посмотреть сообщение

Найдите AMD64 Architecture на странице

Спасибо, конечно, большое, но для человека, который еще толком Hello World не написал — слишком много всего…И я чуть выше написал, что у меня Intel или это не важно и у AMD тоже самое на 90%?

Да, вопрос вроде как решён с выбором. Сейчас ищу хороший учебник где много картинок и схем по работе с памятью, передачей параметра по значению, по ссылке, как работать с указателями, регистры, относительная адресация, прямая адресация…Как физически считается размер файла, как прочесть любой участок памяти компьютера,сама структура памяти компьютера, как убирать лишний мусор из исполняемого файла по типу как это делает группа модераторов этого форума, когда статьи пишете , дизассемблирование и вроде это пока что всё, что меня интересует из того о чём я уже услышал.
И всё это под MASM.

А еще мне нужна какая-та очень подробная картинка, чтоб физически понять хоть на примере Intel 8088 с 16-битный микропроцессором или ATmega328 8-битная, как устроены ячейки памяти и происходит их адресация, нумерация и хранение данных. Картинки, вроде вижу, но понимание не приходит.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.05.2021, 06:54

Помогаю со студенческими работами здесь

Установка винды, жесткий диск разбит на двое и мне нужно поставить что бы установка была на F, а не на С
Здравствуйте, у меня жесткий диск разит на двое и мне нужно поставить что бы установка была на F,…

Установка — Установка Windows XP через DOS
Проблема не в установке. Буду краток я коверкою ОС ХР для универсальной установки .WIM файла есть…

Установка новой Windows 7 поверх старой Windows 7 без форматрирования диска (не обновление, а новая установка)
Приветствую!
Уважаемые,подскажите.Возникла проблема с виндой,в подробности вдаваться не буду,сам…

Установка питания, Установка частоты
Помогите пожалуйста!

Установка — Установка 7й поверх 10й
В общем форумчане есть вопрос приспичило прям
1) стоит win 10 x64 с начала инсайда
2) приспичило…

Установка драйвера NVidia зависает на «Установка Аудиодрайвер HD»
Каждый раз, как я устанавливаю драйвера NVidia, установка зависает на &quot;Установка Аудиодрайвер HD&quot;!…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

17

Понравилась статья? Поделить с друзьями:
  • Как установить aero на windows 7 home basic
  • Как установить assassins creed 2 на windows 10
  • Как установить aero в windows 7 starter
  • Как установить aspen hysys v11 на windows 10
  • Как установить aero peek в windows 7