k-26-11-12_Ius10(Arx).ppt
- Количество слайдов: 46
1) Общ. синтаксис типовой ком-ды для МП 8086. 2) Возможные вар-ты размещения ее операндов.
Какие поля должны быть предусмотрены в маш. кодах команд
Типичный формат 1 -го байта в маш. коде команды
Роль поля “mod” во 2 -м байте
Коды в поле “reg” Коды в поле “r/m”
Сегм. регистры, используемые «по умолчанию» (при различных вариантах косвенно-регистровой адресации). • • Если в косвенно-регистровой адресации используются регистры [BX], [SI] или [DI], то - по умолчанию - принято, что эфф. адрес они указывают относительно начала сегмента данных. [SI] • • [DI] – требуется использовать с сегм. рег-ром DS , [BX] • • Если же используется регистр [BP], то - в сегменте стека: [BP] - с SS • • • [BP] [SI] – SS SS: [. . . ] [BP] [DI] – SS Также , всегда используются в паре: [SP] - с SS , т. е. (SS : SP), IP с CS , т. е. (CS : IP ) • • • т. е DS: [. * *. ] ПОЭТОМУ: В мнемокодах команд в описании операндов в ОП - обычно мы не указываем требуемый сегментный регистр явно (они определены по умолчанию).
«Префикс замены сегмента» , его роль • Но можно явно задавать требуемый сегментный регистр (когда надо вопреки соглашению по умолчанию) • • . Для этого, перед описанием операнда в мнемокоде команды на Ассемблере, надо явно написать в качестве приставки (префикса) - имя сегментного регистра и двоеточие. Seg R: [. . . ] , т. е. ES : [. . . ] SS : [. . . ] CS : [. . . ] DS : [. . . ] Примеры: a) без префикса: MOV AX, [BX] ; означает AX <= M (DS: BX) но, если с префиксом: MOV AX, ES: [BX]; то тогда AX <= M (ES: BX) • • б) • При трансляции команды с префиксом в машинный код, генерируется дополнительный байт перед обычным форматом команды. Этот байт называется байтом префикса замены сегмента • MOV [BP], BX MOV DS: [BP], BX ; M (SS: BP) <= BX (по умолч. SS) ; M (DS: BP) <= BX (DS вместо SS)
Байт префикса замены сегм. рег-ра в маш. коде Он задает требуемый сегм. регистр, т. е. к какому сегменту будет относиться ЕА операнда данной команды (с каким сегм. рег-ром должен комбинироваться этот ЕА). Этот байт добавляется ПЕРЕД маш. кодом соответствующей команды. (Т. е. перед ее первым байтом КОП)
. Пространство первичных кодов операций ( КОП 1) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ADD r/m, reg ADD w r/m, reg ADD d reg, r/m ADD d w reg, r/m ADD , imm ADD w AX, imm PUSH ES POP ES OR r/m, reg OR w r/m, reg OR d reg, r/m OR d w reg, r/m OR Al, _imm OR w AX, imm PUSH CS 1 ADC r/m, reg ADC w r/m, reg ADC d reg, r/m ADC d w reg, r/m ADC , imm ADC w AX, imm PUSH SS POP SS SBB r/m, reg SBB w r/m, reg SBB d reg, r/m SBB d w reg, r/m SBB , imm SBB w AX, imm PUSH DS POP DS 2 AND r/m, reg AND w r/m, reg AND d reg, r/m AND d w reg, r/m AND , imm AND w AX, imm SEGMENT ES DAA SUB r/m, reg SUB w r/m, reg SUB d reg, r/m SUB d w reg, r/m SUB , imm SUB w AX, imm SEGMENT CS DAS 3 XOR r/m, reg XOR w r/m, reg XOR d reg, r/m XOR d w reg, r/m XOR , imm XOR w AX, imm SEGMENT SS AAA CMP r/m, reg CMP w r/m, reg CMP d reg, r/m CMP d w reg, r/m CMP , imm CMP w AX, imm SEGMENT DS AAS 4 INC AX INC CX INC DX INC BX INC SP INC BP INC SI INC DI DEC AX DEC CX DEC DX DEC BX DEC SP DEC BP DEC SI DEC DI 5 PUSH AX PUSH CX PUSH DX PUSH BX PUSH SP PUSH BP PUSH SI PUSH DI POP AX POP CX POP DX POP BX POP SP POP BP POP SI POP DI 7 JO JNO JB / JNAE JNB / JAE JE / JZ JNE / JNZ JBE / JNA JNBE / JA JS JNS JP / JPE JNP / JPO JL / JNGE JNL / JGE JLE / JNG JNLE / JG 8 . . . w … sw TEST r/m, reg TEST w r/m, reg XCHG w r/m, reg MOV d reg, r/m MOV d w reg, r/m MOV r/m, seg LEA reg, r/m MOV seg, r/m . . . 9 XCHG AX, AX XCHG CX, AX XCHG DX, AX XCHG BX, AX XCHG SP, AX XCHG BP, AX XCHG SI, AX XCHG DI, AX CBW CWD CALL inter WAIT PUSHF POPF SAHF LAHF MOV w AX, rnem MOV mem, AL MOV w mem, AX MOVS w CMPS w TEST , imm TEST w AX, imm STOS w LODS w SCAS w mem MOV , imm MOV CL, imm MOV DL, imm MOV BL, imm MOV AH, imm MOV CH, imm MOV DH, imm MOV BH, imm MOV AX, imm MOV CX, imm MOV DX, imm MOV BX, imm MOV SP, imm MOV BP, imm MOV SI, imm MOV DI, imm RET+ POP intra RET intra LES reg, r/m LDS reg, r/m MOV r/m, imm MOV w r/m, imm RET+ POP inter RET inter INT type 3 INTO IRET …v …v w AAM AAD var IN w AX, var OUT var, AL OUT w var, AX CLD STD . . . …w 6 A MOV B , C D . . . E LOOPNZ / LOOPNE F LOCK …w LOOPZ / LOOPE JCXZ REPE / REPZ , ESC 00 - 07 (arithmetical coprocessor codes) port REP/REPN E / REPNZ IN XLAT IN w AX, port OUT port, AL OUT w port, AX CALL intra JMP inter JMP short HLT CMC . . . w CLC STC CLI STI IN ,
Пространство вторичных кодов операций (на месте поля “reg” - поле “КОП 2” ) Перви чный КОД операц ии 80 -81 83 000 001 Байт 2 ( биты 5: 3 ) 010 011 100 101 110 ADD r/m, imm 000 OR r/m, imm 001 ADC r/m, imm 010 SUB r/m, imm 011 001 ADC r/m, imm 010 ROR r/m 001 ADD r/m, imm 000 AND r/m, imm 100 SUB r/m, imm 101 SBB r/m, imm 011 100 SUB r/m, imm 101 RCL r/m 010 RCR r/m 011 SHL/S AL r/m 100 NOT r/m NEG r/m XOR r/m, imm 110 111 CMP r/m, imm 110 111 SHR r/m 101 110 SAR r/m 111 MUL r/m IMUL r/m DIV r/m IDIV r/m 111 POP r/m 000 С 0 -С 1 D 0 -D 3 F 6 -F 7 ROL r/m 000 TEST r/m, imm 000 FE FF 001 010 011 100 101 110 INC r/m 000 DEC r/m 001 010 011 100 101 110 INC w r/m DEC w r/m CALL intra CALL inter JMP intra JMP inter PUSH r/m 111
Система команд i 8086
Группа команд «Пересылки данных»
Примеры пересылок
Допустимые и запрещенные пересылки (в ком. MOV)
Действие ком-ды PUSH
Действие ком-ды XLAT
Пример с командой XLAT
Пересылки адреса
Действие ком-ды LDS
Пример с командой LDS (позволяет обратиться к данным, лежащим за пределами текущего сегмента данных)
Команды пересылок для п/сист. «Вв-Выв»
Примеры команд ввода-вывода
Сущ-т 2 формата маш. кода команд “IN”
2 формата ком-ды вывода(OUT)
Об Адр. Простр-ве ввода-вывода
Пересылки флагов
Группа ком. «Арифм. операции»
Команды вычитания
Схема выполнения команд умножения
Примеры ком-д умножения
Деление (div, idiv)
Схема выполнения команд деления
Примеры ком-д деления
«Знаковые» расширения
Команды условных переходов
Флаги после СМР (при разных соотнош. «Пр –Ист. » ) Сокращения для условий переходов
Множ-во мнемокодов команд условных переходов
Пример - задача с условн. переходами
Программа. (к задаче с усл. переходами )
k-26-11-12_Ius10(Arx).ppt