1 / 17

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

Форматы машинных команд. Формат определяет правила кодирования машинных команд. 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. Общий формат двухоперандной команды.

amiel
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. d reg, r/m w Передача или операция w=0 w=1 0 000 0 Байт из регистра regв память или регистр r/m AL AX 001 0 1 Слово из регистра regв память или регистрr/m CL CX 1 010 0 Байт в регистр regиз памяти или регистра r/m DL DX 011 1 1 Слово в регистр regиз памяти или регистра r/m BL BX 100 AH SP 101 CH BP 110 DH SI 111 BH DI Таблица 1

  3. r/m Эффективный адрес способ адресации 00, disp = 0 – смещение отсутствует 000 EA=(BX)+(SI)+disp Базово-индексная 01, disp=disp L – используется 8-битовое смещение, которое расширяется со знаком до 16 бит; 10, disp=disp H – используется 16-битовое смещение; 001 EA=(BX)+(DI)+disp 11, регистровая адресация в соответствии с таблицей 1. 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

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

  5. sw Размер операнда X0 Один байт данных data L 01 Двабайта (word)data H, data L КОП s w modКОПr/m Disp L Disp H Data L Data H 11 Один байт данных, который расширяется со знаком до 16 бит Двухоперандная команда с непосредственным операндом MOV AX, Gamma MOV BL, 10000111b ADD CX, 0FFFEh

  6. Disp H Disp L КОП w mod КОП r/m Data H Data L 1100011 w mod 000 r/m 1011 w reg Data L Data H Формат однооперандной команды Стандартный и укороченный формат команд непосредственной передачи данных

  7. MOV AX, BX XOR BL, AL DEC SI MOV CH, 3Eh MOV AL, 10000000b CMP [SI], 0FFh MOV DX, offset TEXT ; переслать содержимое регистра BX в регистр AX. ; сложить по модулю два содержимое регистров BL и AL. ; увеличить на 1 содержимое регистра SI. ;загрузить регистр CH байтом 3Еh ;создать в AL маску с 1 в старшем бите ;сравнить содержимое ячейки памяти числом FFh ;переслать регистр DX смещение переменной TEXT Режимы адресации Способы определения адресов операндов в командах называются режимами адресации Регистровая адресация Непосредственная адресация

  8. MOV AX, GAMMA SUB TEMP, BL ADD AX, [DI] MOV [SI], BL CMP byte ptr [BX], 100d LEA SI, ARRAY MOV AL, [SI + 9] ADD [SI] 5, 0Fh MOV 8 [SI], AH ;загрузить в SI начальный адрес массива ARRAY. ;переслать девятый элемент массива в регистр AL. ;сложить пятый элемент массива с числом Fh. ;переслать содержимое AH в восьмой ;элемент массива ;сложить содержимое регистра АХ и ячейки памяти, ;адресуемой через регистр DI. ;переслать содержимое ВL в память ;по адресу, находящемуся в SI. ;сравнить содержимое ячейки памяти ;с адресом в ВХ с числом 100. ;переслать в регистр AX переменную GAMMA ;вычесть из переменной TEMP содержимое регистра BL Прямая адресация к памяти Косвенная регистровая адресация (базовая и индексная) Косвенная регистровая адресация со смещением (базовая и индексная со смещением) ARRAY DB 20 DUP (‘@’); создать массив из 20 символов

  9. MOV SI, 0 MOV AL, ARRAY [SI + 9] ADD ARRAY [SI] 5, 0Fh MOV ARRAY 8 [SI], AH ;основная программа PUSH DS PUSH ES PUSH SI CALL ROUTE ;подпрограмма ROUTE MOV BP, SP MOV AX, 2 [BP] MOV BX, 4 [BP] MOV CX, 6 [BP] ;сохранить в стеке содержимое трех ;регистров DS, ES, SI, через которые ;передаются параметры подпрограмме. ;вызов подпрограммы. ;загрузить в BP адрес входа в стек. ;извлечь из стека содержимое SI. ;извлечь из стека содержимое ES. ;извлечь из стека содержимое DS. ;загрузить в SI индекс начального элемента массива ;ARRAY. ;переслать девятый элемент массива в регистр AL. ;сложить пятый элемент массива с числом Fh. ;переслать содержимое AH в восьмой ;элемент массива

  10. MOV BX, 10 MOV SI, 4 MOV AL, MAS [BX] [SI] ;загрузить в ВХ число байт в строке. ;загрузить в SI индекс 5-гоэлемента второй строки. ;переслать 5-й элемент второй ;строки в AL. Базово-индексная адресация эффективный адрес ЕА вычисляется как сумма содержимого двух регистров (базового и индексного), указанных в команде. При этом могут использоваться следующие пары регистров: [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 ‘ЙЦУКЕНГШЩЗ’

  11. LEA BX, MAS MOV SI, 4 MOV AL, [BX+10] [SI] ;загрузить в ВХ начальный ;адрес массива ;загрузить в SI индекс 5-го ;элемента второй строки. ;переслать 5-й элемент второй ;строки в AL.

  12. Вычисление физического адреса памяти BX CS BP SS SI DS ES DI Смещение disp EA Физ. адрес SEG : EA – логический адрес ячеек памяти PA = SEG*16 + EA – физический адрес ячеек памяти

  13. Эффективный адрес Адресация BX+SI+disp BX+DI+disp BP+SI+disp BP+DI+disp SI+disp DI+disp BP+disp BX+disp Базово-индексная (со смещением)  Индексная (со смещением) Базовая (со смещением) Формирование эффективного адреса операнда

  14. Disp КОП 15 0 + IP Относительная адресация Относительная адресация JMP Start_1 ; перейти на метку Start_1

  15. EA EA DI SI КОП КОП 15 0 15 0 15 0 15 0 Адресация цепочек Неявная адресация CBW; преобразовать байт в аккумуляторе в слово CLC; сбросить флаг переноса CLI; сбросить флаг прерываний STC; установить флаг переноса

  16. IN AL,40h OUT 1Eh,AX MOV DX, 60h IN AX,DX OUT DX,AX ; ввести байт из порта 40h ; вывести слово в порт 1Eh ; загрузить в DX адрес порта ВВ ; ввод слова из порта с адресом (DX) ; вывод слова по адресу (DX) port КОП Прямая адресация портов ВВ 7 0 КОП 15 0 DX Косвенная адресация портов ВВ Адресация портов ввода-вывода

  17. Распределение адресного пространства ЭВМ 220 адресов – адресное пространство базового МП: 00000h … FFFFFh XMS –Extended Memory Specification HMA – High Memory Area

More Related