Перенести все элементы равные K в конец - Assembler

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

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

Перенести все элементы равные K в конец,в остальном-порядок расположения элементов меняться не должен Написал код на СИ, но не могу написать на ассемблере Нужно по коду Си написать на ассемблере
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>

int main(void)
{
    int mas[20]; 
    int k;
    int size=5;
    printf("Input K");
    scanf("%d",&k);
    for ( int i=0; i < size; i++) mas[i] = rand()%10;//Заполняем случайными числами
    for ( int i=0; i<size; i++) printf("%i ",mas[i]);//Выводим массив
     printf("\n");
    
    for(int i=0; i<size; i++) 
    {
        if (mas[i]==k)
        {
            for (int j = i; j < size; j++) //запускаем цикл, чтобы передвинуть каждый элемент на одну позицию
            {
                mas[j] = mas[j + 1];
            }
            mas[size - 1] = k; // в последний пишем k
           
        }
    }
    for( int i=0; i < 5; i++) 
    printf("%i ", mas[i]);//Выводим массив на экран
    printf("\n");
}

Решение задачи: «Перенести все элементы равные K в конец»

textual
Листинг программы
model   tiny
.code
.386;
szMass  equ 10
org 100h
begin:
    mov ah,9
    lea dx,dbMass
    int 21h
    xor ax,ax
    mov es,ax
    mov eax,es:[46Ch]
    mov ebx,10
    xor si,si
    mov cx,szMass
@@01:   xor edx,edx
    div ebx
    mov dwMass[si],dx
    add si,2
    loop    @@01
    mov cx,szMass
    xor si,si
@@02:   mov ax,dwMass[si]
    or  al,'0'
    int 29h
    mov al,' '
    int 29h
    add si,2
    loop    @@02
    mov ah,9
    lea dx,dbEnter
    int 21h
@@03:   xor ax,ax
    int 16h
    cmp al,'0'
    jb  @@03
    cmp al,'9'
    ja  @@03
    int 29h
    and ax,0fh
    mov cx,szMass-1
    xor si,si
@@04:   cmp ax,dwMass[si]
    jnz @@06
    push    cx
    push    si
;   dec cx
@@05:   mov bx,dwMass[si+2]
    mov dwMass[si],bx
    add si,2
    loop    @@05
    mov dwMass[si],ax
    pop si
    pop cx
    sub si,2
@@06:   add si,2
    loop    @@04
    mov ah,9
    lea dx,dbMass
    int 21h
    mov cx,szMass
    xor si,si
@@07:   mov ax,dwMass[si]
    or  al,'0'
    int 29h
    mov al,' '
    int 29h
    add si,2
    loop    @@07
    xor ax,ax
    int 16h
    ret
dbEnter db  10,13,'Enter K:$'
dbMass  db  10,13,'Massiv:$'
dwMass  dw  szMass dup(?)
    end begin

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

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