программа на ассемблере

  • Автор темы mannequin
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

mannequin

В массиве Z[1..N] определить сумму нечетных чисел от последнего
нулевого значения до Z[N] и среднее арифметическое четных чисел до
последнего нуля.Заменить этот последний ноль на среднее арифметическое.


MASM
MODEL small
STACK 256

.data
array dw 1,2,1,2,3,0,1,1,2,2
srar dw ?
sarch dw ?
sumnech dw ?
mes1 db 0ah,0dh,'Исходный массив — $',0ah,0dh
mes2 db 0ah,0dh,'Отсортированный массив — $',0ah,0dh

.code

main:
mov ax,@data
mov ds,ax
xor ax,ax

mov ah,09h
lea dx,mes1
int 21h
mov cx,10
mov si,0

show_primary:

mov dx,array[si]
add dl,30h
mov ah,02h
int 21h
add si,2
loop show_primary


lea si,array
mov cx,10
mov ax,[si]
dec cx

@1: add ax,[si+2]
add si,2
loop @1

mov bx,10
cwd
idiv bx
mov srar,ax

lea si,array
mov cx,10
mov ax,cx
shl ax,1
add si,ax
sub si,2

@2: cmp byte ptr[si],0
jne @3
mov di,si
mov bx,cx
mov ax,srar
mov [si],ax
jmp @10

@3: sub si,2
loop @2

@10: mov si,di
add si,2
mov cx,10
sub cx,bx
push bx
xor bx,bx

@4: mov ax,[si]
cwd
mov dl,2
idiv dl
cmp ah,0
je @5
add bx,[si]

@5: add si,2
xor ax,ax
loop @4

mov sumnech,bx
pop bx

lea si,array
mov cx,bx
dec cx
xor bx,bx
xor al,al

@6: mov ax,[si]
mov dl,2
idiv dl
cmp ah,0
jne @7
add bx,[si]
add al,1

@7: add si,2
xor ax,ax
loop @6

mov ax,bx
mov dl,2
idiv dl
mov sarch,ax


mov ah,09h
lea dx,mes2
int 21h
mov cx,10
mov si,0

show_last:

mov dx,array[si]
add dl,30h
mov ah,02h
int 21h
add si,2
loop show_last


lea dx,srar
mov si,0
mov dx,[si]
add dl,30h
mov ah,02h
int 21h

lea dx,sarch
mov si,0
mov dx,[si]
add dl,30h
mov ah,02h
int 21h

lea dx,sumnech
mov si,0
mov dx,[si]
add dl,30h
mov ah,02h
int 21h



readkey:

mov ah,1
int 21h
end readkey

mov ax,4c00h
int 21h
end main
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!