Mov es, ax
Mov ax, seg mas
Codeseg segment
Dataseg end
Mas dw 0
Dataseg segment
Jmp m1
Code
Mov si,2
Mas dw 48, 56, 67
……………………
mov ax, mas[SI] ;Пересылка слова 56 по адресу mas+(si) в регистр ax
v Оператор переопределения типа, ptr.
Тип может принимать значения:
байт (byte), word (слово), dword (двойное слово), qword (8 байт), tbyte (10 байт).
near и far – определяет близкий или дальний переход.
Форат оператора
<Тип> ptr <Выражение>
Пример.
var dd 0abcd1234h ; двойное слово в сегменте данных
mov al, byte ptr var+1 ;в регистр al загрузить байт (число cdh)
v Оператор переопределения сегмента (двоеточие).
Когда в команде адресации используется сегмент не по умолчанию, требуется записать в явном виде имя сегмента, в котором загружен сегментный адрес.
Фрагмент программы:
…….
ind db 5 ; поле данных в сегменте команд
m1:
mov al, cs:ind ;адрес начала сегмента кода в регистре cs
;в регистр al загрузить число 5.
v Оператор получения сегментной составляющей адреса - seg.
Оператор возвращает сегментный адрес для выражения в качестве которого может выступать: метка, переменная, имя сегмента, имя группы сегментов, некоторое символическое имя.
Пример:
mov ds, ax ;в ds загружается адрес начала сегмента данных
v Оператор получения смещения в сегменте памяти некоторого выражения – offset.
Смещение – это адрес операнда относительно начала сегмента.
Пример
.data ; начало сегмента данных
mas dw 5 ; в сегменте данных число 5
.code ; начало сегмента кода
mov ax, seg mas ; запись в ax начало сегмента данных
mov dx, offset mas ; в dx загружаем смещение
mov bx, es:[dx] ; загрузили в bx число 5
Типы данных, которые поддерживает ассемблер:
1) Байт (byte) – 8 разрядов, младший разряд справа
2) Слово (word) – 2 байта, 16 разрядов. Делится на 2 части: справа младший байт, слева – старший байт. Адресом слова в памяти является адрес младшего байта.
3) Двойное слово (dword). Состоит из младшего и старшего слов. Адресом является адрес младшего слова.
МП кроме разрядности поддерживает логическую интерпретацию типов:
a) Целый тип без знака
Байт: 0….255
b) Целый тип со знаком
Байт: -128….+127
Слово: -32768…+32768
c) Цепочка – непрерывный набор байтов, слов или двойных слов (максимальная длина до 4 Гбайт).
d) Битовое поле – непрерывная последовательность бит, в которой каждый бит является независимым и может рассматриваться как независимая переменная (максимальная длина 32 бита).
Ввод информации с клавиатуры и вывод ее на экран осуществляется в символьном виде. Кодирование этой информации производят согласно таблице. Каждый символ кодируется байтом.
При вводе чисел в программу необходимо преобразование кода символа в двоичный формат. При выводе результатов необходимо выполнить обратное преобразование (чисел в символьные коды).
![]() | ![]() | ![]() | ![]() | ![]() |
Символ Код ASCII Двоичное представление Разность
0 30h 0000 30h
: : : :
9 39h 1001 30h
Для преобразования в двоичный код достаточно вычесть из кода ASCII 30h (для чисел от 0 до 9)
А(а) 41h(61h) 1010 37h(57h)
: : : :
F(f) 46h(66h) 1111 37h(57h)
Программа должна опознать, в каких границах находится код ASCII данного числа и в зависимости от принятого решения, вычесть из кода ASCII либо 37h, либо 57h.