

Язык ассемблера для процессоров
INTEL, 4-е издание
Кип Р. Ирвин
Глава 4: Пересылка данных,
адресация и арифметика
Слайды подготовил: Кип Р. Ирвин Редакция: С.Б. Мусин
(c) Pearson Education, 2002. All rights reserved. You may modify and copy this slide show for your personal use, or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed.

Обзор главы
•Команды пересылки данных
•Сложение и вычитание
•Операторы и директивы для работы с
данными
•Косвенная адресация
•Команды JMP и LOOP
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
2 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Команды пересылки данных
•Типы операндов
•Обозначение типов операндов
•Прямая адресация операндов в памяти
•Команда MOV
•Перемещение с расширением значения
•Команда XCHG
•Операнды с непосредственно заданным
значением
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
3 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Типы операндов
•Основные типы операндов:
•непосредственный (immediate)
•целочисленная константа (8, 16, 32 бит), содержится в команде
•регистровый (register)
•ссылка на данные, содержащиеся в регистре;
•в команде указывается номер регистра
•в памяти (memory)
•данные содержатся в памяти, местоположение определяется эффективным адресом
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
4 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Условное обозначение типов операндов
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
5 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Прямая адресация операндов в памяти
•задается смещение операнда в памяти
относительно базового сегмента
•используется для доступа к глобальным переменным
.data |
ассемблер автоматически заменяет имена на |
|
var1 BYTE 10h |
смещения и формирует полный адрес операнда |
|
|
||
.code |
mov al, [00010400] |
|
; AL = 10h |
||
mov al,var1 |
||
mov al,[var1] |
; AL = 10h |
альтернативная форма записи
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
6 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Команда MOV
•Копирует данные из источника в приемник.
Синтаксис: MOV приемник,источник
•Пересылка память-память запрещена
•Регистры CS, EIP, IP не могут быть приемниками
•Нельзя перемещать непосредственно заданное значение в сегментный регистр
.data
count BYTE 100 wVal WORD 2
.code
mov bl,count mov ax,wVal mov count,al
mov al,wVal |
; error |
mov ax,count |
; error |
mov eax,count |
; error |
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
7 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Задача
Найдите ошибки:
.data
bVal BYTE 100 bVal2 BYTE ?
wVal WORD 2 dVal DWORD 5
.code
mov ds,45 mov esi,wVal mov eip,dVal mov 25,bVal
mov bVal2,bVal
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
8 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Расширение значений без знака
Команда MOVZX перемещает значения без знака из меньших регистров и ячеек памяти в большие, обнуляя старшие биты
|
|
|
|
|
|
|
0 |
|
1 0 0 0 1 1 1 1 |
Source |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 0 0 0 0 0 0 0 |
1 0 0 0 1 1 1 1 |
Destination |
|
|
|
|
|
|
|
|
mov bl,10001111b |
|
movzx ax,bl |
; zero-extension |
Приемником может быть только регистр!
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
9 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Расширение со знаком
Команда MOVZX перемещает значения без знака из меньших регистров и ячеек памяти в большие, расширяя знаковый бит
|
|
|
|
|
|
|
|
|
|
|
|
|
1 0 0 0 1 1 1 1 |
Source |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 1 1 1 1 1 1 1 |
1 0 0 0 1 1 1 1 |
Destination |
|
|
|
mov bl,10001111b |
|
movsx ax,bl |
; sign extension |
Приемником может быть только регистр!
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
10 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|