Форматы машинных команд

17
Форматы машинных команд Формат определяет правила кодирования машинных команд Общий формат двухоперандной команды MOV AX, BX SUB AL, AX MOV BL, BH КОП d w mod reg r/m 7 1 0 7 6 5 4 3 2 1 0 7 0 7 0 Disp L Disp H

Upload: amiel

Post on 21-Jan-2016

121 views

Category:

Documents


0 download

DESCRIPTION

Форматы машинных команд. Формат определяет правила кодирования машинных команд. mod reg r/m. КОП d w. 7 0. 7 1 0. 7 0. 7 6 5 4 3 2 1 0. Disp H. Disp L. Общий формат двухоперандной команды. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Форматы машинных команд

Форматы машинных команд

Формат определяет правила кодирования машинных команд

Общий формат двухоперандной команды

MOV AX, BX

SUB AL, AX

MOV BL, BH

КОП d w mod reg r/m7 1 0 7 6 5 4 3 2 1 0 7 0 7

0Disp L Disp H

Page 2: Форматы машинных команд

d w Передача или операция

0 0 Байт из регистра reg в память или регистр r/m

0 1 Слово из регистра reg в память или регистр r/m

1 0 Байт в регистр reg из памяти или регистра r/m

1 1 Слово в регистр reg из памяти или регистра r/m

reg, r/m w=0 w=1

000 AL AX

001 CL CX

010 DL DX

011 BL BX

100 AH SP

101 CH BP

110 DH SI

111 BH DI

Таблица 1

Page 3: Форматы машинных команд

mod 01, disp=disp L – используется 8-битовое смещение, которое

расширяется со знаком до 16 бит; 10, disp=disp H – используется 16-битовое смещение;

00, disp = 0 – смещение отсутствует

11, регистровая адресация в соответствии с таблицей 1.

r/m Эффективный адрес способ адресации

000 EA=(BX)+(SI)+disp Базово-индексная

001 EA=(BX)+(DI)+disp  

010 EA=(BP)+(SI)+disp  

011 EA=(BP)+(DI)+disp  

100 EA=(SI)+disp Индексная

101 EA=(DI)+disp  

110 EA=(BP)+disp Базовая

111 EA=(BX)+disp  

Page 4: Форматы машинных команд

Вычисление физического адреса операндов в памяти

Page 5: Форматы машинных команд

КОП s w mod КОП r/m Disp L Disp H Data L Data H

Двухоперандная команда с непосредственным операндом

MOV AX, Gamma

MOV BL, 10000111b

ADD CX, 0FFFEh

sw Размер операнда

X0 Один байт данных data L

01 Два байта (word)data H, data L

11 Один байт данных, который расширяется со знаком до 16 бит

Page 6: Форматы машинных команд

КОП w mod КОП r/m Disp L Disp H

Формат однооперандной команды

1100011 w mod 000 r/m Data L Data H

1011 w reg Data L Data H

Стандартный и укороченный формат команд непосредственной передачи данных

Page 7: Форматы машинных команд

Способы определения адресов операндов в командах называются режимами адресации

Режимы адресации

Регистровая адресация

MOV AX, BXXOR BL, ALDEC SI

; переслать содержимое регистра BX в регистр AX.; сложить по модулю два содержимое регистров BL и AL.; увеличить на 1 содержимое регистра SI.

Непосредственная адресация

MOV CH, 3EhMOV AL, 10000000bCMP [SI], 0FFh

;загрузить регистр CH байтом 3Еh;создать в AL маску с 1 в старшем бите;сравнить содержимое ячейки памяти числом FFh

MOV DX, offset TEXT ;переслать регистр DX смещение переменной TEXT

Page 8: Форматы машинных команд

Прямая адресация к памяти

MOV AX, GAMMASUB TEMP, BL

;переслать в регистр AX переменную GAMMA ;вычесть из переменной TEMP содержимое регистра BL

Косвенная регистровая адресация (базовая и индексная)

ADD AX, [DI] MOV [SI], BL CMP byte ptr [BX], 100d

;сложить содержимое регистра АХ и ячейки памяти, ;адресуемой через регистр DI.;переслать содержимое ВL в память ;по адресу, находящемуся в SI.;сравнить содержимое ячейки памяти ;с адресом в ВХ с числом 100.

Косвенная регистровая адресация со смещением (базовая и индексная со смещением)

ARRAY DB 20 DUP (‘@’); создать массив из 20 символов

