Заменить каждый нечетный элемент массива на следующий - Assembler

Узнай цену своей работы

Формулировка задачи:

Дан массив, состоящий из 15 элементов. Заменить каждый нечетный элемент массива на следующий. Вывести полученный массив на экран.

Решение задачи: «Заменить каждый нечетный элемент массива на следующий»

textual
Листинг программы
model   tiny
.code
org 100h
szMas   equ 15
start:  xor ax,ax
    mov es,ax
    mov dx,es:[46Ch]
    add dx,es:[46Eh]
    push    ds
    pop es
    lea di,dwMas
    mov cx,15
@@01:   mov ax,7
    ror dx,3
    and ax,dx
    stosw
    loop    @@01
    lea si,dwMas
    mov cx,szMas
    mov bx,10
    call    OutMas
    call    Change
    call    OutMas
    xor ax,ax
    int 16h
    ret
OutMas: push    si
    push    cx
    call    NewLine
@@02:   lodsw
    call    OutNum
    loop    @@02
    pop cx
    pop si
    ret
OutNum: push    cx
    xor cx,cx
@@03:   xor dx,dx
    div bx
    push    dx
    inc cx
    or  ax,ax
    jnz @@03
    mov ax,' '-'0'
@@04:   push    ax
    inc cx
    cmp cx,5
    jb  @@04
@@05:   pop ax
    add al,'0'
    int 29h
    loop    @@05
    pop cx
    ret
Change: push    cx
    push    si
    dec cx
@@06:   mov ax,[si]
    test    ax,1
    jz  @@07
    mov ax,[si+2]
    mov [si],ax
@@07:   add si,2
    loop    @@06
    pop si
    pop cx
    ret
NewLine:mov al,10
    int 29h
    mov al,13
    int 29h
    ret
dwMas   dw  szMas dup(?)
    end start

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы