Примеры Ассемблерного Кода И Алгоритмы Решения Задачи Обращения Строки

Данный - строка с нулевым завершением , расположенный в памяти по определенному адресу.

Допустим, «кукага», 0x0h. Задача — получить выходную строку в обратном порядке: «agakuk», 0x0h. Точнее, указатель на область памяти, где лежит инвертированная строка Давайте посмотрим на решения на основе i 8080 архитектура.

Запрос на ценители ассемблеры для архитектур, отличных от x86 — приведите пример выполнения этой задачи на ассемблере для знакомой вам архитектуры.

Просто чисто интересно сравнить.

Первый вариант — циклический алгоритм.

Вводим строку в перевернутом виде в свободную память.

Самое главное – не выходить за пределы памяти.

Мы оставим обработку границ за рамками примера.

DE — указатель на строку НАЖМИТЕ D ПОП Х DCX H МВИ М,0 ЭТИКЕТ1: XCHG МОВ А,М XCHG МОВ М,А DCX H ИНКС Д ДЖНЗ ЭТИКЕТ1 ИНКС Х В HL — указатель на инвертированную строку Второй вариант: НАЖМИТЕ D ПОП Х DCX H МВИ М,0 ЭТИКЕТ1: XCHG МОВ А,М JZ LABEL2 XCHG МОВ М,А DCX H ИНКС Д JMP LABEL1 ЭТИКЕТКА 2: В DE — указатель на инвертированную строку.

Вариант с будто рекурсия.

Регистр БК - построчно.

Здесь также нужно следить за тем, чтобы стек не попадал в область памяти.

И снова границы выходят за рамки примера.

НАЖМИТЕ Б ПОП Д DCX Д XCHG МВИ М,0 XCHG ЭТИКЕТ1: LXI H,ЭТИКЕТКА1 НАЖМИТЕ Ч ЛДАКС Б ИНКС Б DCX Д СТАКС Д КМП А РНЗ ПОП Х ИНКС Д В DE — указатель на перевернутую строку Спрашивайте, советуйте, критикуйте Решение для i8086 я не предоставил, так как все упирается в scasb, Rep, movsb. Слишком легко.

Но если хочешь, я могу написать Теги: #ассемблер #примеры #сравнение #задачи #8080 #Ассемблер

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.