ПредишенСледващото

Един операнд. Позовавайки се на екипа, който определя уникален операнд-ТА, като екип INC. Обикновено тя се използва за нарастване на индекса или индексния регистър при изчисляването на преместванията и

- 16-битови аритметични операции в Ronan. С такива операнди команда приема много прост един байт форма, показана на фиг. 2.8. Той разполага с 3-битовото поле рег, дефинирането на осем 16-битови регистри. Coding в регистрите рег показано в първите две колони на таблица. 2.1.

Таблица 2.1 апарати кодиране

В най-общ вид, INC команда може да генерира съдържанието на прираста на всеки индекс или индекс Рон регистър (8 или 16 бита) и всеки байт или паметта дума. Тази форма е два байта дължина е показано на фиг. 2.10. Сега областта на КЗК е разделена на две части: седем бита от него са намерени в първия байт, а три - във втория. INC команда Кодът е под форма 000 1111111 w-битовото поле определя дължината на операнда: ако w = 0, операнд е 8 бита, а когато т = 1 - 16 бита. Mod поле показва дали операнда е в регистър или памет. Ако мод = 11, операнда се съдържа в регистър, а останалите три се отнасят до комбинации мод поле паметта на. Когато операнд - в област регистър R / m показва специален регистър; и ако операнд - в памет, същата област определя точно там, където се намира (съкращение R / m означава регистър / памет).

Таблица 2.3 база и индексни регистри, поле определя от г / т за операндите в паметта (мод ¹ 11)

Като пример, помислете командата е показано на фиг. 2.12. опкод поле съдържа 1111111 000 определя INC команда. Поле w = 1 показва дължина 16 бита операнд. Следователно поле мод = 01 и операнд съхранява в паметта; Освен това, в промяна командването на следващия байт трябва да се разшири до 16 с знаков бит: 0000 0000 0101 1100.

Невярно R / т = 100, така че компенсира в екипа трябва да обобщим съдържанието на регистъра SI (дори ако тя е равна на 1010 0000 1000 0110);

+ 1010 0000 1000 0110 (съдържание SI)

0000 0000 0101 1100 (изместване на командата)

1010 0000 1110 0010 (резултат)

+ 1111 0000 1111 0000 (сегмент)

1010 0000 1110 0010 (изместване в сегмента)


Операнд не трябва да бъде само в текущия сегмент на данните и стека. Това може да се прочете от всеки сегмент на командата, преди да влезе в байтове представката сегмент регистър (фиг. 2.13). Фиг. 2.14 показва същата команда като на фиг. 2.12, но сега операнда е в текущия слой.

Две операнди. Odnooperandnymi разгледани команди, за да включите командите, които имат двете операнди, например добавите. Ние вече заяви, че този отбор е на стойността на един операнд, това води до увеличаване на стойността на втория операнд и съхранява резултата на мястото на двата операнда. Ако и двата операнда да позволяват определяне на паметта ще бъде необходимо в областта на отбора и мод об / мин за всеки от тях. За да се съкрати продължителността на отборите, бе решено, че поне един от операндите трябва да бъде в регистър. След команда задължително поле и мод г / м за един операнд и друга област достатъчно рег (фиг. 2.16).

Поле w показва байта са операнди (W = 0) или думи (т = 1). също се очертава ново поле в командния г (приемник); ако D = 0, резултатът се съхранява в областта операнда определени и мод г / м, когато г - 1 - в операнд определен от поле рег. Операнд, при което резултатът се съхранява, се нарича приемник, а другият се нарича източник операнд.

Като пример, помислете командата ДОБАВИ показано на фиг. 2.17. Той има работа поле код 000000. w = 0 показва, че и двата операнда са байта. поле Reg определено операнд е регистър гл. Mod = поле 11 показва, че поле и мод г / м регистър се определя и поле R / T определя регистър BL. Област на г = 1 показва резултата от запис в операнд поле дефинирани рег, т.е. в регистър СН. Следователно инструкциите добавя съдържанието на регистъра BL (източник) за съдържанието на CH регистър (приемник), и поставя резултата в сърдечна недостатъчност.


Един пример на екипа с незабавен операнд е MOV инструкция (напред). Той често се използва за зареждане на константи в регистъра. Тук полето за незабавно операнд може да бъде определена рег, а екипът се превръща в проста форма, както е показано на фиг. 2.18. Поле w още операнд определя дължина 8 (т = 0) или 16 (т = 1) бита; В първия случай, незабавно операнд е един байт в екипа, а във втория - два байта. Например, на фиг. 2.19 показва команда, която прехвърля стойност 1111 0000 0000 1111 в регистър DI.


В малко по-сложни области приемник команда операнди определени и мод г / м поле вместо рег, така че допълнително байт се появява в командния (фиг. 2.20). Показано на фиг. 2.21 команда предава стойността 1111 0000 0000 1111 в думата, разположен в сегмента на данни компенсира от регистъра на DI.

Тъй като две операнд инструкция има само едно поле w, както операнди трябва да имат дължина от 8 или 16 бита. Често обаче непосредствени операнди са малки номера и не изискват 16-битов. Това е особено вярно за допълнение инструкция, изваждане и сравнение на цени, въпреки че операнди на логически команди, това обикновено не се поддържат. Вследствие на това е възможно да се намали размера на инструкция с непосредствени операнди, ако не се разпределят 16 бита за съхраняване на малки номера. Следователно, в някои команди (събиране, изваждане, и сравнение) Добавя бита и (S означава "разширение знак"). Той заема мястото на малко г, тъй като отборите с непосредствени операнди могат да бъдат само в една посока. Поле и е полезен само за 16-битови операнди (т = 1) и показва дали има в отбора, всички 16-битови незабавно операнд (S = 0) или само 8 бита (а = 1), за да се разшири със знака за 16 бита за да образуват 16-битов операнд а. Тази форма на командата е илюстрирано на фиг. 2.22. Съответен пример е показан на фиг. 2.23. Тук, съдържанието на думата в паметта, на стойност 0000 0000 0000 1111 и резултатът се поставят в една и съща дума. Думата съхранява в сегмента на данни, а денивелацията е взета от регистъра на DI. Имайте предвид, че в резултат на е малко, освен един байт.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!