Команды обработки строк - Assembler

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

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

Доброго времени суток. Ну помогите, будьте так добры. нужно написать программу в турбо ассемблере Имеются следующие определения:
Листинг программы
  1. DATASG SEGMENT PARA
  2. CONAME DB 'SPASE EXPLORES INS'
  3. PRLINE DB 20 DUP('')
Используя команды обработки строк, выполнить: Сохранение содержимого регистра AX в области по адресу PRLINE +5 По программе есть такой вариант :
Листинг программы
  1. MASM
  2. MODEL small
  3. STACK 256
  4. .data
  5. Coname db 'Space Explores Ins $'
  6. prline db 20 dup (?)
  7. strlen dw 20
  8. outstring dw (?)
  9. .code
  10. assume ds:@data,es:@data
  11. main:
  12. mov ax,@data ;привязка ds и es
  13. mov ds,ax сегменту
  14. mov es,ax ;данных
  15. cld ;DF:=0
  16. lea di,prline di-адрес
  17. add di,5 ;5-го элемента
  18. mov al,'x' ;первый символ
  19. stos prline[5] ;пересылка
  20. mov al,'y' ;второй символ
  21. stos prline[6] ;пересылка
  22. lea dx,prline ;вывод полученной
  23. mov ah,09h ;строки
  24. int 21h
  25. mov ax,4c00h ;завершение
  26. int 21h ;программы
  27. end main

Решение задачи: «Команды обработки строк»

textual
Листинг программы
  1. MODEL small
  2. STACK 256
  3.  
  4. .data
  5. Coname     db  'Space Explores Ins $'
  6. prline     db  20 dup('$')
  7.  
  8. .code
  9. assume ds:@data,es:@data
  10. main:
  11.        mov   ax,@data    ;привязка ds и es
  12.        mov   ds,ax       сегменту
  13.        mov   es,ax       ;данных
  14.  
  15.        lea   dx,Coname   ;вывод полученной
  16.        mov   ah,09h      ;строки
  17.        int   21h
  18.  
  19.        cld               ;DF:=0
  20.        lea   di,prline   di-адрес
  21.        add   di,5        ;5-го элемента
  22.        mov   al,'x'      ;первый символ
  23.        stosb             ;пересылка
  24.        mov   al,'y'      ;второй символ
  25.        stosb             ;пересылка
  26.  
  27.        lea   dx,prline+5   ;вывод полученной
  28.        mov   ah,09h        ;строки
  29.        int   21h
  30.  
  31.        mov   ax,4c00h    ;завершение
  32.        int   21h         ;программы
  33. end main

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

  1. MODEL small - это директива, которая указывает на модель памяти, используемую в программе. В данном случае используется модель small, что означает, что данные и код программы будут размещены в одном сегменте.
  2. STACK 256 - это директива, которая определяет размер стека в 256 байт.
  3. .data - это сегмент данных. Здесь определяются две переменные: Coname и prline.
  4. Coname db 'Space Explores Ins $' - это определение строки Coname, которая содержит текст Space Explores Ins $.
  5. prline db 20 dup('$') - это определение строки prline, которая содержит 20 символов $.
  6. .code - это сегмент кода. Здесь находится точка входа в программу - main.
  7. assume ds:@data,es:@data - это директива, которая указывает компилятору, что сегменты данных и кода совпадают.
  8. main: - это точка входа в программу.
  9. mov ax,@data - это команда, которая привязывает сегменты данных и кода к регистру ax.
  10. mov ds,ax - это команда, которая устанавливает сегмент данных равным сегменту кода.
  11. mov es,ax - это команда, которая устанавливает сегмент стека равным сегменту кода.
  12. lea dx,Coname - это команда, которая загружает в регистр dx адрес строки Coname.
  13. mov ah,09h - это команда, которая устанавливает код функции, которую нужно вызвать, равным 09h.
  14. int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра dx.
  15. cld - это команда, которая устанавливает флаг направления в 0, что означает, что при последующих операциях чтения или записи будет использоваться прямая адресация.
  16. lea di,prline - это команда, которая загружает в регистр di адрес строки prline.
  17. add di,5 - это команда, которая увеличивает значение регистра di на 5.
  18. mov al,'x' - это команда, которая загружает в регистр al символ 'x'.
  19. stosb - это команда, которая записывает символ из регистра al в память по адресу, содержащемуся в регистре di.
  20. mov al,'y' - это команда, которая загружает в регистр al символ 'y'.
  21. stosb - это команда, которая записывает символ из регистра al в память по адресу, содержащемуся в регистре di.
  22. lea dx,prline+5 - это команда, которая загружает в регистр dx адрес строки prline, смещенный на 5 символов вправо.
  23. mov ah,09h - это команда, которая устанавливает код функции, которую нужно вызвать, равным 09h.
  24. int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра dx.
  25. mov ax,4c00h - это команда, которая загружает в регистр ax значение 4c00h, что означает конец программы.
  26. int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра ax.

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


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

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

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут