Формирование массива из 10 двухбайтных чисел, переписать во второй массив все положительные числа

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Федеральное государственное образовательное учреждение

 высшего профессионального образования

СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ

Кафедра: «Радиотехника»

Лабораторная работа №1

                                                                                                                       Выполнил:

                                                                                                                                       Студент гр. Р54-4

                   Александров А. В.

                                                                                                                         Проверил:

                                                                                                                                  Тронин О. А.

Красноярск 2007

model small                                                   ; директива модели памяти с параметром small

.data                                                               ; упрощенная директива сегмента данных

            mass1 dw 10 dup (0)                          ; инициализация двухбайтного 10-элементного массива mass1

            mass2 dw 10 dup (?)                          ; выделение памяти под двухбайтный 10-элементный массив mass2

            buff db 8 dup (8)                                                                   ; буфер ввода buff

            mess1 db "Please enter 10 positive integers (0...65535): $"            ; символьная цепочка mess1

            mess2 db "chetnbIe chisla: $"                                                           ; символьная цепочка mess2

.stack 256h                                                     ; упрощенная директива для 256-байтного сегмента стека

.code                                                              ; упрощенная директива сегмента кода

innum proc                 ; начало процедуры innum

            mov dx,offset buff      ; инициализация dx адресом начала буфера ввода buff

            mov ah,0Ah                ; формирование функции буферизованного ввода с клавиатуры

            int 21h                        ; программное прерывание типа 21h

            mov dx,10                  ; инициализация dx символом "Line Feed" ("Перевод Строки")

            mov ah,02h                 ; формирование функции вывода единичного символа на экран

            int 21h                        ; программное прерывание типа 21h

            xor ax,ax                     ; очистка регистра ax

            mov cl,buff[1]                        ; в младший байт регистра cx помещается число введенных символов

            mov dl,buff[1]                        ; в младший байт регистра dx помещается число введенных символов

            mov si,2                      ; инициализация индексного регистра si двойкой

            push 1                         ; запись в стек числа 1

            dec dl                          ; декремент dl

            cmp dl,0                     ; сравнение вида dl=0, и если true, то...

            je stend                       ; ...переход на метку stend

            push 10                                   ; запись в стек числа 10      

            dec dl                          ; декремент dl

            cmp dl,0                     ; сравнение вида dl=0, и если true, то...

            je stend                       ; ...переход на метку stend

            push 100                     ; запись в стек числа 100    

            dec dl                          ; декремент dl

            cmp dl,0                     ; сравнение вида dl=0, и если true, то...

            je stend                       ; ...переход на метку stend

            push 1000                   ; запись в стек числа 1000  

            dec dl                          ; декремент dl

            cmp dl,0                     ; сравнение вида dl=0, и если true, то...

            je stend                       ; ...переход на метку stend

            push 10000                 ; запись в стек числа 10000

            dec dl                          ; декремент dl

            cmp dl,0                     ; сравнение вида dl=0, и если true, то...

            je stend                       ; ...переход на метку stend

stend:                          ; пользовательская метка stend

            mov al,buff[si]                       ; запись в al si-ого символа буфера buff

            sub al,30h                   ; разность вида ax:=al-30h

            mov ah,0                     ; обнуление ah

            pop bx                         ; запись в регистр bx верхнего элемента стека

            mul bx                        ; умножение вида (dx:ax):=ax*bx

            add mass1[di],ax        ; сумма вида mass1[di]:=mass1[di]+ax

            inc si                           ; инкремент si

            loop stend                   ; если cx еще не равно нулю, то cx:=cx-1 и переход к метке stend

            ret                               ; возврат в основную процедуру

innum endp                ; конец процедуры innum

outnum proc               ; начало процедуры outnum

            mov ah,9                     ; формирование функции вывода строки на экран

            mov dx,offset mess2  ; инициализация dx адресом начала символьной цепочки mess2

            int 21h                        ; программное прерывание типа 21h

            mov si,0                      ; инициализация индексного регистра si нулем

star0:                           ; пользовательская метка star0

            mov cx,0                     ; инициализация счетчика cx нулем

            mov ax,mass2[si]       ; запись в регистр ax si-ого элемента массива array2

star1:                           ; пользовательская метка star1

            xor dx,dx                    ; очистка dx

            mov bx,10                  ; запись в регистр bx числа 10

            div bx                         ; деление вида (ax.dx):=ax/bx

            mov bx,dx                  ; запись старшей части результата деления в bx

            push bx                                   ; запись содержимого bx в стек

            inc cx                          ; инкремент cx

            cmp ax,0                     ; сравнение вида ax=0, и если false, то...

            jne star1                      ; ...переход на метку star1

star2:                           ; пользовательская метка star2

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.