Найти в строке символ 'h', заменить его на ноль. Перенести эту строку в основной сегмент данных. - Assembler

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

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

в вспомогательном сегменте данных задана строка символов 'abcdefghkl'. найти в этой строке символ 'h', заменить его на ноль. перенести эту строку в основной сегмент данных. вывести сформированную строку на экран. помогите пожалуйстста, кто может

Решение задачи: «Найти в строке символ 'h', заменить его на ноль. Перенести эту строку в основной сегмент данных.»

textual
Листинг программы
data segment
    str2 db 20 dup('$')
data ends
 
ext segment
    str1 db 'abcdefghkl'
    len1 = $-str1
ext ends
      
stk segment stack
    db 256 dup(?)
stk ends
 
code segment
assume cs:code, ds:data, es:ext, ss:stk
start:
mov ax,data
mov ds,ax
 
mov ax,ext
mov es,ax
 
mov al,'h'
lea di,str1
mov cx,len1
repne scasb
jnz skip
 
mov byte ptr es:[di-1],30h
 
skip:
lea si,str2
lea di,str1
mov cx,len1
action:
mov al,byte ptr es:[di]
mov byte ptr ds:[si],al
 
inc si
inc di
loop action
 
mov ah,09h
lea dx,str2
int 21h
 
exit:
mov ah,4Ch
mov al,00h
int 21h
code ends
end start

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Подготовка сегментов данных и стека.
  2. Замена всех вхождений символа 'h' на ноль в строке из сегмента EXT, используя стек для временного хранения символов.
  3. Перенос измененной строки в сегмент DATA.
  4. Вывод строки на экран с помощью функции 21h.
  5. Завершение работы программы с помощью функции 4Ch.

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

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