Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler задача для курсовой помогите пожалуйста.не могу найти в интернете ничего что могло бы помочь дан одномерный массив найти количество и сумму нечетных элементов https://www.cyberforum.ru/ assembler/ thread1000518.html Assembler Компиляция masm32 из RadASM программ для DOS
Доброго времени суток. Вот такая проблема у меня. Скачал masm32 установил в корень диска С: В notepad забил текст,отдаю команду в командной строке ml /c xxxx.asm получаю файл с расширением .obj Далее...
Assembler Одна непонятная ситуация с отладчиком td Всем доброго времени суток. У меня небольшая проблема с программой. Заранее говорю, я новичок в этом. Сделал программу которая должна выводить числа на экран в диапазоне от нуля до 99999, короче... https://www.cyberforum.ru/ assembler/ thread996648.html Assembler Правильный выход из программы https://www.cyberforum.ru/ assembler/ thread995183.html
Поправьте код код пожалуйста, чтобы программа выключалась после нажатия клавиши =) P.S. Компилятор TASM .MODEL small .DATA HelloMessage DB 'Hello, world $' .CODE mov ax,@data mov ds,ax ...
Assembler Переписать алгоритм на ассемблер
Есть код на делфи. тема - работа с BitMap. Вопрос: можно ли реализовать это на ассемблер? Это интерполяция изображений. P.s. Важен не сам код, как файл. Вот, то, что нужно ускорить: unit rsmpl;...
Assembler Подпрограмма в ассемблере Мне необходимо оформить ранее написанную программу как ближнюю подпрограмму. Сама очень плохо разбираюсь. Программа вычисляет средние арифметические четных и нечетных значений элементов массива и... https://www.cyberforum.ru/ assembler/ thread994208.html
Assembler Ошибка в коде, необходимо разобраться! https://www.cyberforum.ru/ assembler/ thread990315.html
.386 .model flat,stdcall option casemap:none WinMain proto :DWORD,:DWORD,:DWORD,:DWORD include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include...
Assembler Tasm DosBox
Доброго всем времени суток. Нужна ваша помощь: как запустить файл filename.asm в Tasm? файл размещен в d:\tasm. Tasm смонтировал с dosBox-ом: mount c: d:\tasm\bin Буду благодарен.
Assembler Удобная среда для TASM Подскажите инструменты для комфортного изучения Ассемблер под Интел 8086 В данным момент использую DosBox и TASM, но это оочень неудобно, ведь при каждом запуске приходится настраивать, при чем... https://www.cyberforum.ru/ assembler/ thread990000.html Assembler Команда сдвига Сразу скажу, работаю не в ассемблере, а в симуляторе микропроцессора VAX-11. Но все вполне аналогично и можно провести аналогию с ассемблером. Вопрос: Есть команда сдвига, выполняющаяся в формате... https://www.cyberforum.ru/ assembler/ thread989662.html
Assembler Коллоквиум, практические задания
В общем, расскажу честно, учусь в универе, с этого семестра начался ассемблер, в связи с большой загруженностью не успеваю его тщательно изучать, хватаю кусками. Завтра по теории колоквиум, ребят,...
Assembler некорректное выполнение цикла model small .stack 100h .data len equ 10 mass dw -1,0,-9,8,0,7,8,0,2,0 .code start: mov ax,@data https://www.cyberforum.ru/ assembler/ thread988778.html
Ушел с форума
Автор FAQ
15460 / 7295 / 935
Регистрация: 11.11.2010
Сообщений: 13,172
10.11.2013, 18:31  [ТС] 0

Электронный учебник - Assembler - Ответ 5323068

10.11.2013, 18:31. Показов 273524. Ответов 51
Метки (Все метки)

Ответ

ГЛАВА 4
ЭТАПЫ СОЗДАНИЯ ПРОГРАММЫ
НА ЯЗЫКЕ АССЕМБЛЕРА
Разработка программы включает несколько этапов:
  1. подготовка (изменение) исходного текста программы,
  2. ассемблирование программы (получение объектного кода),
  3. компоновка программы (получение исполняемого файла программы),
  4. запуск программы,
  5. отладка программы.
Обычно эти этапы циклически повторяются, потому что при нахождении ошибок при ассемблировании, компоновки или отладке приходится вновь возвращаться к первому этапу и изменять текст программы для устранения ошибок.

Рис. 4.1. Этапы разработки программ на ассемблере

Подготовка текста программы
Текст программы записывается в один или несколько текстовых файлов. Имена файлов могут быть любыми, но для файлов, содержащих текст программы, принято расширение .asm, а для файлов с определением констант и новых типов – расширение .inc. Эти файлы являются текстовыми, их можно подготовить с помощью стандартных редакторов текста или с использованием интегрированных сред разработки программ.
Использование стандартных редакторов
При использовании стандартных редакторов текста необходимо сохранять редактируемые файлы с текстами программ в виде обыкновенных файлов в формате ASCII, то есть без дополнительных символов форматирования, которые вставляются в текст специализированными редакторами, например Word. Иногда используются специализированные текстовые редакторы для программистов, с разноцветной подсветкой синтаксиса, автоматической нумерацией строк, всплывающими подсказками и тому подобными «наворотами», но пишущие на различных диалектах ассемблера придерживаются аскетичных принципов в создании программ и, как правило, обходятся простейшим текстовым редактором и работой с командной строкой.
Ассемблирование программы
Подготовленный текст является исходными данными для специальных программ, называемых ассемблерами. Задача ассемблеров – преобразовать текст программы в форму двоичных команд, которые могут быть выполнены микропроцессором. Если обнаружены синтаксические ошибки, то результирующий код создан не будет. Процесс создания исполняемого файла происходит в две стадии:
.asm -> .obj -> .exe/.dll/.com
На первой стадии (.asm -> .obj) из ассемблерного файла путем компиляции получаются файлы промежуточного объектного кода, имеющего расширение .obj (при этом могут использоваться дополнительные inc-файлы). Файл с расширением .obj содержит машинный код при условии, что не встретились синтаксические и семантические ошибки. Если в исходном файле с программой на языке ассемблера обнаруживаются ошибки, то программисту выдается список обнаруженных ошибок, в котором ошибки указываются с номером строки, в которой они обнаружены. Программист циклически выполняет действия по редактированию и компиляции до тех пор, пока не будут устранены все ошибки в исходном файле. На этом этапе уже возможно получение готовой программы, но чаще всего в ней не хватает некоторых компонентов. Если компилятор по какой-либо причине (неверно прописан путь к такому файлу или файл отсутствует) не может найти inc-файл, то выдается предупреждение и obj-файл получен не будет.

Ассемблирование, как правило, проходит в два приема. При первом проходе переводятся мнемонические команды, десятеричные числа и символы в соответствующие машинные коды, подсчитывается, сколько какая команда занимает места, обнаруженные имена, введенные пользователем (константы, метки, переменные) их тип и числовое значение записывается в таблицу. В эту же таблицу записывается, с каких адресов начинаются процедуры, адреса меток, адреса начала/конца сегментов и т. д., при втором проходе подставляются адреса начала процедур, заменяются названия меток на адреса.

