ZX Spectrum
Game

Machine Code Test Tool

Oxford Computer Publishing (Великобритания),

Автор:

Жанр: Программирование: Asm


Доступные версии

 Неофициальное издание
Играть!
 Оригинальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Информация

СТАНОК КОД TEST

Репетитор и программы Debug

ZX Spectrum 16k & 48k издание

F O Ainley

СТАНОК КОД TEST

для 16k & 48k Spectrum

Издание Два

ВВЕДЕНИЕ

Добро пожаловать в этом введении в машинный код. Я подготовил этот текст

быть использованы в сочетании с программой испытаний инструмента Машинный код (здесь и далее Сокращенное и называют MCTT) для того, чтобы дать вам практические примеры и “практический” опыт OT помощью машинного кода. Использование MCTT вы можете вводить и тестировать свои собственные программы в коде машины, а также изучить ZX СПЕКТР ROM и как ваши основные программы хранятся в оперативной памяти. Перед началом читать эту книгу, я настоятельно рекомендую вашего чтения главы 24 и 26 Вашего Sinclair ZX Spectrum Basic Programming книги под названием “Память” и “Использование машинного кода”, и Приложение E того же Книга под названием “двоичном и шестнадцатеричном”.

Это не было моим намерением написать полный трактат о Zilog Z80 ( Микропроцессор используется в ZX SPECTRUM), но, если после завершения упражнения в этой книге, вы хотите углубиться в тему, я могу рекомендую две книги, которые я нашел особенно полезно. Они:

Справочник Инструкция Z80 Понимание СПЕКТР

Nat Уодсуорт доктор Ян Логан OCP Box 99 Oxford Melbourne House Publishers # 6.00 Подать

ЗАГРУЗКА

Если у вас есть 16k ZX Spectrum тип нагрузки “mctt16” ENTER или Если у вас есть 48k ZX Spectrum тип нагрузки “mctt48” ENTER

и загрузить программу в обычном порядке. Существует версия, 16k и 48k версии программы на каждой стороне кассеты. На стороне 1 16k Версия следуют версии 48k и на стороне 2 версия 48k является с последующим версии 16k. Когда программа загружается свое название будет появляются в течение короткого периода, на экране будет пустым в течение короткого периода, то появится нормальный курсор K или Синклер (с) знак.

Пожалуйста, обратите внимание, что 16k программа не будет загружаться на 48k Spectrum или наоборот. Если Появляется “mctt 16” первый на 16k Машина эта будет успешно сработал. Если “Mctt 16” появляется первая и у вас есть 48k машина, перевернуть кассету, перемотка и перезагрузите который вступит 48к программы Первый.

Для знакогенератора: типа LOAD “УДГ” ENTER и программа будет запустится автоматически.

Чтобы использовать тип MCTT:

1 LET A = USR 30592 ENTER если у вас есть 16k ZX Spectrum или 1 LET A = USR 63360 ENTER если у вас есть 48k ZX Spectrum

Отныне всякий раз, когда вы хотите запустить MCTT только тип:

RUN ENTER

и MCTT>появится курсор в верхнем левом углу

Ваш Т.В. экран.

Полный список MCTT команды дается в Приложении.

Важно помнить ПРИ ИСПОЛЬЗОВАНИИ MCTT в том, что МАШИНКЕ ENTER AT

В ЛЮБОЕ ВРЕМЯ вернет вас в командный режим. Таким образом, если вы допустили ошибку, набрав DELETE не будет иметь никакого эффекта, и ваш единственный вариант, это ввести ENTER.

Начну с краткого объяснения шестнадцатеричную систему исчисления, которая

объясняет, как информация MCTT отображает содержащийся в регистры и память компьютера.

СИСТЕМА шестнадцатеричное число

Наша система натуральное число является десятичной, т.е.. в зависимости от количества 10, потому

физическое оборудование, с которым мы были наделены состоит из 10 пальцы. Это наше оборудование. В этой системе 1 персонаж может представлять любой один из 10 штатов, которые мы называем 0, 1, … или 9.

Натуральное число система цифрового компьютера основана на 2 потому, что его

Аппаратная часть состоит из ряда электронных ключей, которые могут только регистрировать 1 из 2 государств, которые мы называем 0 или 1. Потому что это было бы очень неудобно для нас, людей, для представления значений с использованием только 0 и 1 мы используем шестнадцатиричную система, которая имеет 16 в качестве своей базы, которая является 2 в степени 4, то есть 2x2x2x2.

