Пильщиков В.Н. - Упражнения по языку ассемблера MASM (1110572), страница 7
Текст из файла (страница 7)
а) MOV AX,X б) MOV AX,ES:X в) MOV AX,SEG X г) MOV AX,SEG X
MOV ES,AX MOV DS,AX
MOV AX,ES:X MOV AX,X
10.4 Выписать (не основной) модуль программы, где описаны доступные другим модулям байтовая переменная STEP с начальным значением 1 и дальняя процедура NEXT без параметров, которая увеличивает на STEP значение байтовой переменной TIME из какого-то другого модуля.
10.5 Выписать вспомогательный модуль программы, содержащий описание доступной другим модулям дальней процедуры NOD, которая находит и записывает в регистр AX наибольший общий делитель двух натуральных чисел, переданных через регистры AX и BX.
Выписать также основной модуль программы, который вводит 4 натуральных числа и, используя процедуру NOD, определяет их наибольший общий делитель.
10.6 Выписать вспомогательный модуль программы, содержащий описание доступных другим модулям массива PRIM из 50 слов и дальней процедуры INIT, которая инициирует этот массив, записывая в него первые 50 простых чисел (2, 3, 5, ...).
Выписать основной модуль программы, который вводит последовательность натуральных чисел (за ней следует 0) и, используя процедуру INIT и массив PRIM, подсчитывает, сколько среди этих чисел равных первым 50 простым числам.
10.7 Используя для очереди ("первый пришел - первым ушел") векторное представление, выписать вспомогательный модуль программы, в котором резервируется место (5 массивов по 1000 слов) для 5 очередей и описываются в виде процедур следующие операции над очередями:
- образовать новую (пустую) очередь (очереди можно идентифицировать по номерам 1, 2, ..., 5);
- проверить, пуста ли указанная (по номеру) очередь;
- записать элемент в указанную очередь;
- считать элемент из указанной очереди.
(Способ хранения элементов очереди в массиве, название процедур и т.п. - продумать самим.)
Выписать также основной модуль программы, который, используя процедуры из вспомогательного модуля, вводит последовательность ненулевых чисел (за ней следует 0) и печатает их в следующем порядке: сначала - все отрицательные числа, затем - все числа, большие 500, и в конце - все остальные числа. При этом внутри каждой из этих трех групп чисел должно быть сохранено их исходное взаимное расположение.
10.8 Считая, что имеется вспомогательный модуль из предыдущего упражнения, выписать основной модуль программы, который вводит последовательность ненулевых чисел (за ней следует 0), в которой равное число положительных и отрицательных чисел, и печатает поочередно положительные и отрицательные числа (первым - положительное число), сохраняя при этом исходный взаимный порядок как среди положительных, так и среди отрицательных чисел. (Каждое число печатать, как только это становится возможным.)
СОДЕРЖАНИЕ
1. ОПИСАНИЕ ДАННЫХ. ПЕРЕСЫЛКИ. 3
2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ. 5
3. ПЕРЕХОДЫ. ЦИКЛЫ. ВВОД-ВЫВОД. 8
4. ИНДЕКСИРОВАНИЕ. МАССИВЫ. СТРУКТУРЫ. 11
5. БИТОВЫЕ ОПЕРАЦИИ. УПАКОВАННЫЕ ДАННЫЕ. 177
6. СЕГМЕНТИРОВАНИЕ. ПОЛНЫЕ ПРОГРАММЫ. СТЕК. 200
7. ПРОЦЕДУРЫ. 255
8. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. 300
9. МАКРОСРЕДСТВА. 344
10. МНОГОМОДУЛЬНЫЕ ПРОГРАММЫ. 39
40