- •Source Directory
 - •IncludEимя_файла_с_путём
 - •Include dop1.Asm
 - •Операции
 - •Взаимодействие с языками высокого уровня.
 - •II equ word ptr ll ; Равно5678h
 - •I2 equ word ptr c2 ; Равно…
 - •Id_table label byte
 - •Id_table label byte
 - •Irp формальный_аргумент,
 - •Irpc формальный_аргумент,строка_символов
 - •Irpc rg,
 - •IFxxx логическое_выражение_или_аргументы
 - •If(e) логическое_выражение
 - •If(n)def символическое_имя
 - •Ifndef sw ;если sw не определено, то выйти из макроса
 - •If(n)b аргумент
 
Схема трансляции и запуска на отладку ассемблерной программы.
Исходный текст
	программы 
	*.ASM name.cpp 
	Препроцессор (TASM.EXE) Полный текст программы 
	Компилятор (TASM.EXE) Объектный код программы 
	*.OBJ name.obj Output Directory 
	Компоновщик (TLINK.EXE) Включаемые файлы 
	*.H Include
	directory Библиотечные функции 
	 Library
	directory Исполняемая программа name.exe Output Directory 
	
	Source Directory
	
	
	

	
	
	
	
	
	
	
	 
	*.EXE или*.COM

	 
	Турбо-Отладчик (TD.EXE)
Формат команды ассемблера
[Метка:] Мнемокод [Операнды] [;Комментарий]
GETCOUNT: MOV CX,DI ;Инициализация счётчика
Псевдооператоры (директивы компилятора)
Директивы определения идентификаторов
имя EQUтекст
или
имя EQUчисловое_выражение
К EQU 1024 ;Присвоить имя константе
TABLE EQU DS:[BP][SI] ;Присвоить имя комбинации адресов
SPEED EQU RATE ;Определить синоним
COUNT EQU CX ;Присвоить имя регистру
DBL_SPEED EQU 2*SPEED
MINS_PER_DAY EQU 60*24
CUNST = 56 ;Аналогично CONST EQU 56, но теперь
CONST = 57 ; CONST можно переопределить явно или
CONST = CONST+1 ; через ее предыдущее определение
Директивы определения данных. Резервируют байты (B), слова (W), двойные слова (D), четверные слова (Q), десятибайтовые поля (T).
[имя] DBвыражение [,…]; байты
[имя] DWвыражение [,…]; слова
[имя] DDвыражение [,…]; двойные слова (4байта)
[имя] DQвыражение [,…]; четверные слова (8байт)
[имя] DTвыражение [,…]; десятибайтовые числа
BU_MAX DB 255 ;Максимальное значение байта без знака
BS_MAX DВ 127 ;Максимальное значение 6айта со знаком
BS_MIN DB -128 ;Минимальное значение байта со знаком
WU_MAX DW 65535 ;Максимальное значение слова без знака
WS_MAX DW 32767 ;Максимальное значение слова со знаком
WS_MIN DW —32768 ;Минимальное значение слова со знаком
В_ТАВLЕ DB 0,0,0,0,8,-13 ;Таблица байтов
DB 100,0,55,63,63,63
M_TABLE DW 1025,567,-30222,0,90,-129 ;Таблица слов
DW17,645,26534,367,78,-17
B_TABLE DB 4 DUP(0),8,-13,-100,0,55,3 DUP(63)
HIGH_TEMP DB ?
AVG_WEIGHT DW ?
MONTHLY_SALES DW 12DUP(?)
POLITE_MSG DB ‘Вы ввели слишком большое число’
DB ‘Оно не может быть обработано’
DB ‘Пожалуйста, введите данные заново’
RUDE_MSG DB ‘Попробуйте снова’
HEAR_NEAR DW HERE
HEAR_FAR DD HERE
Директивы определения сегмента и процедуры
имя_сег SEGMENT[выравнивание]
[комбинирование]
[‘класс’]
. . .
. . .
имя_сег ENDS
Комбинирование:
PUBLIC– можно объединять сегменты из разных модулей
STACK– для объединения всех стековых сегментов
MEMORY– обеспечивает наложение друг на друга всех таких сегментов
PRIVATE– сегмент ни с кем не объединяется (по умолчанию)
; Пример сегмента данных
DATASEG SEGMENT PARA PUBLIC ‘DATA’
A DB ?
B DB ?
SQUARES DB 1,4,9,16,25,36,49,64
DATASEG ENDS
;----------------------------------
; Пример сегмента команд
PROGCODE SEGMENT PARA PUBLIC ‘CODE’
. . .
. . .
MOV AX,BX
MOV CL,DH
MOV DI,CX
. . .
. . .
PROGCODE ENDS
;----------------------------------
; Пример сегмента стека
SEGSTACK SEGMENT STACK ‘STACK’
DB 128DUP(?)
SEGSTACK ENDS
имя GROUPсписок_имён_логических сегментов
Объединяет несколько логических сегментов в один физический
DGROUP GROUP PROGSEG,DATASEG
ASSUMEрегистр_сег:имя_сег[,…]
ASSUME регистр_сег:NOTHING[,…]
PROGCODE SEGMENT PARA PUBLIC ‘CODE’
ASSUME DS:DATASEG,CS:PROGSEG,SS:SEGSTACK
MOV AX,DATASEG ;установить DS на начало DATASEG
MOV DS,AX
. . .
. . .
MOV AX,BX
MOV CL,DH
MOV DI,CX
. . .
. . .
PROGCODE ENDS
имя PROC тип ; FAR или NEAR
. . .
. . .
RET; Инструкция выхода из процедуры
имя ENDP
CSEG SEGMENT PARA PUBLIC ‘CODE’
ASSUME CS:CSEG
CALLER PROC
. . .
CALL CALLEE ; Вызвать процедуру
. . .
RET
CALLER ENDP
;----------- Вызываемая процедура в этом же сегменте
CALLEE PROC NEAR
. . .
. . .
RET
CALLEE ENDP
CSEG ENDS
CSEG SEGMENT PARA PUBLIC ‘CODE’
ASSUME CS:CSEG
CALLER PROC
. . .
CALL CALLEE ; Вызвать процедуру
. . .
RET
CALLER ENDP
CSEG ENDS
;----------- Вызываемая процедура в другом сегменте
CSEG1 SEGMENT PARA PUBLIC ‘CODE’
CALLEE PROC NEAR
. . .
. . .
RET
CALLEE ENDP
CSEG1 ENDS
Директивы внешних ссылок.
PUBLIC идентификатор[,…]
EXTRNимя:тип[,…]
; В одном модуле
PUBLIC TOTAL
TOTAL DW 0
; В другом модуле
EXTRN TOTAL:DWORD
; Вызов процедуры в первом модуле
CSEG SEGMENT
ASSUME CS:CSEG
EXTRN CALLEE:FAR
CALLER PROC
. . .
CALL CALLEE,FAR ; Вызвать дальнюю процедуру
. . .
RET
CALLER ENDP
CSEG ENDS
;----------- Вызываемая процедура в другом модуле
CSEG1 SEGMENT
CALLEE PROC FAR
. . .
. . .
RET
CALLEE ENDP
CSEG1 ENDS
