Курсовая работа: Микропроцессорные средства и системы
Составить программу на Ассемблере с комментариями :
Подсчитать число символов в строке, расположенной в области начиная с адреса 1000H и заканчивая адресом 2000Hбез учета пробелов, если известно, что каждый символ занимает одну ячейку памяти и пробел кодируется как 01H.
Максимальное число символов в строке 2000h -1000h=1000h=409610
После выполнения программы результат будет помещен в HL.
LXISP,3000h ; указание вершины стека
LXIH,1000h ; адрес 1-го элемента => в HL
LXID,1000h ; загрузка счетчика в D,E
XRAA ; обнуление аккумулятора
STA 2001h ; обнуление счетчика количества символов
STA 2002h ; обнуление счетчика количества символов
MVIB,01h ; код пробела => в В
LOOP:
MOVA,M ; загрузить символ из ячейки М в аккумулятор
CMPB ; проверка на код пробела
JNZCOUNT ; если не совпадает, переход к COUNT, иначе - дальше
INXH ; адрес следующего символа
DCXD ; уменьшить счетчик
JZEXIT ; если счетчик = 0, на выход
JMPLOOP ; в начало цикла
COUNT:
PUSHH ; выгрузить содержимое HL в стек
LHLD 2001h ; загрузить HL содержимым счетчика количества символов
INXH ; увеличить счетчик на 1
SHLD 2001h ; сохранить счетчик количества символов в 2001h, 2002h
POPH ; восстановить в HL сохраненный адрес
RET ; возврат из подпрограммы
EXIT:
LHLD 2001h ; загрузить HL содержимым счетчика количества символов
END