Язык программирования Форт



         

Глава 16. Программирование на форт-ассемблере - часть 4


D1 = POP DE Перенести число из стека в регистр DE Е1 = POP HL Перенести число из стека в регистр HL D5 = PUSH DE Перенести число из регистра DE в стек E5 = PUSH HL Перенести число из регистра HL в стек FD E9 = JP (IY) Передать управление по адресу, лежащему в регистре IY Программисту, работающему на Форте, довольно легко понять команды PUSH и POP, так как "аппаратный стек", реализованный в Z-80 с помощью SP-регистра (указателя стека), является в большинстве версий Форта как раз тем самым стеком, который непосредственно использует Форт. Применены здесь два регистра общего назначения с именами DE и HL, а также команда записи чисел в стек, названная PUSH, и извлечения кода из стека, называемая POP. Машинная программа для SWAP просто говорит ЦП Z-80 убрать два числа из стека и записать их в два регистра ЦП, а затем положить их в стек в обратном порядке. Это показывает, насколько легко переслать любое число кодов в регистры микропроцессора и обратно, используя стек. Команда JP (IY) (которая может быть другой в вашем Форте, даже если у вас применена система Z-80) заставляет Z-80 передать управление по адресу, записанному в регистре IY. Это инструкция, названная нами NEXT в гл. 15. Инструкция NEXT используется для завершения исполнения Форт-программы в машинных кодах (примитива) и передачи управления внутреннему интерпретатору Форта. Коды операций для NEXT в вашем Форте могут быть другими, даже если вы используете Z-80. NEXT в действительности слово MMSFORTH и не является стандартным словом, но почти все версии Форта содержат его эквивалент. Чтобы проиллюстрировать, как одно и то же задание реализуется на разных микропроцессорах (так вы не будете разочарованы, если не имеете оборудования, которое мы обсуждаем), ниже представлены программы для SWAP в двух различных Фортах для 16-битовой IBM PC, базирующейся на микропроцессоре 8088. MMSFORTH 5A = POP DX 58 = POP AX 52 = PUSH DX 50 = PUSH AX AD = LODS AX, SI Загрузка в регистр AX содержимого регистра SI 93 = XCHG AX, BX Пересылка содержимого ВХ в AX и наоборот FF 27 = JMP (ВХ) Передача управления по адресу, лежащему в регистре ВХ MVPFORTH 5В = POP ВХ 58 = POP AX 53 = PUSH ВХ 50 = PUSH AX AD = LODS AX, SI Загрузка в регистр AX содержимого регистра SI AB D8 = MOV ВХ, AX Пересылка содержимого AX в регистр ВХ FF 27 = JMP (ВХ) Передача управления по адресу, лежащему в регистре ВХ




Содержание  Назад  Вперед