|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задания 1. Составить два варианта программы без подпрограмм и с подпрограммойСоставить два варианта программы без подпрограмм и с подпрограммой. 1. Разработайте программу сортировки массива по возрастанию. 2. Разработайте программу сортировки массива по убыванию. 3. Реализуйте на ассемблере BASIC-программу: 10 LET A=7 20 FOR B=2 TO 9 30 IF B<4 THEN GO SUB 60 40 NEXT B 50 GO TO 80 60 LET A=A+B 70 RETURN 80 STOP 4. Разработайте программу подсчета количества ячеек памяти со значениями, отличными от 38h. 5. Напишите программу подсчета количества ячеек памяти, значения которых меньше или равны A3h. 6. Разработайте программу подсчета количества отрицательных и положительных чисел, при этом считать, что ноль – положительное число. 7. Напишите подпрограмму вычисления чисел Фибоначчи. Алгоритм: А1=1; А2=1 Аi =Ai-2+Ai-1. 8. Пусть в памяти находится строка, оканчивающаяся нулем. Разработайте подпрограмму подсчета длины строки.
Индивидуальные задания 2 1. Написать программу, вычисляющую 20 значений массива А по формуле А[i]=7*i + 5; i = 0...19. Полученный массив записать в РПД, начиная с адреса 40Н. 2. Написать подпрограмму, копирующую в цикле 10 байт из РПД, наложенных на маску 1001100lb, начиная с адреса 50Н, во внешнюю память данных (ВПД), начиная с адреса С200Н. В программе осуществить вызов этой процедуры и возврат из нее. 3. Написать подпрограмму, сканирующую в цикле состояние регистров R0-R7 текущего регистрового банка. Если значение регистра равно нулю - соответствующий номеру регистра бит аккумулятор тоже сбрасывается. Если регистр не равен нулю - в
;Таблица векторов переходов TABLE: DB ROUT0; Начальный адрес программы ROUT0 DB ROUT1 DB ROUT2 … … DB ROUTF; Начальный адрес программы ROUTF
Последовательная передача параметров Если подпрограмма вызывается часто, то наиболее эффективным программным способом передачи параметров является последовательный. Константы в этом случае являются частью программного кода и следуют непосредственно за инструкцией вызова подпрограммы. По адресу возврата в стеке подпрограмма определяет место расположения параметров для последующего считывания. Например, подпрограмма LINE выполняет сложение 16-разрядной упакованной двоично-десятичной константы с двухбайтной двоично-десятичной переменной, хранящейся во внутренней памяти ЗУ, и запоминает сумму в другом двухбайтном буфере. В подпрограмму должны передаваться константа и оба адреса буферов. Вместо использования для этих целей четырех рабочих регистров используются 4 байта в памяти программ, следующих за командой вызова подпрограммы. В приведенном ниже примере подпрограмма осуществляет сложение десятичной константы 1234 с содержимым адреса внутренней памяти 56Н и записывает результат в буфер по адресу 78Н. Подпрограмма LINE определяет, из какой точки был осуществлен ее вызов путем извлечения из стека адреса возврата в старший и младший байты указателя данных. Инструкция MOVC затем считывает параметры из памяти программы по мере необходимости. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |