Скачиваний:
94
Добавлен:
15.06.2014
Размер:
443.64 Кб
Скачать

Язык ассемблера для процессоров

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.

 

 

Соседние файлы в папке lec_4