LEA SI, ARRAYMOV AL, [SI + 9]ADD [SI] 5, 0FhMOV 8 [SI], AH

;загрузить в SI начальный адрес массива ARRAY.;переслать девятый элемент массива в регистр AL.;сложить пятый элемент массива с числом Fh.;переслать содержимое AH в восьмой ;элемент массива

Page 9: Форматы машинных команд

MOV SI, 0 MOV AL, ARRAY [SI + 9]ADD ARRAY [SI] 5, 0FhMOV ARRAY 8 [SI], AH

;загрузить в SI индекс начального элемента массива ;ARRAY.;переслать девятый элемент массива в регистр AL.;сложить пятый элемент массива с числом Fh.;переслать содержимое AH в восьмой ;элемент массива

;основная программаPUSH DSPUSH ESPUSH SICALL ROUTE;подпрограмма ROUTEMOV BP, SPMOV AX, 2 [BP]MOV BX, 4 [BP]MOV CX, 6 [BP]

 ;сохранить в стеке содержимое трех;регистров DS, ES, SI, через которые;передаются параметры подпрограмме.;вызов подпрограммы. ;загрузить в BP адрес входа в стек.;извлечь из стека содержимое SI.;извлечь из стека содержимое ES.;извлечь из стека содержимое DS. 

Page 10: Форматы машинных команд

Базово-индексная адресация

эффективный адрес ЕА вычисляется как сумма содержимого двух регистров (базового и индексного), указанных в команде.

При этом могут использоваться следующие пары регистров:[BX] [SI] – адрес вычисляется как DS: [BX] [SI];[BX] [DI] – адрес вычисляется как DS: [BX] [DI];[BP] [SI] – адрес вычисляется как SS: [BP] [SI];[BP] [DI] – адрес вычисляется как SS: [BP] [DI].

Базово-индексная адресация со смещением

эффективный адрес ЕА вычисляется как сумма содержимого двух регистров (базового и индексного) и смещения, указанного в команде

Пусть в сегменте данных создан массив из 20 символов (по 10 в строке):MAS DB ‘QWERTYUIOP’ DB ‘ЙЦУКЕНГШЩЗ’

MOV BX, 10 MOV SI, 4 MOV AL, MAS [BX] [SI]

;загрузить в ВХ число байт в строке.

;загрузить в SI индекс 5-го элемента второй строки.

;переслать 5-й элемент второй ;строки в AL.

Page 11: Форматы машинных команд

LEA BX, MAS MOV SI, 4 MOV AL, [BX+10] [SI]

;загрузить в ВХ начальный ;адрес массива;загрузить в SI индекс 5-го;элемента второй строки.;переслать 5-й элемент второй ;строки в AL.

Page 12: Форматы машинных команд

BX

BP

SI

DI

Смещение disp

EA

CS

SS

DS

ES

Физ. адрес

Вычисление физического адреса памяти

SEG : EA – логический адрес ячеек памяти

PA = SEG*16 + EA – физический адрес ячеек памяти

Page 13: Форматы машинных команд

Эффективный адрес

Адресация

BX+SI+dispBX+DI+dispBP+SI+dispBP+DI+disp SI+dispDI+disp BP+dispBX+disp

Базово-индексная (со смещением)

  Индексная  (со смещением)

Базовая (со смещением)

Формирование эффективного адреса операнда

Page 14: Форматы машинных команд

Относительная адресация

КОП Disp

IP +

Относительная адресация

15 0

JMP Start_1 ; перейти на метку Start_1

Page 15: Форматы машинных команд

Неявная адресация

CBW; преобразовать байт в аккумуляторе в слово CLC; сбросить флаг переноса CLI; сбросить флаг прерываний STC; установить флаг переноса

КОП КОП

DI EA

SI EA15 0 15 0

15 0 15 0

Адресация цепочек

Page 16: Форматы машинных команд

Адресация портов ввода-вывода

КОП port

Прямая адресация портов ВВ

7 0 КОП

DX 15 0

Косвенная адресация портов ВВ

IN AL,40h OUT 1Eh,AX

; ввести байт из порта 40h; вывести слово в порт 1Eh

MOV DX, 60h IN AX,DX OUT DX,AX

; загрузить в DX адрес порта ВВ; ввод слова из порта с адресом (DX); вывод слова по адресу (DX)

Page 17: Форматы машинных команд

Распределение адресного пространства ЭВМ

XMS –Extended Memory Specification

HMA – High Memory Area

220 адресов – адресное пространство базового МП: 00000h … FFFFFh