Отрицательные числа, подсчёт - Assembler

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

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

Нужно разработать программу [Fasm] В которой задан массив к примеру (3, 5, -3, -9, 7, 12) 1. Заменить отрицательные числа НУЛЯМИ. 2. Посчитать число замен. -------ввод------- 3, 5, -3, -9, 7, 12 -------вывод------- 3, 5, 0, 0, 7, 12 число замен: 2 [Программный код должен быть кратким, без лишнего и с комментариями] Думаю будет полезен много кем так как такие операции встречаются часто!

Решение задачи: «Отрицательные числа, подсчёт»

textual
Листинг программы
dword_sz    =   4
    org 100h
    mov esi, array
    mov ecx, arr_sz
    mov dx, src
    mov ah,9
    int 21h
    call    out_arr
    xor ebx, ebx
    xor edx, edx
 
@l: cmp [esi], edx
    jns @F
    mov [esi], edx
    inc ebx
@@: add esi, dword_sz
    loop    @l
    mov dx, res
    mov ah,9
    int 21h
    mov esi, array
    mov ecx, arr_sz
    call    out_arr
    mov dx, cnt
    mov ah,9
    int 21h
    mov eax, ebx
    call    out_dec
    ret
;
out_arr:pusha
@1: lodsd
    test    eax,eax
    jns @F
    mov ebx,eax
    neg ebx
    mov al, '-'
    int 29h
    mov eax, ebx
@@: call    out_dec
    mov al, 20h
    int 29h
    loop    @1
    popa
    ret
;
out_dec:pusha
        mov     ebx, 10
        xor ecx,ecx
@@out_dec:
        xor     edx, edx
        idiv    ebx
        or  dx, 30h            ;остаток от деления
        push    dx
        inc     cx                ;считаем кол-во цифр
        or  eax, eax             ;пока не 0 - делим
        jnz     @@out_dec
@@3:    pop ax
        int 29h
        loop    @@3
        popa
        ret
 
array:  dd  3, 5, -3, -9, 7, 12
arr_sz  =   ($-array)/dword_sz
src:    db  'Source: $'
res:    db  0Dh,0Ah,'Result: $'
cnt:    db  0Dh,0Ah,'Count:  $'

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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