• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите нарисовать блок-схему TASM

  • Автор темы Автор темы Fileo
  • Дата начала Дата начала

Fileo

Ученик
Регистрация
12 Мар 2013
Сообщения
1
Реакции
0
Баллы
0
Помогите нарисовать блок-схему TASM

нарисуйте хотя бы схематично в паинте пожалуйста

Добавить новый элемент массива, если его значение не равно значениям элементов заданного массива А(I). I = 1,2,..,5. Максимальная размерность массива А(I)=10. Добавляемые числа находятся в массиве B(J). J = 1,2,...,5.

Код:
model small 
.stack 100h ;стэк 256 Кб
.data
    len2 dw 5 ;длина массива-результата
    len equ 5 ;длина исходных массивов
    mas2 db 2, 3, 6, 7, 8 ;массив откуда брать
    void dw ? ;раздел между массивами для удобного просмотра
    mas1 db 1, 2, 3, 4, 5 ;массив - результат
.code
    start: ;метка начала программы
        mov ax,(собака)data ;инициализируем ds сегмнтом данных
        mov ds,ax       ; через регистр ах
        mov cx,len ;цикл по всему массиву
        xor si,si ;исключающее или - обнуление счетчика цикла
    cicl1: ;цикл по массиву для добавления
        mov al,mas2[si] ;берем поочередно каждый элемент
        push cx ;запоминаем сх в стэк для вложенных циклов
        mov cx, len2 ;вложенный цикл по всему результирующему массиву
        xor di,di ;обнуляем счетчик второго цикла
    cicl2: ;пробегаем по массиву результату.
        cmp al,mas1[di] ;если в массиве таких элементов нет
        je metka
        inc di
    loop cicl2 ;то добавим
        mov di,len2       ;добавление
        mov mas1[di],al ;элемента в массив
        inc len2            ;увеличение длины массива
    metka:
        pop cx              ;если есть, то следующая итерация
        inc si                ;переход к следующему элементу
    loop cicl1 ;все элементы добавлены
    exit: ;выход
        mov ax,4c00h ;4с - номер функции выхода, 0 - код ошибки
        int 21h ;вызов библиотеки прерываний DOS
end start ;вход в программу с метки start
 
Назад
Сверху