В результате ассемблирования получается так называемый «объектный файл». В качестве дополнительной возможности ассемблер может создать файл листинга программы.
Обычно для получения файлов объектного кода необходимо выполнить соответствующую программу ассемблера (программы MASM.EXE и ML.EXE фирмы Microsoft и TASM.EXE или TASM32.EXE фирмы Borland), указав в командной строке имя файла с текстом программы.
Например, если у текстового файла с исходным текстом программы название prog.asm.
Код
ml prog.asm
или
Код
tasm prog.asm
Эта форма вызова является минимально необходимой. Кроме имени текстового файла, необходимо указывать опции ассемблирования. Если синтаксических ошибок в файле prog.asm, нет, тогда будет создан файл prog.obj. Более подробную информацию об опциях программы ассемблирования следует искать в документации к этим программам.
Компоновка программы
Следующая стадия (.obj -> .exe/.dll/.com) называется линковкой или компоновкой и служит для замещения символьных имен, используемых программистом, на реальные адреса.
Сравните шестнадцатеричное содержимое OBJ и EXE файла, который у вас получился. В EXE-файле присутствует та же последовательность байтов, что и в OBJ-файле. Но помимо этого еще присутствует: имя ассемблированного файла, версия ассемблера, «имя собственное» сегмента и так далее.
Это «служебная» информация, предназначенная для тех случаев, когда ваш исполнимый файл вы хотите собрать из нескольких. При разработке больших приложений исходный текст состоит, как правило, из нескольких модулей (файлов с исходными текстами), потому что хранить все тексты в одном файле неудобно – в них сложно ориентироваться. Каждый модуль по раздельности компилируется в отдельный файл с объектным кодом. В каждом из этих файлов прописаны свои сегменты кода/данных/стека, которые затем надо объединить в одно целое. А исполнимый файл нам нужно получить только один – с единым сегментом кода/данных/стека. Именно это LINK и делает: завершает определение адресных ссылок и объединяет, если это требуется, несколько программных модулей в один. И этот один у нас и является исполнимым.
Кроме того, к нашим модулям надо добавить машинный код подпрограмм, реализующих различные стандартные функции (например, вычисляющих математические функции SIN или LN). Такие функции содержатся в библиотеках (файлах со стандартным расширением .LIB), которые либо поставляются вместе с компилятором, либо создаются самостоятельно. Поэтому процесс подготовки обязательно включает в себя этап компоновки, когда определяются все неизвестные при раздельном ассемблировании адреса совместно используемых переменных или функций.
Процесс объединения объектных модулей в один файл осуществляется специальной программой-компоновщиком или сборщиком (программа LINK.EXE фирмы Microsoft и TLINK.EXE фирмы Borland), которая выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в библиотеках, и формирует на выходе работоспособное приложение – исполнимый код для конкретной платформы.
Исполнимый код – это законченная программа с расширением COM, DLL или EXE, которую можно запустить на компьютере с установленной операционной системой, для которой эта программа создавалась. Имя исполняемого файла задастся именем первого .OBJ файла:
Код
link prog1.obj prog2.obj
Содержимое объектного файла анализируется компоновщиком. Он определяет, есть ли в программе внешние ссылки, то есть содержит ли программа команды вызовов процедур, находящихся в одной из библиотек объектных модулей (link library). Компоновщик находит эти ссылки в объектном файле, копирует необходимые процедуры из библиотек, объединяет их вместе с объектным файлом и создает исполняемый файл (executable file). В качестве дополнительных возможностей компоновщик может создать файл перекрестных ссылок, содержащих план полученного исполняемого файла.
Возможно потребуется LST-файл, особенно, если необходимо проверить сгенерированный машинный код. CRF-файл полезен для очень больших программ, где необходимо видеть, какие команды ссылаются на какие поля данных. Кроме того, ассемблер генерирует в LST-файле номера строк, которые используются в CRF-файле.
Листинг содержит не только исходный текст, но также слева транслированный машинный код в шестнадцатиричном формате. В самой левой колонке находятся шестнадцатеричные адреса команд и данных.
За листингом ассемблирования программы следует таблица идентификаторов. Первая часть таблицы содержит определенные в программе сегменты и группы вместе с их размером в байтах, выравниванием и классом.
Вторая часть содержит идентификаторы - имена полей данных в сегменте данных и метки, назначенные командам в сегменте кодов
В MAP-файле перечисляются имена. адреса загрузки и размеры всех сегментов, входящих в программу. В нем также приводятся имена и адреса загрузки каждой группы в программе, начальный адрес программы и сообщения о тех или иных ошибках, которые могли иметь место. Если в командной строке LINK задана опция /MAP, то в map-файле перечисляются имена и адреса загрузки всех обобщенных символов.
Загрузка программы
Компонент операционной системы, называемый загрузчиком (loader), считывает данные из исполняемого файла, загружает программу в память и передает управление по адресу точки входа. В результате программа начинает выполняться.
В тех случаях, когда при написании новой программы на языке ассемблера требуются лишь незначительные изменения машинных кодов, иногда быстрее и удобнее внести изменения непосредственно в объектный файл, а не проходить всю цепочку редактирования исходной программы и осуществлять ее повторную трансляцию с внесенными изменениями. Для этого существуют специальные шестнадцатеричные редакторы (типа Hacker Viewer), которые позволяют рассматривать файлы с бинарным (машинным) кодом в виде последовательности ассемблерных команд. Эту же технологию применяют в тех случаях, если исходный текст программы не доступен (взлом программы).
Отладка программы
До тех пор пока Вы не наберетесь достаточного опыта в программировании на языке ассемблера, за исключением учебных, тривиальных программ, в отладке будет нуждаться любая ваша программа. Для этого используются различные отладчики (CodeView фирмы Microsoft, Turbo Debugger фирмы Borland, SoftIce фирмы NuMega, OllyDebug написанный Olech Yuschuk), позволяющие в процессе выполнения программы контролировать значения регистров или переменных, при необходимости изменять их. Можно просматривать содержимое различных участков памяти. Можно выполнять программы по шагам или расставить точки останова (BREAK POINTS), которые вызовут прекращение работы программы и переход управления к отладчику.
Использование интегрированных сред
Для подготовки текста программы на языке ассемблера очень удобно использование интегрированных программных сред. Такие возможности предоставляются практически всеми разработчиками ассемблеров, например: PWD – Programmer Workbench для компиляторов masm, QC – Quick C для компиляторов QuickAssembler фирмы Microsoft, все компиляторы языка C и C++ фирмы Borland (TC и BC). Интегрированные среды позволяют получить быстрый доступ к справочной информации. Можно сразу же ассемблировать и скомпоновать набранный текст, провести его отладку, а затем вновь вернуться к редактированию.
Структура программы
Как вы увидите в следующих главах, язык ассемблера заставляет нас помещать определенное количество строк в качестве заголовка программ, которые мы пишем. Другими словами, нам нужно каждый раз записывать несколько псевдооператоров, которые сообщают языку ассемблера основную информацию. В качестве рекомендации на будущее ниже приведен абсолютный минимум, необходимый для программ, которые вы пишите:
Assembler
1
2
3
4
5
6
7
8
9
.686P
.model flat
.code
star:
;тело вашей программы
ret
.data
;данные вашей программы
end star
Разберем ее подробнее. В первой строке .686P – это директива описания типа микропроцессора (может быть еще и .8086, .8087, .186, .286, .287, .386, .387, .486, .586, .mmx с добавлением или без добавления букв P (привилегированные команды) и C или N (непривилегированные команды)). Если не указывать тип микропроцессора, то программа будет сгенерирована в кодах i8086.
Директива описания типа микропроцессора
Директива Назначение
.8086 Разрешены инструкции базового процессора i8086 (и идентичные им инструкции процессора i8088). Запрещены инструкции более поздних процессоров.
.186 .286 .386 .486 .586 .686Разрешены инструкции соответствующего процессора x86 (x=1,…,6). Запрещены инструкции более поздних процессоров.
.187 .287 .387 .487 .587Разрешены инструкции соответствующего сопроцессора x87 наряду с инструкциями процессора x86. Запрещены инструкции более поздних процессоров и сопроцессоров.
.286c .386c .486c .586c .686cРазрешены НЕПРИЛЕГИРОВАННЫЕ инструкции соответствующего процессора x86 и сопроцессора x87. Запрещены инструкции более поздних процессоров и сопроцессоров.
.286p .386p .486p .586p .686pРазрешены ВСЕ инструкции соответствующего процессора x86, включая привилегированные команды и инструкции сопроцессора x87. Запрещены инструкции более поздних процессоров и сопроцессоров.
.mmx Разрешены инструкции MMX-расширения.
.xmm Разрешены инструкции XMM-расширения.
.K3D Разрешены инструкции AMD 3D.
Таблица 4.7.1
Модель памяти задается директивой .model
Строка .model flat говорит, что будет создаваться exe-файл для 32-разрядной операционной системы Windows. Плоская (flat) модель памяти 32-разрядной Windows располагает три сегмента (сегмент кода, стека и данных) в едином четырехгигабайтном адресном пространстве, позволяя вообще забыть о существовании сегментов. Но для 16-разрядных приложений MS-DOS и Windows 3.x максимально допустимый размер сегментов составляет всего лишь 64 килобайта, что явно не допустимо для большинства приложений. В крошечной (tiny) модели памяти сегмент кода, стека и данных также расположены в едином 64-килобайтном адресном пространстве, но в отличие от плоской модели это адресное пространство чрезвычайно ограничено в размерах, поэтому и код, и стек, и данные более серьезных приложений приходилось размещать в нескольких сегментах (модели памяти small, medium, compact, large, huge, tchuge). В этих моделях памяти, например, для вызова функции недостаточно было знать ее смещение, а требовалось указать еще и сегмент, в котором функция была расположена. Команды передачи управления переходы (jmp) и вызовы (call) в этих моделях памяти могут быть близкими (near) и дальними (far). Если вы пишете программы для 32/64-разрядной операционной системы Windows, то о других моделях памяти кроме flat можно забыть со спокойной совестью.
Для адресации четырех гигабайтов виртуальной памяти, выделенной в распоряжение процесса, Windows использует два селектора, один из которых загружается в сегментный регистр CS, а другой в регистры DS, ES и SS. Оба селектора ссылаются на один и тот же базовый адрес памяти, равный нулю, и имеют идентичные лимиты, равные четырем гигабайтам. Windows использует еще и регистр FS, в который загружается селектор сегмента, содержащего информационный блок потока TIB.
Фактически существует всего один сегмент, вмещающий в себя и код, и данные, и стек процесса. Благодаря этому передача управления коду, расположенному в стеке, осуществляется близким (near) вызовом или переходом. Отличия между регионами кода, стека и данных заключаются в атрибутах принадлежащих им страниц страницы кода допускают чтение и исполнение, страницы данных чтение и запись, а страницы стека чтение, запись и исполнение одновременно.
Допустим у нас есть логический адрес 0137:00456789h. Чтобы этот адрес перевести в линейный – в селекторе 137 находится соответствующий ему дескриптор в таблице дескрипторов: база = 0, граница = 0FFFFFFFFh, следовательно, линейный адрес равен 0 (база) + 00456789h. Однако линейный адрес не является физическим адресом. Для его получения используется третья ступень – страничная адресация. То есть 20 старших бит линейного адреса используются для выбора 4 Kбайт памяти из каталога страниц, оставшиеся 12 бит представляют смещение внутри полученной страницы (в качестве упражнения рекомендую написать небольшую программу под 32-разрядной Windows, которая будет показывать сегментные регистры, значения дескрипторов для каждого селектора, базу, границу, RPL и т.п). В 32-разрядной Windows и сегмент кода, и сегмент данных и стека приложения имеют одинаковые базу и границу (0 и 0FFFFFFFFh). Это называется плоской (FLAT) моделью памяти. Хотя cs и ds имеют разные значения и дескрипторы, они указывают на одно и то же линейное адресное пространство 0..0FFFFFFFFh. Следовательно, логические адреса cs:12345678 и ds:12345678 совпадают. Есть возможность модифицировать код при помощи mov byte ptr $+8,21h (секция кода должна быть помечена как writeable). В данном случае в инструкции mov неявно подразумевается ds:, в который можно писать. Однако, при попытке сделать mov cs:xxxxxxxx, получим исключение (сегментная защита). В сегмент кода писать нельзя, но зато можно писать в сегмент данных, который «совпадает» с сегментом кода, и тем самым модифицировать код. А теперь вспомним про страничную защиту. Именно она используется в Windows, когда Вы задаете атрибуты секций PE-файла (.data, .code и т.д). Собственно, к сегментам памяти они не имеют отношения, посему когда речь идет о Win32, не путайте понятия секций PE-файлов и сегментов памяти! Когда Windows грузит РЕ-файл, она смотрит атрибуты секций и соответственно им устанавливает «защиту» страниц памяти, в которые будет загружена секция. Это и есть типа страничная защита.
Помимо этого каждая страница имеет специальный флаг, определяющий уровень привилегий, необходимых для доступа к этой странице. Некоторые страницы, например, те, что принадлежат операционной системе, требуют наличия прав супервизора, которыми обладает только код нулевого кольца. Прикладные программы, исполняющиеся в кольце 3, таких прав
не имеют и при попытке обращения к защищенной странице порождают исключение.
Директива .model
Модель памятиКоличество и размер сегментовТип указателяОписание
 кода данныхдля кодадля данных 
16-разрядные приложения MS-DOS и Windows 3.x
Tiny один, <=64Kb near nearКод, данные и стек находятся в одном сегменте. Эта модель памяти используется для написания программ типа .COM
Small один,<=64Kbодин,<=64Kb near nearКод программы находится в одном сегменте. Данные и стек находятся в другом сегменте
Medium несколько, <=64Kbодин,<=64Kb far nearКод находится в нескольких сегментах, по одному на каждый программный модуль. Данные объединены в один сегмент
Compact один,<=64Kbнесколько, <=64Kb near farКод находится в одном сегменте. Данные могут находится в нескольких сегментах. Для ссылки на данные из кода применяются указатели дальнего типа
Large несколько, <=64Kbнесколько, <=64Kb far farКод может размещаться в нескольких сегментах, на каждый модуль новый сегмент. Данные также размещаются в нескольких сегментах. Для ссылки на данные из кода применяются указатели дальнего типа.
Huge несколько, >64Kbнесколько, >64Kb huge hugeКод может размещаться в нескольких сегментах, на каждый модуль новый сегмент. Данные и код имеют тип huge
Tchuge несколько, =<64Kbнесколько, =<64Kb far farТакже как для модели large, но с иным использованием сегментных регистров
32-разрядная Windows
Flat не ограниченоне ограничено flat flatСоответствует варианту модели small, но с использованием 32-разрядной адресации
Таблица 4.7.2
В третьей строчке написано .code. По этой команде (директиве) будет определен сегмент кода. Это нужно, потому что у реальных программ код (команды) и данные (переменные) должны быть разделены. Если Вы хотите в каком-либо месте программы вставить данные, то пишите .data, а потом уже сами данные (но их можно и не разделять). Я рекомендую вставлять данные между командами ret и end start. start: – это место, где находится точка входа в программу. На языке ассемблера всегда надо помечать место, где находится начало программы (первая команда). Строка ret нужна, чтобы выйти из программы – если бы ее не было, то программа бы «завесила» компьютер. Последняя строчка end start завершает текст исходной программы.
Пишем первую программу на языке ассемблера
Итак это была теория. А вот это практика. Попробуем написать программу на языке ассемблера самостоятельно. Все что вам нужно это компьютер и набор программ masm32.
Сначала наберем с помощью текстового редактора вот такой файл:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.686P
.model flat
include windows.inc
includelib user32.lib
extern _imp__MessageBoxA@16:dword
.code
start: push 0
push offset sztext
push offset szText
push 0
call _imp__MessageBoxA@16
ret
sztext db "Моё первое приложение",0
szText db "Привет!",0
end start
Сохраните этот файл под любым именем и дайте ему расширение .asm. Чтобы запустить эту программу, надо будет этот файл ассемблировать и скомпоновать. Рекомендую все это переложить на плечи компьютера. Создадим bat-файл следующего содержания:
Код
cls
if exist %~n1.exe del %~n1.exe
if not exist %~n1.rc goto over1
\masm32\bin\rc /v %~n1.rc
\masm32\bin\cvtres /machine:ix86 %~n1.res
\masm32\bin\ml /c /Cp /Gz /I\masm32\include \
/coff /nologo %~n1.asm
if errorlevel 1 goto TheEnd
\masm32\bin\Link /SUBSYSTEM:WINDOWS /ALIGN:16 \
/MERGE:.data=.text /LIBPATH:\masm32\lib /NOLOGO \
%~n1.obj %~n1.res
if errorlevel 1 goto TheEnd
del %~n1.res
goto TheEnd
:over1
\masm32\bin\ml /c /Cp /Gz /I\masm32\include \
/coff /nologo %~n1.asm
if errorlevel 1 goto TheEnd
\masm32\bin\Link /SUBSYSTEM:WINDOWS /ALIGN:16 \
/MERGE:.data=.text /LIBPATH:\masm32\lib /NOLOGO \
%~n1.obj
:TheEnd
if exist %~n1.obj del %~n1.obj
pause
Назовите получившийся bat-файл «asm1.bat» и разместите его в папке Windows/System32. Щелкаем по ярлыку «Мой компьютер».
Мой компьютер->Сервис->Свойства папки->Типы файлов->Создать

