Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Знакомство с инструментальными средствами разработки программ на Assembler (на примере WinAsm Studio)

Содержание

Язык ассемблера – это язык программирования со взаимно однозначным соответствием между его командами и командами процессора. Язык ассемблера существует для каждого типа процессоров или целого семейства процессоров, так как команды на языке ассемблера должны соответствовать системе
Знакомство с инструментальными средствами разработки программ на Assembler (на примере WinAsm Studio) Язык ассемблера – это язык программирования со взаимно однозначным соответствием между его Для разработки программ на языке ассемблера для семейства процессоров Intel применяются два Технология разработки программ на языке ассемблера включает следующие этапы:Постановка задачи и составление ML.EXE LINK.EXE компиляциякомпоновка WinAsm Studio - специальное инструментальное средство для разработки программ на языке ассемблера, WinAsm Studio - специальное инструментальное средство для разработки программ на языке Ассемблера, Проект - совокупность нескольких исходных программ на языке ассемблера, файлов заголовков и Процедура создания проекта в WinAsm 1. Создание нового проекта Процедура создания проекта в WinAsm 2. Выбор варианта нового проекта. 3. Окно нового проекта.Процедура создания проекта в WinAsm Процедура создания проекта в WinAsm 4. Сохранение нового проекта. 5. Окно редактирования текста программы. Процедура создания проекта в WinAsm Структура программы на языке ассемблераИсходный текст программы разделяется на следующие секции: данные,неинициализированные данные,константы,код. Структура программы на языке ассемблераСекция данных (.DATA) содержит данные, доступные для чтения Секция констант аналогична секции данных, но доступна только для чтения. Структура программы Шаблон программы на языке ассемблера .386.MODEL Flat, STDCALL.DATA.DATA?.CONST.CODE  end Особенности шаблона программы на языке ассемблера 1) Директивы установки типа процессора – Модели памяти, используемые в MASM Особенности шаблона программы на языке ассемблера 1) Директивы установки типа процессора – 3) Директивы, определяющие начала секций программы. .DATA .codestart:      …end startСекция кода Использование функций Windows APIв программах на ассемблереWindows API (Application Programming Interface) Kernel32.dll Пpогpаммы по мере необходимости связываются с библиотеками. Связь осуществляется путем использования в Регистры – участки высокоскоростной памяти для хранения данных в процессоре, они непосредственно В общем случае функция, выполняемая тем или иным регистром, определяется командами, в В общем случае функция, выполняемая тем или иным регистром, определяется командами, в Регистры указатели – это 16-разрядные регистры ЕВР (указатель базы), ЕSI (индекс источника), Регистры сегментов – это 16-разрядные регистры, которые позволяют организовать память в виде Регистр флагов – это 16-разрядный регистр, содержащий биты, определяющие код условия, установленный .386 .MODEL flat, stdcall include KERNEL32.inc includelib KERNEL32.LIB .DATA summand_1 db 12h summand_2 db 2fh .CODEstart: 	mov Синтаксис ассемблераВсе конструкции языка ассемблера можно разделить на 4 вида:Команды (инструкции) – Формат команд и макрокоманд:[имя метки] : [операция] [операнд(ы)] ; [комментарий] Имя метки metka_1:  adc al, var2 ; складываем с учетом флага CF содержимое регистра и переменнуюПример: Формат директивы:[имя] [директива] [операнд(ы)] ; [комментарий] Пример:summand_1 db 12h mov ax, summand_1 Основные директивы размещения данных Примеры:summa db 10h ; выделяется байт, в него Для присвоения значений константам применяются директивы объявления констант: 1) Директива равенства – Команды пересылки данных1) MOV – копирует данные из одного операнда в другой. Недостаток команды MOV: отсутствие возможности использовать одновременно два операнда памяти, то есть 2) XCHG (от exchange) – обменивает содержимое двух регистров или содержимое регистра Арифметические команды 1) Команды инкремента и декрементаINC операнд – команда инкремента (значение 2) Команды сложенияADC операнд-получатель, операнд-отправительОсобенностью команды ADC является то, что Команды передачи управленияПрактически в любой программе есть точки, в которых необходимо принять Команда безусловного перехода:JMP метка – заставляет процессор продолжать выполнение программы с места, Для анализа соотношения между операндами перед командой условного перехода должна быть выполнена Существуют следующие команды условного перехода, выполняемые после команды CMP: j – jump, Формат команды условного перехода:Jcc метка где cc – код конкретного условия, анализируемого Другим вариантом команд условного перехода являются команды, которые просто анализируют Пример:JC metka ; если флаг переноса равен 1, то		  ; переход Две команды, предназначенные специально для работы с регистром ECX:JCXZ metka ; Для организации цикла лучше всего использовать команду LOOP. Формат:   LOOP Дополнительные операторы, директивы и команды Оператор OFFSET – возвращает расстояние (смещение) переменной Оператор PTR позволяет выделить из указанной переменной необходимое количество байт и поместить Директива LABEL устанавливает метку и присваивает этой метке определенный размер без размещения Команда NEG позволяет осуществить перевод чисел в противоположные им по знаку.Формат Практические задания. Задание 1. Разработать алгоритм и написать программу на языке ассемблера Практические задания. Задание 2. Разработать алгоритм и написать программу на языке БЛАГОДАРЮ ЗА ВНИМАНИЕ!
Слайды презентации

Слайд 2 Язык ассемблера – это язык программирования со взаимно

Язык ассемблера – это язык программирования со взаимно однозначным соответствием между

однозначным соответствием между его командами и командами процессора.
Язык

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

Язык ассемблера – язык низкого уровня.


Ассемблер – это программа, преобразовывающая исходные коды языка ассемблера в машинные команды.


Слайд 3 Для разработки программ на языке ассемблера для семейства

Для разработки программ на языке ассемблера для семейства процессоров Intel применяются

процессоров Intel применяются два пакета программ:
1.    Borland Turbo

Assembler (TASM)
2.    Microsoft Macro Assembler (MASM).

Microsoft Macro Assembler (MASM).


Слайд 4 Технология разработки программ на языке ассемблера включает следующие

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

этапы:
Постановка задачи и составление блок-схем.
Формирование текста программы с помощью

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

Слайд 5 ML.EXE
LINK.EXE
компиляция
компоновка

ML.EXE LINK.EXE компиляциякомпоновка

Слайд 6 WinAsm Studio - специальное инструментальное средство для разработки

WinAsm Studio - специальное инструментальное средство для разработки программ на языке

программ на языке ассемблера, которое
содержит встренный текстовый

редактор, который ориентирован специально на написание программ на языке ассемблера (подсветка синтаксических конструкций языка, всплывающие подсказки и т.д.);
имеет средства для разработки оконного интерфейса программы (создание окон и различных элементов управления (кнопки, поля ввода, выпадающие списки и пр.), меню программы);

Слайд 7 WinAsm Studio - специальное инструментальное средство для разработки

WinAsm Studio - специальное инструментальное средство для разработки программ на языке

программ на языке Ассемблера, которое
скрывает от программиста

особенности компиляции и компоновки программы;
содержит встроенные средства отладки программ.

D: \ WinAsm \ WinAsm.exe


Слайд 8 Проект - совокупность нескольких исходных программ на языке

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

ассемблера, файлов заголовков и т.д., связанных между собой логикой

алгоритма результирующей программы.

Программы на языке ассемблера имеют расширение “*.asm”

Файл проекта, представляющий собой файл с информацией о файлах, входящих в проект, опциях используемых для запуска компилятора и компоновщика и прочей служебной информацией, имеет расширение “*.wap”


Слайд 9 Процедура создания проекта в WinAsm


1. Создание нового

Процедура создания проекта в WinAsm 1. Создание нового проекта

проекта


Слайд 10 Процедура создания проекта в WinAsm
2. Выбор варианта

Процедура создания проекта в WinAsm 2. Выбор варианта нового проекта.

нового проекта.


Слайд 11 3. Окно нового проекта.
Процедура создания проекта в WinAsm

3. Окно нового проекта.Процедура создания проекта в WinAsm




Слайд 12 Процедура создания проекта в WinAsm
4. Сохранение нового

Процедура создания проекта в WinAsm 4. Сохранение нового проекта.

проекта.


Слайд 13 5. Окно редактирования текста программы.
Процедура создания проекта

5. Окно редактирования текста программы. Процедура создания проекта в WinAsm

в WinAsm


Слайд 14 Структура программы
на языке ассемблера
Исходный текст программы разделяется

Структура программы на языке ассемблераИсходный текст программы разделяется на следующие секции: данные,неинициализированные данные,константы,код.

на следующие секции:
данные,
неинициализированные данные,
константы,
код.


Слайд 15 Структура программы
на языке ассемблера
Секция данных (.DATA) содержит

Структура программы на языке ассемблераСекция данных (.DATA) содержит данные, доступные для

данные, доступные для чтения и записи, включается в exe-файл.


Неинициализированные данные (.DATA?) не имеют никакого содержания при запуске, не включены в exe-файл непосредственно, это только часть памяти, зарезервированной Windows. Эта секция доступна для чтения и записи.


Слайд 16 Секция констант аналогична секции данных, но доступна только

Секция констант аналогична секции данных, но доступна только для чтения. Структура

для чтения.
Структура программы
на языке ассемблера
Секция кода содержит

текст программы на языке ассемблера, реализующий требуемый алгоритм работы.

Слайд 17 Шаблон программы
на языке ассемблера
.386
.MODEL Flat, STDCALL
.DATA

Шаблон программы на языке ассемблера .386.MODEL Flat, STDCALL.DATA.DATA?.CONST.CODE end

данные>
.DATA?

.CONST

.CODE


end

<Метка (точка входа в программу)>

Слайд 18 Особенности шаблона программы на языке ассемблера
1) Директивы

Особенности шаблона программы на языке ассемблера 1) Директивы установки типа процессора

установки типа процессора – это директивы, которые определяют минимально


возможный тип применяемого процессора.

.386

2) Директивы выбора модели памяти
.MODEL FLAT, STDCALL


Слайд 19 Модели памяти, используемые в MASM

Модели памяти, используемые в MASM

Слайд 20 Особенности шаблона программы на языке ассемблера
1) Директивы

Особенности шаблона программы на языке ассемблера 1) Директивы установки типа процессора

установки типа процессора – это директивы, которые определяют минимально


возможный тип применяемого процессора.

.386

2) Директивы выбора модели памяти
.MODEL FLAT, STDCALL

Ключевое слово STDCALL устанавливает порядок передачи параметров при вызове подпрограмм и функций справа налево.


Слайд 21 3) Директивы, определяющие начала секций программы.

.DATA

3) Директивы, определяющие начала секций программы. .DATA    .DATA?



.DATA?


.CONST

.CODE

Особенности шаблона программы на языке ассемблера




Слайд 22 .code
start:

end start

Секция

.codestart:   …end startСекция кода

кода


Слайд 23 Использование функций Windows API
в программах на ассемблере
Windows API

Использование функций Windows APIв программах на ассемблереWindows API (Application Programming Interface)

(Application Programming Interface)
Kernel32.dll содеpжит API функции, взаимодействующие с

памятью и упpавляющие пpоцессами.

User32.dll содеpжит API функции, контpолиpующие пользовательский интеpфейс

Gdi32.dll содеpжит API функции, ответственные за
гpафические опеpации (определение цветовой
палитры создаваемых окон, элементов управления
и т.д.).


Слайд 24 Пpогpаммы по мере необходимости связываются с библиотеками.

Связь

Пpогpаммы по мере необходимости связываются с библиотеками. Связь осуществляется путем использования

осуществляется путем использования в тексте программы ссылки на одноименные

файлы с расширением *.LIB, называемые библиотеками импоpта.

Подключение библиотек импоpта осуществляется директивой includelib.

Описание передаваемых в API функций параметров содержится в одноименых файлах с расширением *.INC, называемых файлами для включения.

Слайд 25 Регистры – участки высокоскоростной памяти для хранения данных

Регистры – участки высокоскоростной памяти для хранения данных в процессоре, они

в процессоре, они непосредственно подключены к блоку управления и

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

Регистры общего назначения
– это 32-разрядные регистры EАХ, EВХ, EСХ, EDX, в каждом из которых выделяют 16-тиразрядный регистр, состоящий из двух 8-разрядных частей, например, в ЕАХ рассматривают регистр АХ, в нем младшую часть – регистр AL и старшую часть - АН.


Слайд 26 В общем случае функция, выполняемая тем или иным

В общем случае функция, выполняемая тем или иным регистром, определяется командами,

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

с каждым регистром связано некоторое стандартное его назначение:

регистр ЕАХ служит для временного хранения данных (регистр аккумулятор), часто используется при выполнении операций сложения, вычитания, сравнения и других арифметических и логических операций;
регистр ЕВХ служит для хранения адреса некоторой области памяти (базовый регистр), а также используется как вычислительный регистр;


Слайд 27 В общем случае функция, выполняемая тем или иным

В общем случае функция, выполняемая тем или иным регистром, определяется командами,

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

с каждым регистром связано некоторое стандартное его назначение:

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


Слайд 28 Регистры указатели – это 16-разрядные регистры
ЕВР (указатель

Регистры указатели – это 16-разрядные регистры ЕВР (указатель базы), ЕSI (индекс

базы), ЕSI (индекс источника),
ЕDI (индекс результата), ЕSP (указатель

стека),
ЕIP (указатель команд). Они содержат величину
смещения, используемую при расчете адресов
команд и данных.

ЕSI (индекс отправителя) указывает смещение
адреса начала данных, которые
должны быть перемещены.

ЕDI (индекс результата) указывает смещение
адреса, куда перемещаются данные.

ЕIP (указатель команд) хранит смещение
относительно начала сегмента кода
следующей команды.


Слайд 29 Регистры сегментов – это 16-разрядные регистры, которые позволяют

Регистры сегментов – это 16-разрядные регистры, которые позволяют организовать память в

организовать память в виде совокупности четырех различных сегментов.
CS

– регистр программного сегмента (сегмента кода) определяет адрес начала участка ОП, содержащего выполняемые процессором команды;
DS – регистр информационного сегмента (сегмента данных) определяет адрес начала участка ОП для хранения данных;
SS – регистр стекового сегмента (сегмента стека) определяет часть памяти, используемой как системный стек;
ES – регистр расширенного сегмента (дополнительного сегмента) указывает дополнительную область памяти, используемую для хранения данных.

Слайд 30 Регистр флагов – это 16-разрядный регистр, содержащий биты,

Регистр флагов – это 16-разрядный регистр, содержащий биты, определяющие код условия,

определяющие код условия, установленный последней выполненной командой, или состояние

микропроцессора. Эти биты называются флагами.

Слайд 31 .386
 .MODEL flat, stdcall
 include KERNEL32.inc
 includelib KERNEL32.LIB
 .DATA
summand_1 db 12h

.386 .MODEL flat, stdcall include KERNEL32.inc includelib KERNEL32.LIB .DATA summand_1 db 12h summand_2 db 2fh

summand_2 db 2fh
.CODE
start:
  mov al, summand_2
add al, summand_1
  invoke ExitProcess,0
end

start

Слайд 34 Синтаксис ассемблера
Все конструкции языка ассемблера можно разделить на

Синтаксис ассемблераВсе конструкции языка ассемблера можно разделить на 4 вида:Команды (инструкции)

4 вида:
Команды (инструкции) – представляют собой символические аналоги машинных

команд. Например, mov.
Макрокоманды – это оформляемые определенным образом предложения текста программы, замещаемые во время компиляции другими предложениями.
Директивы
Комментарии – содержат любые символы. Позволяют хранить примечания программиста к тексту исходной программы. Комментарии начинаются с символа точка с запятой “;”.



Слайд 35 Формат команд и макрокоманд:
[имя метки] : [операция] [операнд(ы)]

Формат команд и макрокоманд:[имя метки] : [операция] [операнд(ы)] ; [комментарий] Имя

; [комментарий]
Имя метки – символьный идентификатор строки программы.
Операция

– символическое обозначение машинной команды или макрокоманды.

Операнд(ы) – части команды, макрокоманды или директивы, обозначающие объекты, над которыми производятся действия.


Слайд 36 metka_1: adc al, var2 ;
складываем с

metka_1: adc al, var2 ; складываем с учетом флага CF содержимое регистра и переменнуюПример:

учетом флага CF
содержимое регистра
и переменную
Пример:


Слайд 37 Формат директивы:
[имя] [директива] [операнд(ы)] ; [комментарий]
Пример:

summand_1

Формат директивы:[имя] [директива] [операнд(ы)] ; [комментарий] Пример:summand_1 db 12h mov ax, summand_1

db 12h
mov ax, summand_1


Слайд 38 Основные директивы размещения данных

Основные директивы размещения данных

Слайд 39 Примеры:

summa db 10h ; выделяется байт, в него

Примеры:summa db 10h ; выделяется байт, в него


записывается число 10h
char1 DB

‘A’ ; выделяется байт, в него
записывается 8-разрядный код
символа А

list db 10h, 20h, 30h ,40h ; выделяются 4 байта, в них
записывается число 40302010h

list dd 10203040h ; выделяются 4 байта, в них
записывается число 10203040h




Слайд 40 Для присвоения значений константам применяются директивы объявления констант:

Для присвоения значений константам применяются директивы объявления констант: 1) Директива равенства


