Язык ASSEMBLER Команды пересылки данных Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.

Презентация:



Advertisements
Похожие презентации
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
Advertisements

Директивы сегментации. Упрощенные директивы сегментации. Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
Intel архитектура IA16 Основа большинства современных компьютеров.
Организация циклов в Ассемблере. Цикл – это многократно повторяющаяся последовательность операторов.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 2 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Адресация Адресация Уточним понятие "адресация". Адресация (по Э. Таненбауму) – процесс определения местоположения операндов команды МП (их адреса). Адрес.
Архитектура ЭВМ Практика 2. Основы ассемблера..
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 3 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Определение констант для размещения их компилятором в составе инструкций языка Определение числовых констант: имя = значение PI= V_size = 5 M_size.
Уровни организации ЭВМ. Машинный уровень Лекция 5.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Учебный курс Принципы построения и функционирования ЭВМ Лекция 10 Типы адресации. Стеки. Процессоры. ОЗУ. профессор ГУ-ВШЭ, доктор технических наук Геннадий.
Программирование на языке ассемблер (Assembler)
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 1 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Микропроцессоры и микропроцессорные системы. 1. Пересылка данных MOV приемник, источник- Пересылка данных Базовая команда пересылки данных. Копирует содержимое.
Циклы в языке Ассемблер.. Цикл со счетчиком Цикл со счетчиком можно организовать с помощью конструкций IF и GOTO. В нашем примере тело цикла должно повторяться.
Структурная схема 8-разрядного микропроцессора регистр флагов F ДШК РК АЛУ ВРВА А М SP IP СИД БА БД устройство управления РОН A15-A0.
Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 7 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
1 Лекция 2 Система команд и примеры программ для МП 8086 Лектор: Люличева И.А.
Транксрипт:

Язык ASSEMBLER Команды пересылки данных Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.

Команды пересылки данных общего назначения mov, mov, xchg, xchg,

mov – основная команда пересылки данных Схема команды:Схема команды: mov приемник, источник mov приемник, источник Назначение:Назначение: пересылка данных между регистрами или регистрами и памятью. Алгоритм работы:Алгоритм работы: копирование второго операнда в первый операнд. Состояние флагов после выполнения команды:Состояние флагов после выполнения команды: выполнение команды не влияет на флаги

ПРИМЕРЫ Per1 dw 100; 0000 – адрес Per1 Per2 dw 200; 0002 – адрес Per2 Per3 dd 10257h; 0004 – адрес Per3 mov cx, Per1 cx =64 16 mov bx, offset Per1 bx mov bx, offset Per2 bx mov ax, bx ax bx

ПРИМЕРЫ Per1 dw 100; 0000 – адрес Per1 Per2 dw 200; 0002 – адрес Per2 Per3 dd 10257h; 0004 – адрес Per3 mov cx, Per2 cx =c8 16 mov ch, 20h cx ch cl ch cl 00 c8 20 c8

ПРИМЕРЫ Per1 dw 100; 0000 – адрес Per1 Per2 dw 200; 0002 – адрес Per2 Per3 dd 10257h; 0004 – адрес Per3 mov ax, offset Per2 ax mov al,5 ax ah al mov ah,10+15 ax =19 16 mov ax, -1 ax-1 = FFFF FF

ПРИМЕРЫ ОШИБОК Per1 dw 100; 0000 – адрес Per1 Per2 dw 200; 0002 – адрес Per2 Per3 dd 10257h; 0004 – адрес Per3 mov dh, Per1 - constant too large mov dx, Per1 mov dx, Per1 mov dh, 1254h - constant too large mov dx, 1254h mov dx, 1254h mov ah, Fh - Undefined symbol Fh - идентификатор с точки зрения транслятора Fh - идентификатор с точки зрения транслятора mov ah, OFh mov ah, OFh

Особенности применения команды mov 1.нельзя осуществить пересылку из одной области памяти в другую mov Per1, Per2 illegal memory reference need register in expression нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения mov ax, Per2 mov Per1, ax

Фрагмент программы masm model small.data x db 5 y db ?.codestart:... mov al,x mov al,x mov y,al mov y,al end start

Особенности применения команды mov 2. нельзя загрузить в сегментный регистр значение непосредственно из памяти mov ds, Perem для выполнения такой загрузки нужно использовать промежуточный объект. для выполнения такой загрузки нужно использовать промежуточный объект. Это может быть регистр общего назначения или стек mov ax, Perem mov ds, ax mov ds, ax

Стандартное начало программы masmmasm Model smallModel small.stack100h.stack100h.data.data.code.code start:start: - переменная - переменная movds,axmovds,ax movax,4c00h ; стандартный выход - ah=00hmovax,4c00h ; стандартный выход - ah=00h int21hint21h endstartendstart

Особенности применения команды mov 3. нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. (в системе команд нет соответствующей операции) mov es, ds использовать в качестве промежуточных все те же регистры общего назначения использовать в качестве промежуточных все те же регистры общего назначения mov ax, ds mov ax, ds mov es, ax mov es, ax

Особенности применения команды mov 4. нельзя использовать сегментный регистр cs в качестве операнда назначения. mov сs, ax mov сs, ax mov cs, 100 Пара cs:ip всегда содержит адрес команды, которая должна выполняться следующей. изменение командой mov содержимого регистра cs фактически означало бы операцию перехода, а не пересылки, что недопустимо. изменение командой mov содержимого регистра cs фактически означало бы операцию перехода, а не пересылки, что недопустимо.

Особенности применения команды mov Совет желательно использовать в качестве одного из операндов регистр al/ax/eax в этом случае TASM генерирует более быструю форму команды mov mov al,5 mov al,5 mov bl,al mov bl,al

Команда XCHG (eXCHanGe) для двунаправленной пересылки данныхдля двунаправленной пересылки данных xchg ax, bx xchg ax, bx обменять содержимое регистров ax и bx обменять содержимое регистров ax и bx можно, конечно,можно, конечно, mov dx, ax mov ax, bx mov bx, dx но операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchgно операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchg

Команда XCHG !! Операнды должны иметь один тип!! Операнды должны иметь один тип xchg ax, bl xchg ax, bl !! Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти!! Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти xchg Per1, Per2 xchg Per1, Per2

Пример ;поменять порядок следования байт в слове ch1 label byte dw 0f85ch[ch1]=5c, [chl+1]=f8 dw 0f85ch[ch1]=5c, [chl+1]=f8... mov al,ch1al = 5c mov al,ch1al = 5c xchg ch1+1,alal = f8, [chl+1]=5c xchg ch1+1,alal = f8, [chl+1]=5c mov ch1,al [ch1]=f8 mov ch1,al [ch1]=f8 5c f 8 f 8 5 c