І) поиск заданного числа в массиве с элементами размером в один байт. Массив задан в программе и имеет размерность 5х2. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

І) поиск заданного числа в массиве с элементами размером в один байт. Массив задан в программе и имеет размерность 5х2.



 

masm

model small

.stack 100h

.data

array db 2,5,6,2,5,6,7,2,9,4

; 2 5

; 6 2

; 5 6

; 7 2

; 9 4

elem db 8;элемент для поиска

failed db 0ah,0dh,'Net takogo elementa v massive!','$'

success db 0ah,0dh,'Takou element v massive prisutstvyet ','$'

foundtime db 0;количество найденных элементов

fnd db " raz(a)",0ah,0dh,'$'

.code

start:

mov ax,@data

mov ds,ax

xor ax,ax

mov si,0;si=столбцы в матрице

mov bx,0;bx=строки в матрице

mov cx,5;число для внешнего цикла (по строкам)

external:;внешний цикл по строкам

push cx;сохранение в стеке счетчика внешнего цикла

mov cx,2;число для внутреннего цикла (по столбцам)

mov si,0

iternal:;внутренний цикл по строкам

mov al,array[bx][si]

inc si;передвижение на следующий элемент в строке

cmp al,elem;сравниваем содержимое текущего элемента в ax с искомым элементом

;если текущий не совпал с искомым, то переход на here для обработки,

;иначе – инкремент счетчика совпадений

jne here

inc foundtime;иначе - увеличиваем счетчик совпавших

here:

loop iternal

jcxz move_next;просмотрели строку?

move_next:;продвижение в матрице

pop cx;восстанавливаем CX из стека (5)

add bx,2;передвигаемся на следующую строку

loop external;цикл (внешний)

 

cmp foundtime,0h;сравнение числа совпавших с 0

ja eql;если больше 0, то переход

not_equal:;нет элементов, совпавших с искомым

mov ah,09h;вывод сообщения на экран

mov dx, offset failed

int 21h

jmp exit;на выход

eql:;есть элементы, совпавшие с искомым

mov ah,09h;вывод сообщений на экран

mov dx,offset success

int 21h

mov ah,02h

mov dl,foundtime

add dl,30h

int 21h

mov ah,09h

mov dx,offset fnd

int 21h

exit:;выход

mov ax,4c00h;стандартное завершение программы

ІІ) Поиск заданного числа в массиве с элементами размером в два байта. Массив задан в программе и имеет размерность 5х2.

masm

model small

.stack 100h

.data

array dw 10,2,65,2,5,64,70,1,98,42

; 10 2

; 65 2

; 5 64

; 70 1

; 98 42

elem dw 98;элемент для поиска

failed db 0ah,0dh,'Net takogo elementa v massive!','$'

success db 0ah,0dh,'Takou element v massive prisutstvyet ','$'

foundtime db 0;количество найденных элементов

fnd db " raz(a)",0ah,0dh,'$'

 

.code

 

start:

mov ax,@data

mov ds,ax

xor ax,ax

mov si,0;si=столбцы в матрице

mov bx,0;bx=строки в матрице

mov cx,5

mov si,0;число для внешнего цикла (по строкам)

external:;внешний цикл по строкам

push cx;сохранение в стеке счетчика внешнего цикла

mov cx,2;число для внутреннего цикла (по столбцам)

mov si,0

iternal:;внутренний цикл по строкам

mov ax,array[bx][si]

inc si

inc si;переходим в строке через 2 байта

cmp ax,elem;сравниваем содержимое текущего элемента мас сива с искомым

;если текущий не совпал с искомым, то переход на here для обработки,

;иначе – инкремент счётчика совпадений

jne here

inc foundtime

here:

loop iternal

jcxz move_next;просмотрели строку?

move_next:;продвижение в матрице

pop cx;восстанавливаем CX из стека (5)

add bx,4;передвигаемся на следующую строку

loop external;цикл (внешний)

 

cmp foundtime,0h;сравнение числа совпавших с 0

ja eql;если больше 0, то переход

not_equal:;нет элементов, совпавших с искомым

mov ah,09h;вывод сообщения на экран

mov dx, offset failed

int 21h

jmp exit;на выход

eql:;есть элементы, совпавшие с искомым

mov ah,09h;вывод сообщений на экран

mov dx,offset success

int 21h

mov ah,02h

mov dl,foundtime

add dl,30h

int 21h

mov ah,09h

mov dx,offset fnd

int 21h

exit:;выход

mov ax,4c00h;стандартное завершение программы

int 21h

end start

 

IІІ) Поиск заданного числа в массиве с элементами размером в один байт. При этом массив задаётся пользователем и элемент для поиска тоже задаётся пользователем. На экран при вводе массива выдаётся номер строки и номер столбца вводимого элемента. Масив размерностью в 5х3.

masm

model small

.stack 100h

.data

array db 15 dup (?)

; 8 8 5

; 6 2 3

; 5 6 7

; 7 2 1

; 0 8 8

A1 db?;элемент для поиска

failed db 0ah,0dh,'Net takogo elementa v massive!','$'

success db 0ah,0dh,'Takou element v massive prisutstvyet ','$'

foundtime db 0;количество найденных элементов

fnd db " raz(a)",0ah,0dh,'$'

mes2 db 13,10,'Vvedite element massiva [','$'

mes3 db 'Vvedite element dlya poiska',13,10,'$'

mes4 db ']',13,10,'$'

mm1 db?

mm2 db?

mm3 db?

.code

start:

mov ax,@data

mov ds,ax

mov dx,offset mes3

mov ah,09h;функция Dos вывода сообщения на

int 21h

xor ax,ax

mov ah,1h

int 21h

sub al,'0'

mov a1,al

 

xor ax,ax

mov si,0;si=столбцы в матрице

mov bx,0;bx=строки в матрице

mov cx,5;число для внешнего цикла (по строкам)

external:;внешний цикл по строкам

push cx;сохранение в стеке счетчика внешнего цикла

mov cx,3;число для внутреннего цикла (по столбцам)

mov si,0

iternal:

mov dx,offset mes2

mov ah,09h;функция Dos вывода сообщения на

int 21h

xor ax,ax

mov ax,bx;выводим на экран номер строки в массиве. Номер

;строки хранится в bx

mov dh,3

div dh

add al,'0'

mov byte ptr [mm1],al

mov byte ptr [mm1+1],'$'

mov dx,offset mm1

mov ah,09h;функция Dos вывода сообщения на

int 21h

mov dl,':';ставим двоеточие после номера строки

mov byte ptr [mm2],dl

mov byte ptr [mm2+1],'$'

mov dx,offset mm2

mov ah,09h;функция Dos вывода сообщения на

int 21h

mov dx,si;после запятой выводим номер столбца, элемент

;которого вводим. Номер столбца хранится в si

add dx,'0'

mov byte ptr [mm3],dl

mov byte ptr [mm3+1],'$'

mov dx,offset mm3

mov ah,09h

int 21h

mov dx,offset mes4

mov ah,09h

int 21h

xor ax,ax

mov ah,1h

int 21h

sub al,'0'

xor dx,dx

mov dh,a1

mov array[bx][si],al

;сравниваем содержимое текущего элемента в массиве

;с искомым элементом в dh:

cmp array[bx][si],dh

jne here; если значение в массиве и значение в dh совпали, то

inc foundtime;увеличиваем счетчик совпадений

here:

inc si;иначе - цикл по строке

loop iternal

jcxz move_next;просмотрели строку?

move_next:;продвижение в матрице

pop cx;восстанавливаем CX из стека (5)

add bx,3;передвигаемся на следующую строку

loop external;цикл (внешний)

cmp foundtime,0h;сравнение числа совпавших с 0

ja eql;если больше 0, то переход на метку eql, иначе, если

not_equal:;нет элементов, совпавших с искомым

mov ah,09h;вывод сообщения на экран

mov dx, offset failed

int 21h

jmp exit;на выход

eql:;есть элементы, совпавшие с искомым

mov ah,09h;вывод сообщений на экран

mov dx,offset success

int 21h

mov ah,02h

mov dl,foundtime

add dl,30h

int 21h

mov ah,09h

mov dx,offset fnd

int 21h

exit:;выход

mov ax,4c00h;стандартное завершение программы

int 21h

 

end start

 

Задание для самостоятельной работы:

IV) Написать программу для поиска заданного числа в массиве с элементами размером в два байта. При этом массив должен задаваться пользователем и элемент для поиска тоже должен задаваться пользователем. Элементы массива и элемент для поиска задаётся в шестнадцатиричной системе исчисления. На экран при вводе массива необходимо выдать номер строки и номер столбца вводимого элемента. Масcив размерностью в 5х2. Программа также должна выдать массив на экран в табличном виде.

 

Лекция №1. Основные понятия. Первая программа для DOS и под Windows. Представление данных в компьютере.

 

Системная программа - программа, предназначенная для поддержания работоспособности системы обработки информации (СОИ) или повышения эффективности ее использования.

Прикладная программа - программа, предназначенная для решения задачи или класса задач в определенной области применения СОИ.

Таким образом, системное программирование это разработка программ сложной структуры именно для обеспечения работоспособности или повышения эффективности СОИ.

Подразделение программного обеспечения (ПО) предусматривает три градации ПО:

- Системное

- Промежуточное

- Прикладное

Промежуточное ПО (middleware) – совокупность программ, осуществляющих управление вторичными (конструируемыми самим ПО) ресурсами, ориентированными на решение определенного (широкого) класса задач. К такому ПО относятся менеджеры транзакций, серверы БД, серверы коммуникаций и другие программные серверы.

Системное ПО подразделяется на системные управляющие программы и системные обслуживающие программы.

Управляющая программа — системная программа, реализующая набор функций управления, который включает в себя управление ресурсами и взаимодействие с внешней средой СОИ, восстановление работы системы после проявления неисправностей в технических средствах.

Программа обслуживания (утилита) — программа, предназначенная для оказания услуг общего характера пользователям и обслуживающему персоналу СОИ.

Управляющая программа совместно с набором необходимых для эксплуатации системы утилит составляют операционную систему (ОС).


Этапы подготовки программы

При разработке программ используется принцип модульности, разбиения сложной программы на составные части, каждая из которых может подготавливаться отдельно.



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 267; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.119.241 (0.018 с.)