1) Директива равенства – сопоставляет с именем константы числовое

значение. Это значение может быть переопределено в программе. Формат директивы равенства: имя = выражение. Например, const1 = 50.
2) Директива EQU – сопоставляет с именем константы числовое значение или строку символов. Описанная таким образом константа не может быть переопределена в ходе программы. Формат использования:
имя EQU число
имя EQU <число1, число2, …>

Слайд 41 Команды пересылки данных
1) MOV – копирует данные из

Команды пересылки данных1) MOV – копирует данные из одного операнда в

одного операнда в другой. Формат команды:

MOV операнд-получатель, операнд-отправитель
Варианты отправителя

и получателя:
MOV reg, reg
MOV mem, reg
MOV reg, mem
MOV mem, immed
MOV reg, immed

где reg – регистр ЦП, mem – место в памяти (например, переменная),
immed – непосредственное значение (например, 2Bh).


Слайд 42 Недостаток команды MOV:
отсутствие возможности использовать одновременно два

Недостаток команды MOV: отсутствие возможности использовать одновременно два операнда памяти, то

операнда памяти, то есть чтобы переслать данные из одной

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

Слайд 43 2) XCHG (от exchange) – обменивает содержимое двух

2) XCHG (от exchange) – обменивает содержимое двух регистров или содержимое

регистров или содержимое регистра и переменной. Возможны следующие варианты

использования:
XCHG reg, reg
XCHG reg, mem
XCHG mem, reg

Отсутствует возможность использования двух операндов памяти.


Слайд 44 Арифметические команды
1) Команды инкремента и декремента
INC операнд

Арифметические команды 1) Команды инкремента и декрементаINC операнд – команда инкремента

– команда инкремента (значение операнда увеличивается на единицу).
DEC

операнд – команда декремента (значение операнда уменьшается на единицу).
В этом случае в качестве операнда рассматривается регистр процессора или участок памяти.

2) Команды сложения
ADD операнд-получатель, операнд-отправитель (складывает операнд-отправитель с операндом-получателем и помещает результат в операнд-получатель; исходный операнд-отправитель при этом не изменяется).


Слайд 45 2) Команды сложения
ADC операнд-получатель, операнд-отправитель
Особенностью команды

2) Команды сложенияADC операнд-получатель, операнд-отправительОсобенностью команды ADC является то, что

ADC является то, что ЦП в процессе ее выполнения

складывает операнд-отправитель с операндом-получателем, но дополнительно производит операцию сложения полученного результата со значением флага CF (флаг переноса) из регистра флагов процессора.

3) Команда вычитания
SUB операнд-получатель, операнд-отправитель (вычитает из операнда-получателя операнд-отправитель и помещает результат в операнд-получатель).


Слайд 46 Команды передачи управления
Практически в любой программе есть точки,

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

в которых необходимо принять решение о том, какая команда

будет выполняться следующей. Это решение может быть двух видов:
1) безусловным, то есть произойдет переход не к следующей по порядку команде, а к указанной;
2) условный переход, то есть произойдет переход не к следующей по порядку команде, а к той, которая будет выполняться исходя из анализа некоторых условий.

Слайд 47 Команда безусловного перехода:

JMP метка – заставляет процессор продолжать

Команда безусловного перехода:JMP метка – заставляет процессор продолжать выполнение программы с

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

самой команде JMP.

Команды условного перехода:

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


Слайд 48 Для анализа соотношения между операндами перед командой условного

Для анализа соотношения между операндами перед командой условного перехода должна быть

перехода должна быть выполнена команда сравнения операндов:

CMP операнд1, операнд2

Команда CMP, как и команда SUB, выполняет вычитание операндов (из операнд1 вычитается операнд2), в результате выполнения вычитания процессор выставляет флаги в регистре флагов, но не записывает полученный результат вычитания на место первого операнда.
По результатам анализа флагов возможно произвести необходимый условный переход.

Слайд 49 Существуют следующие команды условного перехода, выполняемые после команды

Существуют следующие команды условного перехода, выполняемые после команды CMP: j –

CMP:
j – jump, e – equal, n –

not, g – greater, l – less, а – above, b – below.

Слайд 50 Формат команды условного перехода:
Jcc метка
где cc –

Формат команды условного перехода:Jcc метка где cc – код конкретного условия,

код конкретного условия, анализируемого командой.
Пример:

CMP AL, AH ; сравниваем значения

AL и AH
JE metka1 ; если равны AL=AH, то переход
; к команде перед которой стоит ; metka1
JL metka2
JG metka3

Слайд 51 Другим вариантом команд условного перехода являются

Другим вариантом команд условного перехода являются команды, которые просто анализируют

команды, которые просто анализируют состояние определенных флагов процессора.

Обозначение этих команд состоит также из символа “J” (jump) и одной буквы, отражающей название флага, перед которой может быть вставлен символ отрицания “N” (not).

Слайд 53 Пример:


JC metka ; если флаг переноса равен 1,

Пример:JC metka ; если флаг переноса равен 1, то		 ; переход

то
; переход к команде,

; перед которой стоит metka

Слайд 54 Две команды, предназначенные специально для работы с

Две команды, предназначенные специально для работы с регистром ECX:JCXZ metka

регистром ECX:
JCXZ metka ; (Jump if CX is Zero)

если регистр
; CX содержит ноль, то переход
; к команде, перед которой
; стоит metka


JECXZ metka; (Jump if ECX is Zero) переход,
; если регистр ECX содержит
; ноль


Слайд 55 Для организации цикла лучше всего использовать команду LOOP.

Для организации цикла лучше всего использовать команду LOOP. Формат:  LOOP


Формат:

LOOP metka
Эта команда вычитает из

регистра ECX единицу. Если в результате выполнения декремента регистр ECX не принимает нулевое значение, то ЦП передает управление команде, перед которой находится metka.

Слайд 56 Дополнительные операторы,
директивы и команды
Оператор OFFSET –

Дополнительные операторы, директивы и команды Оператор OFFSET – возвращает расстояние (смещение)

возвращает расстояние (смещение) переменной от начала сегмента.
Пример:

MOV EBX, OFFSET

summand_1; помещает в регистр
; EBX смещение переменной
; summand_1 от начала
; сегмента данных,

Операнд-приемник должен быть обязательно 32-разрядным, поскольку для указания смещения используются 32-разрядные числа.

Слайд 57 Оператор PTR позволяет выделить из указанной переменной необходимое

Оператор PTR позволяет выделить из указанной переменной необходимое количество байт и

количество байт и поместить их в необходимое место.
Пример использования:

.DATA
var1

DB 12h

.CODE
mov al, byte PTR var1


Слайд 58 Директива LABEL устанавливает метку и присваивает этой метке

Директива LABEL устанавливает метку и присваивает этой метке определенный размер без

определенный размер без размещения данных.
В примере метка var_1

объявлена перед переменной var_2 и имеет длину равную 16 бит:


.DATA
var_1 LABEL word
var_2 DD 12345678h ; размещаем в памяти
; двойное слово
.CODE
mov AX, var_1 ; AX = 5678h
mov CX, var_1[2] ; СX = 1234h


Слайд 59 Команда NEG позволяет осуществить перевод чисел в

Команда NEG позволяет осуществить перевод чисел в противоположные им по

противоположные им по знаку.
Формат команды:
NEG [операнд]
Полученное значение

будет записано в этот же операнд.

Слайд 60 Практические задания.

Задание 1. Разработать алгоритм и написать

Практические задания. Задание 1. Разработать алгоритм и написать программу на языке

программу на языке ассемблера для сложения двух целых положительных

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

Слайд 61 Практические задания.

Задание 2. Разработать алгоритм и

Практические задания. Задание 2. Разработать алгоритм и написать программу на

написать программу на языке ассемблера для сложения двух целых

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


  • Имя файла: znakomstvo-s-instrumentalnymi-sredstvami-razrabotki-programm-na-assembler-na-primere-winasm-studio.pptx
  • Количество просмотров: 184
  • Количество скачиваний: 0