МПСС. Sem5. Lab4. Особенности реального режима Intel 80×86

Задание:
14. Написать подпрограмму, формирующую из заданной битовой строки новую путем удаления каждого второго бита (т.е. стpока становится в два раза короче). Результат помещается на место исходной строки. Адрес  строки задан парой GS:SI, длина (в битах) — регистром DX

Общая схема решения задачи:

Раз результат нужно поместить на место исходной строки, то все действия можно делать прямо в ней. Для выполнения этого задания нужно хранить два значения: номер считываемого бита и номер устанавливаемого бита в текущем считываемом и устанавливаемом байте соответственно (eсx, ebx). Для хранения смещения считываемого и устанавливаемого байта тоже нужно два регистра (SI, DI). Сначала нужно проверить бит и сбросить его в 0. Если он был установлен, то бит, номер которого хранится в ebx, байта, смещение которого хранится в DI установить в 1. После чего нужно уменьшить значения ecz на 2 и ebx на 1 с проверкой на -1. Если какое либо из этих значений установится в -1 (FFFFh) , то следует его установить в 7 и соответствующее смещение увеличить на 1. Также нужно считать номер текущего бита в строке. если он установится в 0, то процесс завершается.

Текст программы на ассемблере:

 

Результаты работы программы:

Номер опыта Битовая строка Количество бит Ожидаемый результат Реальный результат
1 11100000000b 3 1100000000b 11000000b
2 11111111b 11100000b 10 11111000b 11111000b
3 10101010b 8 11110000b 11110000b

Вывод: полученная программа работает верно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *