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

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

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

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

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

textual
Листинг программы
MODEL small
STACK 256
 
.data
Coname     db  'Space Explores Ins $'
prline     db  20 dup('$')
 
.code
assume ds:@data,es:@data
main:
       mov   ax,@data    ;привязка ds и es
       mov   ds,ax       ;к сегменту
       mov   es,ax       ;данных
 
       lea   dx,Coname   ;вывод полученной
       mov   ah,09h      ;строки
       int   21h
 
       cld               ;DF:=0
       lea   di,prline   ;в di-адрес
       add   di,5        ;5-го элемента
       mov   al,'x'      ;первый символ
       stosb             ;пересылка
       mov   al,'y'      ;второй символ
       stosb             ;пересылка
 
       lea   dx,prline+5   ;вывод полученной
       mov   ah,09h        ;строки
       int   21h
 
       mov   ax,4c00h    ;завершение
       int   21h         ;программы
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