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

Тема в разделе "Другие", создана пользователем mannequin, 24 окт 2008.

Статус темы:
Закрыта.
  1. mannequin

    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
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей