Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Newline. jcxz Pech; На печать результата
Finish L1: mov cx, N; Счётчик цикла jcxz Pech; На печать результата mov dx, offset T3; Приглашение к вводу Outstr Newline L2: inint ax; Ввод очередного числа cmp ax, -2000 jl L3 cmp ax, 5000 jg L3; Проверка диапазона add S, ax; Суммирование jno L3; Проверка на переполнение S mov dx, offset T4 jmp Err L3: loop L2 Pech: outch ′ S′ outch ′ =′ outint S Newline Finish code ends end start
В качестве ещё одного примера рассмотрим использование циклов при обработке массивов. Пусть необходимо составить программу для решения следующей задачи. Задана константа N=20000, надо ввести массивы X и Y по N беззнаковых чисел в каждом массиве и вычислить выражение Для простоты будем предполагать, что каждое из произведений и вся сумма имеют формат dw (помещаются в слово). Ниже приведена программа, решающая эту задачу. include io.asm N equ 20000; Аналог Const N=20000; Паскаля data1 segment T1 db ′ Вводите числа массива $′ T2 db ′ Сумма = $′ T3 db ′ Ошибка – большое значение! ′, 10, 13, ′ $′ S dw 0; искомая сумма X dw N dup (?); 2*N байт data1 ends data2 segment Y dw N dup (?); 2*N байт data2 ends St segment stack dw 64 dup (?) St ends code segment assume cs: code, ds: data1, es: date2, ss: st begin_of_program: mov ax, data1 mov ds, ax; ds – на начало data1 mov ax, data2 mov es, ax; es – на начало data2 mov dx, offset T1; Приглашение к вводу Outstr outch ′ X′ Newline mov cx, N; счётчик цикла mov bx, 0; индекс массива L1: inint X[bx]; ввод очередного элемента X[i] add bx, 2; увеличение индекса, это i: =i+1 loop L1 outstr; Приглашение к вводу outch ′ Y′
|