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

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

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

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

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

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

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

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

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

Задание № 1 (вариант № 4):

Сформировать массив и 10 двухбайтных чисел. Переписать во второй массив все положительные числа.

Текст программы:

1)

STACKSG     SEGMENT PARA USE16

A     DW    25 DUP(0)

B     DW    25 DUP(0)

С     DB    1  DUP(0)

ENTS DB    0AH,0DH,24H

FIN   DB    'fin.txt',00H

FOUT  DB    'fout.txt',00H

STACKSG ENDS

CODESG      SEGMENT PARA'Code'

BEGIN PROC FAR

      ASSUME DS:STACKSG,CS:CODESG

      MOV AX,STACKSG

      MOV DS,AX

;Чтение с клавиатуры и запись в массив А

      MOV CX,10

      LEA SI,A         

M100: MOV AH,01H

      INT 21H

      MOV [SI],AL

      INT 21H

      MOV [SI+1],AL

      INT 21H

      MOV [SI+2],AL

      INT 21H

      MOV [SI+3],AL

      MOV [SI+4],20H

      ADD SI,5   

      MOV AH,09H

      LEA DX,ENTS

      INT 21H

      LOOP M100

;Сравнение

      LEA SI,A

      LEA DI,B   

      MOV CX,10  

M0:   MOV AL,[SI]

      CMP AL,37H

      JG M1

      ADD SI,5

      LOOP M0

      JMP M3

M1:   MOV BL,[SI]

      MOV [DI],BL

      MOV BL,[SI+1]

      MOV [DI+1],BL

      MOV BL,[SI+2]

      MOV [DI+2],BL

      MOV BL,[SI+3]

      MOV [DI+3],BL

      MOV BL,[SI+4]

      MOV [DI+4],BL

      ADD SI,5

      ADD DI,5

      LOOP M0    

M3:

      MOV AH,09H

      LEA DX,ENTS

      INT 21H

      LEA DX,B   

      MOV AH,09H

      INT 21H    

        MOV AX,4C00H

      INT 21H

BEGIN       ENDP

CODESG      ENDS

        END BEGIN

2)

        seg_data segment para public 'data'

         mas_in  dw           0ah dup ('?')

         mas_out dw           0ah dup ('#')

         razrad                     dw  0ah

         des_t                      dw  2710h

         tis                        dw  1000

         sot                        dw  100

         des                        dw  10

         fmas_in  db          80 dup ('#')

         fmas_out db          80 dup ('#')

         file_in  db          "C:\files\in.dat",0

         file_out db          "C:\files\out.dat",0

        seg_data ends

        seg_stack segment stack

         db                   256 dup ('?')

        seg_stack             ends

        seg_code segment para public 'code'

         main    proc

          assume  ds:seg_data, cs:seg_code, ss:seg_stack

          mov      ax,seg_data

          mov    ds,ax

; Обнуляем регистры

          mov    ax,0

          mov    bx,0

          mov    cx,0

          mov    dx,0

          mov    si,0

          mov    di,0

; Открываем файл с первым массивом

          mov    ax,3d00h

          lea      dx,file_in

          int            21h

; Читаем данные из файла

read:   mov   bx,ax

        mov   ah,3fh

        mov   cx,80

        lea   dx,fmas_in

        int   21h

; Закрываем файл с первым массивом

        mov         ah,3eh

              int         21h

; Ввод элементов массива

ent:    xor bx,bx

      mov   al,fmas_in[si]

      add   si,1

            cmp    al,2dh

            jne          ddd

            push   1

          jmp     dd4   

ddd:   push 0

dd4:  mov    al,fmas_in[si]

          add     si,1

sub          al,30h

          xor     ah,ah

          add     bx,ax

          mov    cx,4

cikl:

          mov     al,fmas_in[si]

          add     si,1        

          push   ax

          mov    ax,bx

          mul    razrad

          mov    bx,ax

          pop     ax

          sub     al,30h

          xor     ah,ah

          add     bx,ax

          loop    cikl

          add     si,2

          jmp     zap

; Запись

zap:        pop   ax

      cmp    ax,1

          jne      dd2

          neg      bx

dd2:   mov    mas_in[di],bx

          xor     bx,bx

          add     di,2

          cmp    di,20

          jb        ent

          xor     si,si

          xor      di,di

          jmp     srav

; Сравнение

srav:   mov     ax,mas_in[si]

          add       si,2

          cmp      si,20

          ja          print

          cmp      ax,0

          jge        srav

          mov      mas_out[di],ax

          add       di,2

          jmp      srav

print:  xor   dx,dx

      xor     ax,ax

      push     di

      xor      si,si

      xor   di,di              

dd3:   xor  bx,bx

      mov    ax,mas_out[si]

          neg      ax

          mov    bx,ax

          mov    fmas_out[di],2dh

          add     di,1

          xor      ax,ax

          xor      dx,dx

          mov    ax,bx

          div      des_t

          mov    cx,dx

          add     al,30h

          mov    fmas_out[di],al

          add     di,1

          xor     dx,dx

          mov    ax,cx

          div      tis

          mov    cx,dx

          add     al,30h

          mov    fmas_out[di],al

          add     di,1

          xor     ax,ax

          xor     dx,dx

          mov    ax,cx

          div      sot

          mov    cx,dx

          add     al,30h

          mov    fmas_out[di],al

          add     di,1

          xor     ax,ax

          xor     dx,dx

          mov    ax,cx

          div      des

          mov    cx,dx

          add     al,30h

          mov    fmas_out[di],al

          add      di,1

          xor      ax,ax

          xor      dx,dx

          mov    ax,cx

          add     al,30h

          mov    fmas_out[di],al

          add      di,1

          xor      dx,dx

          xor      ax,ax

          mov    fmas_out[di],0dh

          add      di,1

          add      si,2

          pop       bx

          cmp     si,bx

          je         open

      push    bx

      jmp    dd3 

; Открытие файла для записи второго массива

open: sub    di,1

       mov    cx,di

       mov    ax,3d01h

           lea       dx,file_out

           int       21h

; Сохранение

save: mov    bx,ax

       mov    ah,40h

       lea    dx,fmas_out

       int    21h

; Закрытие файла с выходным массивом

          mov     ah,3eh

          int        21h

; Выход из программы

exit:   mov    ah,4ch

          int       21h

         main endp

        seg_code ends

       end main

Задание № 2 (вариант № 9):

Сформировать массив и 10 двухбайтных чисел. Найти минимальное значение.

Текст программы:

1)

data  segment     para public 'data'      ;сегмент данных

message     db    'Введите две шестнадцатеричные цифры: $'

message_1   db    ' $'

message_2   db    0ah,0dh,'Минимальное число: $',0ah,0dh

data  ends

stk   segment     stack

      db    256 dup ('?')                 ;сегмент стека

stk   ends

code  segment     para public 'code'      ;начало сегмента кода

minim dw ?                          ;выделение памяти под переменную minim

r dw ?

rr dw ?

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

      assume ds:data,cs:code,ss:stk

      mov   ax,data                       ;адрес сегмента данных в регистр ax

      mov   ds,ax ;ax в ds

      mov   ah,9

      mov   dx,offset message

      int   21h

      mov ax,11                     ;общий цикл

      mov r,ax

      mov cx,10               ;формирование счётчиа

      mov bx,0FFh       ;чтобы переменная minim не обнулилось занесем в bx макс. число

      mov minim,0FFh    ;в переменную minim заносим максимальное число из возможных

M_1:

    mov ax,bx                 ;в ах заносим введеное число

    cmp ax,minim        ;сравнение вида ax<=minim

    jbe min             ;если ax меньше или равно minim, то переходим на метку min

    jcxz M_2            ;если сх=0, переходим в M_2, если нет, то продолжаем

    dec cx

jmp M3

min:

    mov minim,ax        ;в minim заносим минимальное число

    jcxz M_2            ;если сх=0, переходим в M_2, если нет, то продолжаем

    dec cx

M3:

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

      mov   ah,1h       ;1h в регистр ah

      int   21h         ;генерация прерывания с номером 21h

      mov   dl,al       ;содержимое регистра al в регистр dl

      sub   dl,30h            ;вычитание: (dl)=(dl)-30h

      cmp   dl,9h       ;сравнить (dl) с 9h

      jle   M1          ;перейти на метку M1 если dl<9h или dl=9h

      sub   dl,7h       ;вычитание: (dl)=(dl)-7h

M1:

      shl dl,1                ;сдвиг содержимого dl на 1 разряда влево

      shl dl,1

      shl dl,1

      shl dl,1

      int   21h         ;вызов прерывания с номером 21h

      sub   al,30h            ;вычитание: (dl)=(dl)-30h

      cmp   al,9h       ;сравнить (al) с 9h

      jle   M2          ;перейти на метку M2 если al<9h или al=9h

      sub   al,7h       ;вычитание: (al)=(al)-7h

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

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

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

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

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

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

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

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