ввод двух строк, помогите, очень нужна Ваша помощь |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
ввод двух строк, помогите, очень нужна Ваша помощь |
катрушечка) |
28.05.2009 18:25
Сообщение
#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 Сообщение отредактировано: катрушечка) - 29.05.2009 16:20 |
Текстовая версия | 23.09.2024 13:17 |