IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> ввод двух строк, помогите, очень нужна Ваша помощь
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: катя

Репутация: -  0  +


Ввести с клавиатуры две строки. Сравнить их. Вывести на экран номер начала второй сироки первой.

я немножко начала, что смогла, подскажите пожалуйста как дальше?(, просто как сравнивать и выводить номер начала второй строки в первой не знаю, знаю операция сравнения, это cmp, но как делать не знаю(




вот я здесь нарисала программу, но не поиму как вывести начало второй строки в первой, не поможете???

data segment

str1 db 50, 51 dup (?)
str2 db 50, 51 dup (?)
msg1 db 'Vvedite 1 str: $'
msg2 db 'Vvedite 2 str: $'
bol db 'sroka str1 bolshe $'
men db 'stroka str2 bolshe $'
pav db 'stoku odunakov dlunu, no paznue $'
pav1 db 'stoku odunakov dlunu, odinakovu $'
string label byte
as db 1
data ends
code segment
assume cs: code, ds:data

start:

mov ax, data
mov ds, ax
;перемещаю курсор на следующую строку
mov dh, as
mov dl, 00
mov bh, 00
mov ah, 02h
int 10h
inc as

mov ah, 09h
lea dx, msg1 ; введите 1 строку
int 21h

lea dx, str1 ;буфер
mov ah, 0Ah
int 21h

;перемещаю курсор на следующую строку
mov dx,200h
mov bh, 00
mov ah, 02h
int 10h
inc as

mov ah, 09h ; введите для 2 строки
lea dx, msg2
int 21h


lea dx, str2 ; буфер
mov ah, 0Ah
int 21h






mov bl, byte ptr str1+1

mov bh, byte ptr str2+1
cmp bl, bh ;сравниваю байтик находения реально введенных букв
je z
jl f

;перемещаю курсор на следующую строку
mov dh, as
mov dl, 00
mov bh, 00
mov ah, 02h
int 10h
inc as

mov ah, 09h
lea dx, bol
int 21h
jmp m4

f:
;перемещаю курсор на следующую строку
mov dh, as
mov dl, 00
mov bh, 00
mov ah, 02h
int 10h
inc as
mov ah, 09h
lea dx, men
int 21h
jmp m4

Z:
mov cx,0
mov cl, bl
lea si, str1+2
lea di, str2+2
h:
mov ah, byte ptr [si]
mov al, byte ptr [di]
inc si
inc di
cmp ah, al
jne prov
loop h
;перемещаю курсор на следующую строку
mov dh, as
mov dl, 00
mov bh, 00
mov ah, 02h
int 10h
inc as

mov ah, 09h
lea dx, pav1 ; равной длины и одинаковы
int 21h
jmp m4

prov:
;перемещаю курсор на следующую строку
mov dh, as
mov dl, 00
mov bh, 00
mov ah, 02h
int 10h
inc as
mov ah, 09h ; строки равной длины, но разные
lea dx, pav
int 21h

m4:

lea dx, str1 ;буфер
mov ah, 0Ah
int 21h



mov ax,4C00h ; Код завершения 0
int 21h ; Выход в DOS
code ends
end start


Сообщение отредактировано: катрушечка) -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 17:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name