Мы, естественно, рассчитывать в шестнадцатеричной системе, если у нас было 16 пальцев

вместо 10. В этом случае, конечно, мы должны были бы 6 дополнительных символов в представляют 6 дополнительных пальцев. Чтобы достичь этого,-F используются в шестнадцатеричное система представлять 10-15.

Теперь у нас есть система счисления, которая основана на 16, а не 10. Представлять

любое число от 0 до 15, мы должны использовать только один символ: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F. Но как насчет числа, большие, чем 15?

Система работает точно так же, как и в десятичной системе: с 2 десятичной символы можно представить все 1 100 (10×10) различные состояния (00-99); с 3 десятичных знаков любых 1 из 1000 (10x10x10) различных государств (000-999) и так далее, до бесконечности.

С 2 шестнадцатеричных символов, мы можем представить любое 1 из 256 (16×16) различные состояния (00-FF); с 3 шестнадцатеричных символов любой 1 из 4096 (16x16x16) различные состояния (000-FFF); с 4 шестнадцатеричных символа любые 1 65536 (16x16x16x16) различных государств (0000-FFFF) и так далее, до бесконечности.

MCTT содержит команду (D), чтобы преобразовать любой десятичного числа в диапазоне

00000-65535, в шестнадцатеричный эквивалент, и другая команда (H), чтобы выполняют обратное преобразование, то есть. любое шестнадцатеричное число в диапазоне 0000-FFFF его десятичный эквивалент.

Давайте посмотрим, как это работает путем преобразования десятичного числа в шестнадцатеричное

эквивалентны. Мы начнем с выбора десятичное значение 200 (это значение имеет особого значения, но не только как пример).

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| D00200 | | | | | D00200 = H00C8 | | C8 является шестнадцатеричное | | | Эквивалент десятичной | | | 200 |

Теперь давайте преобразовать шестнадцатеричное число в десятичной эквиваленте. В этот

пример мы выберем шестнадцатеричное значение 1000.

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| H1000 | | | | | H1000 = D04096 | | 4096 является десятичной | | | Эквивалент шестнадцатеричной | | | 1000 |

Теперь вы должны экспериментировать с этими 2 команды для того, чтобы достичь лучшего

понимание системы шестнадцатеричное число. Одно предупреждение: если вы введите (используя команду D) десятичное значение превышает 65535, что является вне диапазона преобразования команды, то слова “= переполнение” будет появляются на экране Т.В. – попробовать и посмотреть.

Отныне мы будем следить за каждым шестнадцатеричное значение с “ч”, чтобы отличить

их от десятичных значений.

Приложение вашей Sinclair ZX Spectrum Basic Programming книги содержит Первые 256 десятичных коды и соответствующие им шестнадцатеричные значения.

КАК работает компьютер.

Чтобы понять, что машинный код, необходимо иметь некоторое представление о том,

что такое “машина”, то есть компьютер,. Хотя мы склонны думать ни о чем связано с компьютерами, как осложняется из-за часто сложный характер задач, большинство компьютеров выполняют, нам повезло в что, концептуально, компьютер легко понять.

Мы можем понять эту концепцию легче, если мы отделяем КАК компьютер

работает от того, что он делает.

Мы можем понять, как работает компьютер, взяв всего 3 элементов.

1. блок памяти

Блок памяти делится на блоки, называемые байтами. Каждый байт (блок) имеет 2 атрибуты: а) каждый байт состоит из 8 вкл / выкл переключателей, называется BITS, и может содержит ни 1 из 256 (2 в степени 8) кодов (00-FFh); б) каждый байт имеет свой номером место, которое называется его АДРЕС.

Адреса байт начинаются с 0 и подняться последовательно 1 все крупнейшей адрес разрешается конкретного компьютера может быть. Для Z80 это 65535 (FFFFh) и для большого IBM машине, возможно, 16777215 (FFFFFFh).

2. Программный счетчик

Это просто объем памяти в компьютере (блок памяти описанный выше, внешним по отношению к компьютеру, хотя, конечно, связан с это), называется регистр, который содержит адрес одного из мест описано выше. Когда СПЕКТР ZX включен счетчик команд содержит 0. Все регистры 1 или 2 байта. Счетчик программа имеет длину 2 байта, достаточно, чтобы содержать адрес любого из ZX 65536 (0-65535) ячеек памяти спектра в.

3. Устройство исполнение

Это часть компьютера, которая выполняет инструкции. Инструкции изменить регистры и ячейки памяти в очень четко определенных способов, которые мы Обсудим позже. Каждый компьютер имеет свой собственный очень конкретный набор инструкции, которые он будет выполнять.

Теперь, когда мы описали три элементы мы можем видеть, как они работают вместе:

1. Счетчик программа содержит адрес памяти. Содержимое байта

указывается этому адресу (который должен быть код инструкции, которая также называется код операции) выбираются на исполнительное устройство.

2. Длина инструкцией просто извлечена (инструкции могут быть 1, 2, 3 или 4 байта в длину) добавляется к счетчика команд, тем самым формируя адрес следующей инструкции для выполнения.

3. Инструкция выполняется.

Выше цикл инструкций повторяется до бесконечности, пока компьютер

выключен. Это все компьютер когда-либо делает, и на самом деле власть Компьютер поставляется с его способностью повторить этот выборки / выполнить цикл в миллионы раз в секунду.

Один очевидный момент, который может возникнуть из приведенного выше описания является “что

происходит, когда программный счетчик достигает конца памяти? “. Ответ является то, что он никогда не должен допускать, чтобы. Это достигается за счет создания одного из Инструкция, которая выполняется с помощью блока “программы изменения исполнения Счетчик “инструкция. Это эффективно” филиал “или” перейти “инструкция.

ЧТО компьютер делать?

Мы уже говорили, что инструкции изменять регистры и ячейки памяти,

и в основном это все, что они делают. Мы уже описывали один зарегистрируйтесь, счетчик команд, и ниже представлена ​​схема полного внутреннего набор регистров в Z80.

. — . —

| | F | | ‘| F’ | | B | C | | B ‘| C’ | | D | E | | D ‘| E’ | | Н | L | | Н ‘| L’ | . — . — | Я X | | Я Y | | S P | | P C | . — | R | I | . —

Чтобы увидеть, как MCTT отображает эти регистры:

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| R | | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = хххх | | | Я = хх R = хх | | |>

Пожалуйста, обратите внимание, что я использовал “х” выше, и в этой книге, для обозначения

характер которого неизвестна и / или не имеет отношения к нашей цели. Тем не менее, Впервые MCTT вводится информация, содержащаяся во всех этих Регистры “0”, потому что это отображение информации, содержащейся в регистры в данный момент, что машинный код рутина нашей собственной решений была прервана, и мы еще не написали ни такие процедуры – но мы скоро будет.

Некоторые регистры длиной 2 байта, всегда содержат адреса памяти, а может

можно использовать только в 2 байта куски. Это в IX, IY, SP и регистры ПК (Регистр PC является программа счетчик я уже упоминал).

BC, DE, и HL пары регистров можно использовать в 1 или 2 байта

Величины, как показано в примерах ниже. Таким образом, например, до н.э. регистр пара можно получить как до нашей эры, B или C.

Регистр, хотя в паре с регистром F, в основном используется на его

самостоятельно. Регистр F могут быть использованы только косвенно, как мы увидим позже. ( Информация, содержащаяся в дисплее регистра против линий, начиная “FLAG” и “BITS” на самом деле чисто перевод информации содержащиеся в реестре F, который мы также будем использовать позже).

R и я регистры специального назначения и не представляют интереса для

большинство программистов.

Наконец, есть дубликат набор пар AF, BC, DE, и HL регистра,

(Перечислены на дисплее регистра под “альтернативную набор регистров”). Использование пара HL регистр в этом альтернативном наборе и регистра IY не Рекомендуется в качестве программы управления ZX Spectrum, который содержится в ROM и который контролирует многие важные операции на компьютере, использует их регистрирует в качестве временного хранилища.

Чтобы в полной мере изучить набор команд из Z80, книга с подробным

выполнение каждой инструкции необходимо, что выходит за рамки это общее введение. Тем не менее, теперь мы можем изучить работу ряд общих инструкций, чтобы получить широкое понимание микропроцессор.

ЗАГРУЗКА пару регистров из памяти

Теперь мы введите команду машинного кода в память на месте 6000h и затем выполнить его. Инструкция является “загрузить пару BC зарегистрироваться в 2 Значение байта сразу после операции (распоряжение) код “. В этот случай мы будем выбирать значение 1122h.

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| A6000 | | | | MCTT (Alter) | | | Команда | | | | 6000 хх>| 01 | код операции | | | | 6000 xx 01 | | | 6001 хх>| 22 | значение идти в C | | | | 6001 xx 22 | | | 6002 хх>| 11 | значение идти в B | | | | 6002 xx 11 | | | 6003 хх>| ENTER | | | | |>| B6003 | | | | MCTT B (точки останова) | | | Команда | | | | В 6003? >| X | | | | |? B 6003 X | G6000 | |>| | MCTT G (Goto) | | | Команда | | | | G 6000? >| X | | | | | ПЕРЕРЫВ НА 6003 | | Наша команда имеет |>| | Настоящее время выполняется | | R | | | | MCTT R (Регистрация | | | Дисплей команда) | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = хххх BC = 1122 ДЕ = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = 6003 | | | Я = хх R = хх | | |>

В этот момент я хотел бы объяснить, что мы только что сделали. Использование A

Команда (Alter) MCTT мы вошли в инструкцию в памяти. Использование B (Точка останова) команда MCTT мы вставили команду, чтобы перейти к MCTT когда была достигнута адрес 6003h, т.е.. сразу после нашего LD BC, 1122h Инструкция была выполнена. Команда G (Goto) MCTT начато выполнение что инструкция.

Последняя команда, R, отображается все регистры Z80 после нашего

Инструкция была выполнена. Как вы можете видеть, эти регистры сейчас содержат различные значения. Эти значения представляют содержимое регистров, когда программный счетчик достиг адрес 6003h.

С дисплея регистра мы видим, что до нашей эры пару регистров теперь содержит

значение 1122h. Мы только что написал свою программу первым машинный код!

* Перечень этих инструкций или кодов операций приведен в Приложении А

Ваш Sinclair ZX Spectrum Basic Программирование книга. Например, в данном случае, В столбце “HEX”, вы найдете “01”. Кроме того, в столбце “Z80 Assembler” вы найдете “LD BC, НН”, которая является инструкция мы как раз собирался выполнить.

Загрузка одного ЗАРЕГИСТРИРОВАТЬСЯ из памяти

Есть также указания на изменения отдельных пунктов. Для демонстрации

это мы войдем и выполнить команду “загрузить в регистр B с 1 Значение байта сразу после кода операции “. В этом случае мы будем выбрать значение 33H.

| Вы печатаете | Комментарий | ZX DISPLAYS

| | | | A6000 | | | | | 6000 хх>| 06 | код операции | | | | 6000 xx 06 | | | 6001 хх>| 33 | Значение идти в B | | | | 6001 xx 33 | | | 6002 хх>| ENTER | | | | |>| B6002 | | | | | В 6002? >| X | | | | |? B 6002 X | | |>| G6000 | | | | | G 6000? >| X | | | | | ПЕРЕРЫВ НА 6002 | | |>| R | | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = хххх BC = 3322 ДЕ = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = 6002 | | | Я = хх R = хх | | |>

С дисплея регистра мы можем видеть, что B регистр (помню, мы

только изменяя непосредственно регистры в главном регистре Набор) теперь содержит значение 33h в то время как C реестр сохраняет значение 22h, которое мы загружалась в это с нашей LD BC, инструкции 1122h.

Добавьте одну пару регистров ДРУГОМУ

Регистровой паре

Z80 имеет различные команды для выполнения сложения и вычитания, но

никто не выполнять умножение или деление или другие математические функции. Если вы хотите сделать что-либо, кроме сложения или вычитания в машине Код Боюсь, вы просто должны написать программу, чтобы сделать это самостоятельно.

Чтобы продемонстрировать дополнение мы загрузить в регистр пары DE со значением,

загрузить пару HL регистра со значением, и добавить пару регистров DE, чтобы HL зарегистрируйтесь пару, оставив результат в HL. В этом случае мы будем выбирать значения 1028h для HL и 2002h для DE

LD HL, 1028h поставить 1028h в HL; LD DE, 2002h поставить 2002h в DE; ADD HL, де добавить DE для HL

Важно иметь в виду, что это шестнадцатеричное, не десятичную,

арифметика.

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| A6000 | | | | | 6000 хх>| 21 | код операции | | | LD HL, NN | | | | 6000 xx 21 | | | 6001 хх>| 28 | значение, чтобы войти в L | | | | 6001 xx 28 | | | 6002 хх>| 10 | значение пойти в H | | | | 6002 xx 10 | | | 6003 хх>| 11 | код операции | | | LD DE, Н. Н. | | | | 6003 xx 11 | | | 6004 хх>| 02 | значение пойти в Е | | | | 6004 xx 02 | | | 6005 хх>| 20 | значение идти в D | | | | 6005 xx 20 | | | 6006 хх>| 19 | код операции | | | ADD HL, DE | | | | 6006 xx 19 | | | 6007 хх>| ENTER | | | | |>| B6007 | | | | | В 6007? >| X | | | | |? B 6007 X | | |>| G6000 | | | | | G 6000? >| X | | | | | ПЕРЕРЫВ НА 6007 | | |>| R | | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = хххх BC = хххх DE = 2002 HL = 302A | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = 6007 | | | Я = хх R = хх | | |>

С дисплея регистра мы видим, что DE теперь содержит значение 2002h мы загружены в него, в то время как HL теперь содержит 302Ah, которая является результатом шестнадцатеричное добавление 2002h и 1028h.

Сравните и ФИЛИАЛ

Теперь мы подошли к очень важному набора инструкций – сравнить и филиал

инструкции. Для того, чтобы иметь возможность принимать решения на компьютере должно быть механизм определения, если определенные условия произошли и как общаться тот факт, что эти условия имели место в другом инструкции.

Механизм для достижения этой цели является очень простой и включает в себя набор регистров

в сторону специально для этой цели. Этот регистр является F (флаг) регистр, так называется потому, что в ее функции входит флагом, или сигнал на другие инструкции Результаты предыдущих команд.

Флаг регистр имеет 8 бит, так же, как любой другой байт, а 6 из них

биты используются как 6 отдельных флагов, называют S, Z, H, P / V, N и С флаги. Когда вы используете команду MCTT дисплея Регистр “R”, шестнадцатеричное значение Флаг регистр показано, вместе с установкой каждого бита флага зарегистрируйтесь (рядом со словами “флаг” и “бит”). (Когда мы говорим о немного Настройки мы обычно называем немного быть “набор”, если = 1, в противном случае «перезагрузки», если = 0). Чтобы продемонстрировать их использование мы должны сосредоточиться на одной флагом, на Z (Ноль) флаг.

Большинство сравнить инструкции использовать зарегистрировать для одной половины сравнения.

Операция сравнения между, например, А и В регистрирует работы как это: компьютер выполняет воображаемую вычитание регистр B из реестра A, оставив оба регистра неизменными, и если в результате что мнимая вычитание привело бы в регистр, содержащий 0, она устанавливает флаг Z. Во всех остальных случаях Z флаг сбрасывается; то есть. если A>B или

После сравнения инструкции есть в целом команды перехода, которая

изменить счетчик команд в качестве результата сравнения.

Чтобы продемонстрировать это, мы войдем эту короткую программу.

LD, 1 поставить 1 в регистр;

LD B, 1 поставить 1 в B реестре; ср б сравнить: B JP г, 600Ah филиал обратиться 600Ah если A = B; LD, FFh иначе поставить FFh в регистре A.

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| | | 6000 | 3E | код операции | | | Л.д., N | | | | 6000 хх 3E | | | 6001 хх>| 01 | Значение идти в | | | | 6001 xx 01 | | | 6002 хх>| 06 | код операции | | | LD B, N | | | | 6002 xx 06 | | | 6003 хх>| 01 | Значение идти в B | | | | 6003 xx 01 | | | 6004 хх>| B8 | код операции | | | Ср б | | | | 6004 хх B8 | | | 6005 хх>| CA | код операции | | | JP г, Н. Н. | | | | 6005 хх CA | | | 6006 хх>| 0A | второй байт | | | Филиал адрес | | | | 6006 хх 0A | | | 6007 хх>| 60 | Первый байт | | | Филиал адрес | | | | 6007 xx 60 | | | 6008 хх>| 3E | код операции | | | Л.д., N | | | | 6008 хх 3E | | | 6009 хх>| FF | Значение идти в | | | | 6009 хх FF | | | 600A хх>| ENTER | | | | |>| B600A | | | | | B 600A? >| X | | | | |? B 600A X>| G6000 | | | | | G 6000? >| X | | | | | ПЕРЕРЫВ НА 600А | | |>| R | | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = 0142 BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS 0 1 – 0 – 0 1 0 | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = 600A | | | Я = хх R = хх | | |>