Связываем файлы с расширением .asm с файлом asm1.bat.
Теперь для компиляции и линковки достаточно будет просто щелкнуть по файлу с расширением .asm
Если все набрано правильно, то в текущем каталоге появится файл с именем исходника, но с расширением .exe. Запускаем его и видим результат.


Контрольные вопросы
  1. Что такое программная привязка?
  2. Каков максимальный размер COM-файла?
  3. Какие сегменты можно определить в программе, которая будет преобразована в COM-файл?
  4. Исходные коды находятся в файле с именем EXAMPLE.ASM. Напишите команды для создания COM-файла с этим же именем.
  5. Что конкретно подразумевает директива END:
    1. завершение сегмента кода,
    2. завершение программы,
    3. завершение сегмента данных.
  6. Объясните назначение каждого из следующих файлов:
    1. file.ASM,
    2. file.BAK,
    3. file.INC,
    4. file.OBJ,
    5. file.EXE.
  7. Укажите различия в назначениях END и RET.
  8. Как разрабатывается программа на языке ассемблера?
  9. Назовите основные этапы получения выполняемой программы.
  10. Вспомните основные опции транслятора.
  11. Для чего нужен отладчик?
  12. Можно ли написать программу в машинных кодах?


Вернуться к обсуждению:
Электронный учебник Assembler
12
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2013, 18:31
Готовые ответы и решения:

Посоветуйте учебник и IDE
Посоветуйте пожалуйста хороший учебник и IDE. Выбор встал между RadASM и WinAsm studio. Что лучше?...

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

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

Ищу электронный справочник по ассемблеру
Как то давно скачивал в виде экзешника под дос, справочник по ассемблеру. Сейчас у себя не могу...

51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2013, 18:31
Помогаю со студенческими работами здесь

Учебник по ассемблеру
Подскажите пожалуйста, ассемблера не знаю вообще, в процессорах тоже мало смыслю (всему научусь)....

Учебник Assembler x86
Привет. Подскажите хороший учебник, желательно на русском языке по Assembler x86.

Электронный учебник
Здравствуйте. Есть электронный учебник, на форме есть Webbrowser, sPanel1, Tsscrollbox, speedbuton...

Электронный учебник
Здраствуйте..Ищу электронный учебник по программированию сделанный в дельфи..Если есть у кого...

Электронный учебник
Здравствуйте! Хотелось бы написать электронный учебник по математике для школьников, посоветуйте...

Электронный учебник
Салам Всем!!! Дайде совет, где можно написать электронный учебник, нужно чтобы объем был...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru