Не удивлю наверно не кого, дав понятие переменной - это место в памяти которое имеет имя и тип. Создавая программу на ассемблере нам нужно будет определять наши данные. Данные обычно определяются в сегменте данных. TASM поддерживает ряд директив которые помогут нам выделить именованное место под переменные.
db - 1 байт dw - 2 байта dd - 4 байта.
Пока хватит, тем более что мы в ближайшее время будет работать с типом данных db. Итак, давайте попробуем определить байт в нашей программе.
MODEL SMALL STACK 256 DATASEG Data1 DB 31h ; выделить один байт с содержимым 31h CODESEG Start: mov ax,@data ; установка в ds адpеса mov ds,ax ; сегмента данных mov ax,OFFSET Data1 ; где находиться переменная Exit: mov ah,04Ch ; функция DOS выхода из программы mov al,0h ; код возврата int 21h ; Вызов DOS остановка программы End Start
А теперь собираем и смотрим в отладчике. Выполните первый команды инициализации регистра данных !!!.
Все в норме по смещению 0 от регистра данных находится наша переменная с содержимым 31h, что в таблице ASCII соответствует цифре 1. Так же эту переменную можно помещать в регистр вот так например:
Start: mov ax,@data ; установка в ds адpеса mov ds,ax ; сегмента данных mov ax,OFFSET Data1 ; где находиться переменная mov al,Data1 ; содержимое в регистр AX (AL) Exit:
И опять в отладчик смотреть.
Видите, все поместилось и команда MOV теперь имеет другой вид, в квадратных скобочках адрес откуда берется переменная. Можно и обратную операцию провести поместить из регистра в переменную:
Start: mov ax,@data ; установка в ds адpеса mov ds,ax ; сегмента данных mov ax,OFFSET Data1 ; где находиться переменная mov al,Data1 ; содержимое в регистр AX (AL) inc al ; увеличить на единицу mov Data1,al ; в память Exit:
В отладчике Вы увидите, что теперь в переменной код 32, что соответствует числу 2: