Машинная команда состоит из нескольких байт, содержащих поле кода операции и поля операндов. Количество операндов может быть равно 0, 1 или 2. Команда может содержать также префикс, модифицирующий её действие. Архитектура микропроцессора не позволяет манипулировать с двумя операндами, находящимися в памяти. Поскольку в команде может участвовать не более одного операнда из памяти, то команда, имеющая два операнда, адресует их одним из имеющихся способов:
· регистр – регистр;
· регистр – память;
· память – регистр;
· число – регистр;
· число – память.
Рассмотрим команду пересылки
mov операнд1, операнд2
копирующей содержимое операнда2 в операнд1. Например, команда
mov cx, 19
записывает число 19 в регистр CX.
Операционная система имеет резидентную часть, содержащую сервисные подпрограммы, адреса которых записаны в вектора прерываний. Эти подпрограммы вызываются с помощью команды int число
Эта команда имеет один операнд и называется программным прерыванием. Операндом является число, лежащее в пределах от 0 до 255. Это число является номером сервисной подпрограммы. В тексте программы оно записывается обычно в 16-ричном виде.
Например,
int 21h
вызывает обслуживающую подпрограмму операционной системы MS DOS, имеющую десятичный номер 33. Эта обслуживающая подпрограмма может выполнять различные функции. Номер функции задается при вызове этой подпрограммы в регистре AH (старшем байте аккумулятора AX). В частности, если AH = 4ch, то команда int 21h завершает выполнение программы и возвращает управление операционной системе. Вывод строки символов, относительный адрес которой (смещение относительно начала сегмента) записан в регистр DX, производится с помощью функции 9 прерывания 21h. Таким образом, если в программе определить строку как заканчивающуюся символом ‘$’ последовательность символов
mes db ‘Hello, world’, ‘$’
то вывод этой строки на экран осуществляется с помощью команд:
mov dx, OFFSET mes
mov ah, 9
int 21h
Здесь OFFSET mes обозначает относительный адрес строки, который, согласно определению данной сервисной подпрограммы, должен быть записан в регистр DX.