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
нулевого значения до 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