[TASM] Выделение из исходной строки подстроки символов заданной длины с указанного номера позиции - Assembler
Формулировка задачи:
Доброго времени суток!
Нужно написать программу (выделения из исходной строки подстроки символов заданной длины с указанного номера позиции.(ввод данных с клавиатуры)).
Выделения из исходной строки подстроки символов заданной длины я сделала, но как мне сделать так, чтобы прога выводила подстроку с указанного номера позиции не понимаю. Помогите, пожалуйста!!!
STACKS SEGMENT PARA STACK 'STACK' db 64 dup(?) STACKS ENDS DATA SEGMENT PARA 'DATA' buf db 50,?,50 dup(?) mes1 db 'Vvedite ishodnyu stroku:','$' mes2 db 'Vvedite dliny iskomoy podstroki:','$' mes3 db 'Vvedite nomer pozicii:','$' n db 3,?,3 dup(?) DATA ENDS CODE SEGMENT PARA 'CODE' ASSUME CS:CODE,DS: DATA,SS:STACKS start: MAIN PROC FAR mov ax,DATA mov ds,ax mov ah,09h ;выводим сообщение 1 mov dx,offset mes1 int 21H call enterr mov ah,0Ah; вводим исходную строку mov dx,offset buf int 21h mov ah,09h; выводим исходную строку mov bl,[buf+1h] add bl,02h xor bh,bh mov [buf+bx],'$' mov dx,offset buf+2h int 21H call enterr mov ah,09h;выводим сообщение 2 mov dx,offset mes2 int 21H call enterr mov ah,0ah;вводим длину искомой подцепочки mov dx,offset n int 21h xor cx,cx mov cl,[n+2] sub cx,30h xor ax,ax mov al,10 mul cl add al,[n+3] sub ax,30h mov [buf],al mov bl,[buf] call enterr mov ah,09h ;выводим подцепочку add bl,2h xor bh,bh mov [buf+bx],'$' mov dx,offset buf+2h int 21h call enterr mov ah,4ch mov al,0 int 21h MAIN endp enterr proc near mov ah,02h mov dx,10 int 21h mov dx,13 int 21h ret enterr endp CODE ends end start
Решение задачи: «[TASM] Выделение из исходной строки подстроки символов заданной длины с указанного номера позиции»
textual
Листинг программы
msg db '123456789$' ..... mov dx, offser msg mov ah, 9 int 21h ;на экране будет 123456789 mov dx, offset msg+8 int 21h ;на экране будет 89
Объяснение кода листинга программы
В данном коде на языке Assembler происходит следующее:
- Переменная
msg
содержит строку символов '123456789$'. - Переменная
dx
используется для хранения смещения (оффсета) строкиmsg
. - Переменная
ah
используется для передачи номера функции в систему. - Команда
int 21h
используется для вызова функции обработки строк символов в системе. При этом на экране отображается строка '123456789'. - Затем переменная
dx
изменяется, чтобы указать на следующий символ в строкеmsg
. - Команда
int 21h
снова используется для вызова функции обработки строк символов в системе. При этом на экране отображается строка '89'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д