С дисплея регистра мы можем видеть, что Z флаг установлен; то есть. = 1, и

что регистр в настоящее время содержит значение 01h мы загружены в нее. Это значит что команда перехода пропускается вокруг LD A, FFh инструкция перед останавливаясь на месте 600Ah, потому что содержимое регистра A равны с содержимым регистра B. Если мы меняем значение, что загружается в B следующим образом, мы можем увидеть результат:

| Вы печатаете | Комментарий | ZX DISPLAYS

| | |>| A6003 | | | | | 6003 01>| 02 | изменить значение | | | Загружен в B | | | | 6003 xx 02>| | | 6004 хх>| ENTER | | | | |>| G6000 | | | | | G 6000? >| X | | | | | ПЕРЕРЫВ НА 600А | | |>| R | | | | | ГЛАВНАЯ РЕГИСТРАЦИЯ SET | | | AF = FF93 BC = 02xx DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS 1 0 – 1 – 0 1 1 | | | | | | ALTERNATE РЕЕСТР SET | | | AF = хххх BC = хххх DE = хххх HL = хххх | | | ФЛАГ SZ – Н – П / VNC | | | BITS хх – х – ххх | | | | | | СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ РЕГИСТРОВ | | | IX = хххх IY = хххх SP = хххх PC = 600A | | | Я = хх R = хх | | |>

Из этого мы можем видеть, что Z флаг сбрасывается в 0 и, следовательно,

инструкция пропустить вокруг на LD A, инструкция FFh не был выполнен и в результате регистре теперь содержит FFh. Важно понимать, что только некоторые команды влияют на флаг регистра и в этот последний Примером последнего будет выполнена инструкция, л.д., FFh, не влияет флаг регистра в любом случае.

Мы только что видели работу командой условного перехода. Из

Инструкции Конечно филиал не должны быть условной и безусловной команды перехода существуют в наборе команд Z80 и часто используемый.

ЗВОНОК & ВОЗВРАТ

Очень специальная версия инструкции перехода – звоните – является одним из самых

широко используются инструкции машинного кода. Идея вызова заключается в следующем: выполнение одной группы инструкций может быть временно приостановлена ​​для выполнить еще одну группу команд, как правило, называют подпрограмма.

Механизм для достижения этой цели также включает в себя регистр, отведенных

специально для этой цели. Этот регистр является SP (указатель стека) зарегистрируйтесь. Это просто регистр, который указывает на область памяти, называется стек, который используется для хранения адреса после вызова Инструкция (адрес возврата). Когда вызов выполняется текущий Содержимое счетчика команд (адрес возврата) перемещаются в Адрес, на который указывает указатель стека, а указатель стека уменьшается на 2. Адрес, содержащийся в инструкции вызова перемещается счетчик команд и, таким образом, инструкции по этому адресу становится следующая инструкция должна быть выполнена. Когда желательно, чтобы вернуться к Инструкция в соответствии с инструкцией вызова, возврат инструкция выполнена. Это просто меняет описанный выше процесс: содержание Адрес, на который указывает указатель стека перемещаются обратно в программу Счетчик и указатель стека увеличивается на 2. Очевидно, важно что содержание указателю стека не изменяются в промежутке между этими операции – распространенная ошибка программирования.

Инструкция вызова лучше всего иллюстрируется с помощью следующей диаграммы. Когда

7000H вызов команда выполняется, то управление переходит к решению 7000H и инструкция по этому адресу будет следующая инструкция должна быть выполнена. Когда в отставке (возвращение) команда выполняется, то управление переходит к адрес 6003h и исполнение оригинального рутины возобновляется с

| |

адрес

>

>

Например.

Например

>

памяти.

Первый

Каждый

При этом

адрес

>

>

СПЕКТР.

Программное обеспечение.

Это ваша

Удачи!

ПРИЛОЖЕНИЕ

соответственно.

появится.

КОМАНДЫ

Режим.

лучшего.

Параметры

к.

N

Вы можете иметь

R

Если это

выполнена.

S

СЛОВАРЬ

Нет

?

Телефон

   

   

   

   

   

   

Можете начать играть в Machine Code Test Tool онлайн. Среда разработки на ASM, которую подарил миру Francis O. Ainley, была выпущена творческой группой Oxford Computer Publishing в 1982 году в Великобритании.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

Отправить ответ

Уведомлять об
avatar
wpDiscuz
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close