Команды обработки строк - Assembler
Формулировка задачи:
Доброго времени суток. Ну помогите, будьте так добры. нужно написать программу в турбо ассемблере
Имеются следующие определения:
Используя команды обработки строк, выполнить:
Сохранение содержимого регистра AX в области по адресу PRLINE +5
По программе есть такой вариант :
Листинг программы
- DATASG SEGMENT PARA
- CONAME DB 'SPASE EXPLORES INS'
- PRLINE DB 20 DUP('')
Листинг программы
- 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
Объяснение кода листинга программы
- MODEL small - это директива, которая указывает на модель памяти, используемую в программе. В данном случае используется модель small, что означает, что данные и код программы будут размещены в одном сегменте.
- STACK 256 - это директива, которая определяет размер стека в 256 байт.
- .data - это сегмент данных. Здесь определяются две переменные: Coname и prline.
- Coname db 'Space Explores Ins $' - это определение строки Coname, которая содержит текст
Space Explores Ins $
. - prline db 20 dup('$') - это определение строки prline, которая содержит 20 символов
$
. - .code - это сегмент кода. Здесь находится точка входа в программу - main.
- assume ds:@data,es:@data - это директива, которая указывает компилятору, что сегменты данных и кода совпадают.
- main: - это точка входа в программу.
- mov ax,@data - это команда, которая привязывает сегменты данных и кода к регистру ax.
- mov ds,ax - это команда, которая устанавливает сегмент данных равным сегменту кода.
- mov es,ax - это команда, которая устанавливает сегмент стека равным сегменту кода.
- lea dx,Coname - это команда, которая загружает в регистр dx адрес строки Coname.
- mov ah,09h - это команда, которая устанавливает код функции, которую нужно вызвать, равным 09h.
- int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра dx.
- cld - это команда, которая устанавливает флаг направления в 0, что означает, что при последующих операциях чтения или записи будет использоваться прямая адресация.
- lea di,prline - это команда, которая загружает в регистр di адрес строки prline.
- add di,5 - это команда, которая увеличивает значение регистра di на 5.
- mov al,'x' - это команда, которая загружает в регистр al символ 'x'.
- stosb - это команда, которая записывает символ из регистра al в память по адресу, содержащемуся в регистре di.
- mov al,'y' - это команда, которая загружает в регистр al символ 'y'.
- stosb - это команда, которая записывает символ из регистра al в память по адресу, содержащемуся в регистре di.
- lea dx,prline+5 - это команда, которая загружает в регистр dx адрес строки prline, смещенный на 5 символов вправо.
- mov ah,09h - это команда, которая устанавливает код функции, которую нужно вызвать, равным 09h.
- int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра dx.
- mov ax,4c00h - это команда, которая загружает в регистр ax значение 4c00h, что означает конец программы.
- int 21h - это команда, которая вызывает функцию с кодом 09h, которая выводит на экран содержимое регистра ax.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д