Отрицательные числа, подсчёт - 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: $'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д