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

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

15. Язык Ассемблера

15.1. Что такое Ассемблер.

Ассемблер — программа для перевода мнемоники команд в машинный код. Дословно «Assembler» переводится как «сборщик», т.е. Ассемблер собирает коды. Язык, на котором записываются инструкции для программы Ассемблер, называется языком Ассемблера. Поэтому не совсем корректно говорить: «программа на Ассемблере».

Правильно: «программа на языке Ассемблера».

Урок 17. Язык ассемблера. Основы


С мини-Ассемблером нам пришлось работать, когда мы создавали программы в отладчике Turbo Debugger. Напомним, какие при этом возникали основные проблемы:
• Нам приходилось самостоятельно распределять память для данных и кода. При этом в памяти возникали «дыры», т.к. мы опасались перекрытия данных и кода при внесении изменений в код программы;
• Приходилось корректировать команды перехода «вперед», т.к. мы не знали числового значения метки в момент ввода команды;
• Весьма трудоемким оказывался процесс внесения изменений в программу, особенно когда в «середину» программы приходилось добавлять новые команды.
Теперь мы возложим все эти задачи на программы, которые входят в состав пакетов для разработки программ на языке Ассемблера. Эти пакеты включают не только Ассемблеры, но и компоновщики, отладчики и прочие утилиты.
Таких пакетов в настоящее время существует несколько. Наибольшей популярностью пользуются MASM (Macro Assembler) фирмы Microsoft и TASM (Turbo Assembler) фирмы Borland. Мы будем составлять программы так, чтобы они проходили трансляцию и компоновку средствами обоих пакетов. На различия будем указывать особо. Основное внимание будет уделено TASM.
В чем заключается основное отличие Ассемблера от мини-Ассемблера, встроенного в отладчик? Ассемблер обрабатывает текстовый файл, содержащий программу. Эта программа содержит не только мнемоники команд, но и директивы, т.е. указания Ассемблеру для генерации кода и распределения данных.

15.4. Анализ листинга программы
Листинг программы first.lst состоит из трех частей. Проанализируем каждую часть отдельно. Для наглядности из текста программы перед трансляцией были удалены комментарии.
Turbo Assembler Version 4.1 19/04/02 00:33:35 Page 1
first.asm

В первой колонке перечислены символические имена (Symbol Name), во второй колонке их тип (Type): текст, число. Для метки msg указано, что ее тип — байтовый, для метки start — что она «близкая» (это определяется выбранной моделью памяти small). В третьей колонке приведено значение (Value) символического имени. Все имена записаны прописными буквами.

ЯЗЫК АССЕМБЛЕРА С НУЛЯ | #1 НАЧАЛО

Нами в программе определены только два имени: msg и start (Ассемблер перевел их в верхний регистр, т.е. заменил все буквы прописными). Остальные имена являются встроенными.
В третьей, заключительной части листинга перечислены программные сегменты (секции) и группы, в которые они объединены.

Groups tasm first.asm
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International
Assembling file: first.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 388k

Сначала выводится номер версии Ассемблера. В пакет TASM 5.0 входит ассемблер tasm.exe версии 4.1. Далее сообщается, какой файл ассемблируется (позднее мы увидим, что за один вызов tasm можно ассемблировать несколько файлов, поэтому вовсе не лишней является информация, какой именно файл обрабатывается).

Для этого файла в следующих двух строках выдается информация, что ошибок и предупреждений нет. Далее сообщается, что по тексту программы сделан один проход. Последнее сообщение информирует, сколько оперативной памяти осталось свободной при ассемблировании.
Перечислим возможные типы ошибок и предупреждений. Для этого намеренно будем вносить в файл ошибки.
1. Удалим директиву END start (проще всего закомментировать ее, поставив перед ней точку с запятой).
Assembling file: first.asm
**Fatal** first.asm(15) Unexpected end of file encountered
Error messages: 1
Выдается тип ошибки (Fatal — грубая), в скобках указан номер строки файла, где встретилась ошибка (15), далее — диагностическое сообщение: «Неожиданно встречен конец файла». При этом не создается объектный файл и не создается файл с листингом (при наличии ключа /l).
Восстановим директиву END start.
2. Удалим запятую, разделяющую операнды, в команде mov ah,9h
**Error** first.asm(8) Undefined symbol: AH9H
*Warning* first.asm(8) Argument needs type override
Error messages: 1
Warning messages: 1
На этот раз файл листинга есть, но объектный файл по-прежнему отсутствует. Сообщение об ошибке: «Неопределенный символ AH9H». Как видите, сообщение не проясняет происхождение ошибки. К этой же строке делается предупреждение: аргумент требует переопределения типа. Это даже комментировать не будем.

Восстановите запятую.
3. Добавим перед директивой END start строку mov ax,[200h].
*Warning* first.asm(13) [Constant] assumed to mean immediate constant
Error messages: None
Warning messages: 1
На этот раз создается и файл с листингом и объектный файл. Но к предупреждениям нужно относиться внимательно и настороженно. В отладчике мы увидим строку:
1AB7:0011 B80002 mov ax,0200
Это вовсе не соответствует нашему замыслу: поместить в регистр AX содержимое ячейки со смещением 200. Предупреждение на этот раз было точным: Константа, заключенная в квадратные скобки, предполагается константой — непосредственным операндом. Как исправить эту ошибку? Нужно использовать префикс замены сегмента: mov ax, ds:[200h]. Тогда мы увидим в отладчике:
1AB7:0011 A10002 MOV AX,[0200]
Префикс для DS: в коде, конечно, отсутствует.

15.6. Карта памяти
Файл с картой памяти возникает при вызове компоновщика.
Start Stop Length Name Class

00000H 00010H 00011H _TEXT CODE
00020H 00028H 00009H _DATA DATA
00030H 0012FH 00100H STACK STACK

Program entry point at 0000:0000

Для каждой программной секции определен начальный адрес (Start), конечный адрес (Stop), длина в байтах (Length), имя (Name) и класс (Class). Указан стартовый адрес (Program entry point). Адреса, указанные в Start, будут приплюсованы к адресу загрузки программы. Этот адрес задает загрузчик — компонента операционной системы программа command.com

Читайте также:
Как обезопасить свой компьютер от вирусов вредоносных программ

15.7. Сообщения TLINK об ошибках
Так же как и TASM компоновщик выдает сообщения об ошибках трех типов: Fatal, Error, Warning. Приведем два примера.
Изменим в программе first.asm последнюю строку:
END ; start
Трансляция пройдет без замечаний. А компоновщик выдаст сообщение об ошибке:
Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Fatal: No program entry point (в программе нет стартового адреса)
Восстановим последнюю строку (END start) и закомментируем строку .STACK 100h. На этот раз получим предупреждение:
Warning: No stack

15.10. Подпрограммы.
Подпрограммы в программах на языке Ассемблера имеют формат
имя PROC

ret
имя ENDP
Вызов подпрограммы осуществляется командой call имя.
В зависимости от используемой модели памяти генерируются дальние или ближние вызовы и возвраты. Пока мы используем только малую модель памяти. Так как для этой модели программный код заключен в одном сегменте, то генерируются ближние вызовы и возвраты.
Пример. Строка заканчивается символом $. Подпрограмма преобразует прописные буквы строки в строчные. Входной параметр подпрограммы — адрес строки.

.MODEL small
.STACK 100h
.DATA
msg DB «Dogs and Cats are Friends», 0Dh, 0Ah, $
.CODE
;————————————————————————————————
; Подпрограмма преобразует прописные буквы строки в строчные.
; Строка должна завершаться символом $.
; Вход: SI — адрес строки;
; Выход: SI — адрес терминатора строки;
; Используемые регистры: AL.
;————————————————————————————————
ToLower PROC
next: mov al, [si] ; Поместить очередной символ строки в AL
cmp al, $ ; Если это терминатор строки,
je fin ; то завершить обработку.
cmp al, A ; Если символ лежит в диапазоне A — Z
jb cont
cmp al, Z
ja cont
add al, a — A ; то превратить его в соответствующую
; строчную букву.
mov [si], al ; и поместить символ обратно в строку
cont: inc si ; Переместить указатель на следующий символ
jmp next
fin: ret
ToLower ENDP

; Преобразование строки
mov si, OFFSET msg
call ToLower

; Вывод новой строки
mov ah,9
mov dx,OFFSET msg
int 21h

; Завершение программы
mov ax, 4C00h
int 21h
END start

Вместо je fin можно было сразу поместить команду ret.
Задача. Написать подпрограмму, которая удаляет из строки все цифры.

15.11. Командная строка.
Обычно мы запускаем программу на выполнение, набирая ее имя в командной строке и заканчивая ввод нажатием клавиши Enter. Но в командной строке можно вводить и дополнительную информацию, которая составляет так называемый «хвост командной строки». Пример: tasm.exe prim.asm. Здесь в хвосте командной строки мы указываем, какую программу нужно ассемблировать.
Хвост командной строки располагается в PSP, начиная со смещения 80h.
Пример. Пусть в командной строке введено:
D:>prim.exe ab c
Посмотрим в отладчике, как выглядит хвост командной строки в PSP
Для этого вызовем отладчик так:
td prim.exe ab c
Перейдем в окно CPU (F10 → View → CPU). Перейдем в панель данных (Shift+Tab). Отобразим данные, начиная со смещения 80h (Alt+F10 → Goto → 80). Мы увидим:
ds:0080 05 20 61 62 20 63 0D 00
Сегментная часть адреса находится в DS, т.к. выполнение программы еще не началось. 05 — количество символов в командной строке: пробел, a, b, пробел, c. Строка заканчивается управляющим символом 0D (в количество символов он не входит). Теперь из программы можно обратиться к этой области памяти и извлечь из нее необходимую информацию.

15.12. Пример выполнения задания D1.

15.12.1. Формулировка задания.
Вариант 0. Текст для шифрования вводится в командной строке. В тексте — только прописные латинские буквы и пробелы. Удалить пробелы и зашифровать текст. Каждый символ преобразуется по формуле 3*код+5 (mod 26). При этом считается, что код буквы A равен 0, код буквы B равен 1 и т.д.

В программе должны быть одна или две подпрограммы для шифрования символа (или группы символов).

add ah,A ; Вернуться к коду ASCII
mov al,ah
clc ; нормальное завершение
ret
cf1: stc ; на входе символ, отличный от прописной латинской буквы
ret
encode ENDP

; Цикл обработки элементов строки
n: mov al, es:[si] ; Очередной символ хвоста – в AL
cmp al, ; Если встретился пробел,
je cont ; то пропустить его,
call encode ; а символ — зашифровать
jc no_A_Z ; Переход, если встретился недопустимый символ
mov [di],al ; Поместить зашифрованный символ в строку-приемник
inc di ; Переместить указатель в строке-приемнике
cont: inc si ; Переместить указатель в исходной строке
loop n
;
; Поместить в строку-приемник символы ВК и ПС, а также терминатор
mov word ptr [di], 0A0Dh
inc di
inc di
mov byte ptr [di], $
; Вывод итоговой строки на экран
mov dx, OFFSET text
mov ah, 9h
int 21h
jmp short fin

; Вывод сообщений об ошибках
empty: mov dx, OFFSET msg1 ; строка пуста
mov ah, 9h
int 21h
jmp short fin

no_A_Z: mov dx, OFFSET msg2 ; в строке недопустимые символы
mov ah, 9h
int 21h

; Завершение работы программы
fin: mov ax, 4C00h
int 21h
END start

15.12.3. Трансляция, компоновка и выполнение программы.
Трансляция программы
tasm/zi/l d1v0
(ключ /zi — включение отладочной информации, /l — получение файла листинга). На выходе файлы a6v0.obj и a6v0.lst.

Компоновка
tlink /v d1v0
(ключ /v — включение отладочной информации). На выходе файлы a6v0.exe и a6v0.map.

Запуск на выполнение
D:>d1v0
В командной строке нет текста
D:>d1v0 Aa1
В тексте недопустимые символы
D:>d1v0 NEW LINE
SRTMDSR

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

1.bat
c: asmin asm /l/zi %1
IF ERRORLEVEL 1 GOTO exit
c: asmin link /v %1
pause
c: asmin d %1.exe
:exit

Читайте также:
Как восстановить пробный период программы

Для программы d1v0.asm вызов командного файла имеет вид
1 d1v0
Расширение файла (asm) не указывается. Если вызвать командный файл так:
1 d1v0.asm
то будет сгенерирована команда
c: asmin link /v d1v0.asm
вместо правильной
c: asmin link /v d1v0.obj
Но расширение файла при использовании tasm и tlink можно не указывать. А вот для Turbo Debugger это расширение (exe) нужно указать обязательно.
В системную переменную ERRORLEVEL записывается код возврата программы tasm. Вторую строку командного файла следует читать так:
IF ERRORLEVEL >= 1 GOTO exit
но знак >= опускается. Если tasm не выдал сообщения об ошибках, то его код возврата равен нулю и происходит вызов компоновщика. Если же в процессе трансляции обнаружены ошибки, то код возврата равен 1. Происходит досрочный выход из командного файла (переход на метку exit).
Зачем в файле 1.bat размещена команда pause? Если при трансляции будут предупреждения (warnings), то прочитать их мы не успеем, так как Turbo Debugger “заслонит” экран с сообщениями. Сначала мы изучаем сообщения tasm и tlink и нажимаем на любую клавишу, чтобы вызвать Turbo Debugger.

15.14. Средства языка Ассемблера.

15.14.1. Переменные и константы времени ассемблирования.
В программе на языке Ассемблера можно использовать переменные времени ассемблирования. Память под них не выделяется. Они используются в вычислениях на этапе ассемблирования, и в исполняемом файле никак не фигурируют.
Вот простой пример. Нам нужно задать четыре массива слов, заполненных нулями. Размер первого массива равен N, размер второго — N + 2, размер третьего — 2N – 1, четвертого — остаток от деления N на 3. Решение при N = 5:
.DATA
m1 DW 5 DUP(0)
m2 DW 7 DUP(0)
m3 DW 9 DUP(0)
m4 DW 2 DUP(0)

Если возникнет необходимость изменить число N, то размеры массивов придется заново вычислять вручную. Хотелось бы в программе задавать число N, а размеры массивов вычислять автоматически. Решение:
.DATA
N = 5
m1 DW N DUP(0)
m2 DW N+2 DUP(0)
m3 DW 2*N-1 DUP(0)
m4 DW N MOD 3 DUP(0)

Если в программе будут часто использоваться эти размеры, то им можно дать свои имена:
.DATA
N1 = 5
N2 = N1+2
N3 = 2*N1-1
N4 = N1 MOD 3
m1 DW N1 DUP(0)
m2 DW N2 DUP(0)
m3 DW N3 DUP(0)
m4 DW N4 DUP(0)

Переменные времени ассемблирования являются 16-разрядными. Такие переменные могут участвовать в арифметических выражениях. Возможны следующие операции: + (сложение), – (вычитание), * (умножение), / (деление нацело), MOD (взятие остатка по модулю).
Константы задаются с помощью директивы EQU. Например, часто используемому сочетанию символов 0Dh,0Ah,$ можно дать имя, которое Ассемблер будет заменять его определением.
CRLFT EQU 0Dh,0Ah,$
Далее в программе изменять это определение нельзя.

15.14.2. Счетчик адреса.
Когда начинается новая программная секция, специальная встроенная переменная Ассемблера — счетчик адреса — сбрасывается в нуль. По мере выделения новых участков памяти для переменных или команд счетчик адреса увеличивается. Посмотрим это на примере. Вот часть листинга небольшой программы.

Источник: www.sesiya.ru

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

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

. 1) Составление алгоритма в виде блок-схемы или структурного описания,

. 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора

текстов. Имя PROG может быть произвольным, а расширение ASM —

. 3) Перевод (трансляция или ассемблирование) исходной программы в

машинные коды с помощью транслятора TASM.EXE. На этом этапе получается

промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом

синтаксические и орфографические ошибки исправляются повтором пп.2 и

. 4) Преобразование с помощью программы TLINK.EXE объектного кода

PROG.OBJ в выполнимый код PROG.EXE или PROG.COM.

. 5) Выполнение программы и ее отладка начиная с п.1, если встретились

Текст программы на Ассемблере содержит следующие операции:

. а) команды или инструкции,

. б) директивы или псевдооператоры,

. г) предопределенные имена.

Действия обусловленные операциями перечисленными выполняются на

этапе трансляции, т.е. являются командами Ассемблеру. Операции, называемые

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

являются командами микропроцессору.

Понятие ассемблера

Язык ассемблера позволяет лучше понять взаимодействие всех функциональных узлов компьютера с операционной системой. Язык ассемблера – это специфический язык программирования со взаимно однозначным соответствием между его операторами и командами процессора. Язык ассемблера существует для каждого типа процессоров или целого семейства процессоров, поскольку команды на языке ассемблера должны иметь взаимно однозначное соответствие с системой машинных команд и должны быть согласованы с архитектурой компьютера. В данном курсе рассматривается система команд для 16-разрядного 8086-88 процессоров производства Intel. Микропроцессоры 8086-88 характеризуются основным адресным пространством объемом 1 (MB) мегабайт, из которого первые 640 KB (килобайт) отведены под основную память (RAM) и адресным пространством ввода/вывода объемом 65536 байтов.

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

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

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

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

Читайте также:
Как работает программы клиент сервер

Заключение

Цель подобного жесткого закрепления регистров для этих команд – более компактная кодировка их машинного представления. Знание особенностей использования регистров машинными командами позволяет, при необходимости, экономить память, занимаемую кодом программы, и более эффективно программировать алгоритм. Язык Ассемблера — мощное средство программирования.

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

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

К преимуществам Ассемблера можно отнести:

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

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

Литература

1. Калабеков Б.А. Цифровые устройства и микропроцессорные системы – М.: Телеком, 2000г., c. 126…130

2. Зельдин Е.А. Цифровые интегральные микросхемы в информационно-измерительной аппаратуре – Л.: Энергоиздат , 1986 г., c. 236…258.

3. Фролкин В.Т., Попов Л.Н. Импульсные и цифровые устройства – М.: Радио и связь, 1992 г., c.229…248.

4. Потемкин И.С. Функциональные узлы цифровой автоматики – М.: Энергоатомиздат, 1988 г., c. 206…211, 276…290.

5. Сайт в интернете: WWW. abc. WSV.ru

6. Сайты в интернете : rff.tsu.ru, pub. mirea. ac. ru, foroff. phys. msu.ru

7. СА Майоров, ВВ Кириллов, АА Приблуда Введение в микро-ЭВМ

8. Абель П. Язык Ассемблера для IBM PC и программирования- М.: Высш.шк.,1992.

Источник: megapredmet.ru

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕПлан Ассемблер. Этапы разработки программы Предложения

План Ассемблер. Этапы разработки программы Предложения языка Ассемблера. Структура программы Шаблоны для программ. Примеры Понятие о мультипрограммном режиме работы.

Машинно -ориентированный язык символического программирования, включающий в набор своих операторов операции, выполняемые той или иной ЭВМ, называется языком Ассемблера. Программа, написанная на Ассемблере, называется исходной программой.

Современные Ассемблеры: MASM 5.x, 6.x фирмы MS; Quick Assembler фирмы MS; Turbo Assembler (TASM) фирмы Borland; интегрированные среды: Pwb (для MASM), qc (для Quick Assembler ), tc, bc (для C, C++)

Разработка программы на Ассемблере состоит из следующих этапов: 1) Составление алгоритма в виде блок-схемы или структурного описания, 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов. Имя PROG может быть произвольным, а расширение ASM — обязательно, 3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пп.2 и 3, 4) Преобразование с помощью программы TLINK.EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM. 5) Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки.

Создание программы на Ассемблере

Предложения языка Ассемблера. Структура программы Текст программы на Ассемблере содержит следующие операции: а) команды или инструкции, б) директивы или псевдооператоры, в) операторы, г) предопределенные имена.

ОПЕРАТОРЫ 1. () — скобки, определяют порядок вычислений 2. [] — например [BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации. 3. +, -, *, / — операторы сложения, вычитания, умножения и деления. mov ax, (2 * 3 + 8 / 2) — 2; в регистр ax будет помещено число 8. 4. MOD — деление по модулю. Даёт остаток. 5. SHL,SHR — сдвиг операнда влево, вправо. mov si, 01010101b SHR 3; в регистр SI будет загружено число 0Ah (00001010).

6. NOT — побитовая инверсия. 7. AND,OR,XOR — операции «И»,»ИЛИ»,»ИСКЛ.ИЛИ». mov dl, (10d OR 5d) XOR 7d; (dl) будет равно 8. 8. : — переназначение сегмента. mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение). 9. OFFSET — оператор получения смещения адреса относительно начала сегмента (то есть количества байтов от начала сегмента до идентификатора адреса). mov bx, OFFSET table

ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ) 1. : — определяет близкую метку (в пределах сегмента). jmp lbl . . lbl: . 2 . = — присваивает символическому имени значение выражения. videoram = 0B800h; присвоение videoram = 0B000h; 3. .CODE — определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы. 4. .DATA — определяет начало сегмента данных. 5. DB,DW — директивы резервирующие один или несколько байтов: DB, или одно или несколько слов: DW. . .DATA fibs DB 1,1,2,3,5,8,13 rus DB ‘Турбо Ассемблер‘ buf DB 80 DUP(0);резервируется 80 байтов, каждый обнуляется int DW 65535;в двух байтах располагается число FFFFh. Array DW 100 DUP (0);резервируется 100 слов 6. END — обозначает конец программы. 7. ENDP — обозначает конец подпрограммы.

9. .MODEL — определяет размер памяти под данные и код программы. .MODEL tiny; под программу, данные и стек отводится один общий сегмент (64 Kb). 10. PROC — определяет начало подпрограммы. 11. .STACK — определяет размер стека. .STACK 200h; выделяет 512 байтов для стека. 12. .RADIX base — определяет систему счисления по умолчанию, где base — основание системы счисления: 2, 8, 10, 16. .RADIX 8 oct = 77; oct равно 63d.

13. ; — начало комментария.

Источник: present5.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru