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

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

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

> Обработка символьной информации, с помощью функций DOS
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

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


Вот задание: Ввести с клавиатуры две строки. Сравнить их. Вывести на экран какая из строк больше и насколько. Какие мысли есть по реализации данной программы? Как осуществить сравнение строк?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Мне кажется, что не происходит вот это:

xor ax, ax; не найдено, вернем 0
; Если цикл FindFirstCh закончился - значит подстроки нет
jmp exit_proc
Нет... Проблема не тут. Замени вот эти 2 строки:
	test ax, 0
jnz not_found

на
	or ax, ax
jz not_found
и проверь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

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


Цитата(volvo @ 10.12.2008 23:56) *

Нет... Проблема не тут. Замени вот эти 2 строки:
	test ax, 0
jnz not_found

на
	or ax, ax
jz not_found
и проверь...

Идельно! Всё работает! Недеюсь больше по этой программе вопросов не возникнет)

Я решил в первой программе, которая определяла какая из двух строк больше и насколько, решил изменить функцию ввода с 3Fh на 0ah, я же теперь знаю особенности этой функции в отличии от функции 3Fh...
Всё бы ничего, только вот вывод цифры отказывается работать...
Вот собственно сама переделанная программа:

data segment
inpStr1 db 100
inpStrLen1 db ?
inpStrDat1 db 100 dup(?)
inpStr2 db 100
inpStrLen2 db ?
inpStrDat2 db 100 dup(?)

mes1 db 13, 10, 'First is longer!$'
mes2 db 13, 10, 'Second is longer!$'
mes3 db 13, 10, 'Enter the first string: $'
mes4 db 13, 10, 'Enter the second string: $'
outstr db 13, 10, '$'
count_of_digits dw 2
data ends

code segment
assume cs:code, ds:data

start: mov AX, data
mov DS, AX

lea dx,mes3
mov ah,09h
int 21h
lea dx,inpStr1
mov ah,0ah
int 21h


lea dx,mes4
mov ah,09h
int 21h
lea dx,inpStr2
mov ah,0ah
int 21h

xor cx,cx
mov cl,inpStrLen2

cmp cl, inpStrLen1
jge m2

xor cx,cx
mov cl,inpStrLen1
sub cl,inpStrLen2
mov al, cl

call writeDEC

lea dx,mes1
mov ah,09h
int 21h

jmp finish

m2:

xor cx,cx
mov cl,inpStrLen1
sub cl,inpStrLen2
mov al,cl

call writeDEC



lea dx,mes2
mov ah,09h
int 21h


finish: mov ax,4c00h
int 21h

writeDEC proc

push ax
push bx
push cx
push dx

xor cx, cx
mov bx, 10

next_digit:
xor dx, dx
div bx
push dx
inc cx
or ax, ax
jnz next_digit

next_char:
pop ax
add al, '0'
int 29h
loop next_char

pop dx
pop cx
pop bx
pop ax
ret
writeDEC endp

code ends
end start


по-видимому, что-то с регистрами напутал...или стек?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Rocket   Обработка символьной информации   5.10.2008 4:11
мисс_граффити   Что значит "строка больше"? По длине?   6.10.2008 23:22
Rocket   Что значит "строка больше"? По длине? …   7.10.2008 0:28
Lapp   Та по длине походу... сравнивать количество символ…   7.10.2008 3:02
Rocket   При чем тут загадка? Не понимаю. Если по длине,…   7.10.2008 3:23
Lapp   В ассемблере есть функция length(s)?...в мои позн…   7.10.2008 3:29
мисс_граффити   Ввод строк сделал? Проблемы только с определением …   7.10.2008 18:37
Rocket   Ввод строк сделал? Проблемы только с определением…   7.10.2008 21:09
мисс_граффити   Ну например... .model small .stack 512 .data buf1 …   8.10.2008 0:26
Rocket   Ну например... всё отлично, большое спасибо) вот т…   9.10.2008 3:38
мисс_граффити   У меня работает все. Да ты по сути ничего в этой с…   9.10.2008 3:54
Rocket   У меня работает все. Да ты по сути ничего в этой …   10.10.2008 3:21
volvo   Rocket, Чем компилируешь, если не секрет? Приведе…   10.10.2008 3:43
Rocket   Rocket, Чем компилируешь, если не секрет? Привед…   11.10.2008 1:31
volvo   А может, ты его просто не видишь? :wink: Alt+F5 н…   11.10.2008 1:51
Rocket   А может, ты его просто не видишь? :wink: Alt+F5 …   11.10.2008 2:01
Rocket   Всё-таки как организовать вывод сообщеия о том нас…   13.11.2008 5:20
volvo   Ну, и кто тебе сказал, что lea dx, X преобразует т…   13.11.2008 6:18
Rocket   А если у нас не 10 символом максимальный размер, а…   28.11.2008 2:31
volvo   Значит, придется написать процедуру вывода десятич…   28.11.2008 3:12
Rocket   Значит, придется написать процедуру вывода десятич…   28.11.2008 4:02
volvo   Комментарии добавлены в предыдущее сообщение...   28.11.2008 5:10
Rocket   Комментарии добавлены в предыдущее сообщение... …   5.12.2008 3:25
volvo   Вот тебе программа, которая это делает... В виде п…   7.12.2008 16:24
Rocket   Вот тебе программа, которая это делает... У меня …   9.12.2008 4:36
volvo   1) Использование "offset". Я так полага…   9.12.2008 5:08
Rocket   Всё стало на свои места! Спасибо:) Так, вот ещ…   10.12.2008 4:24
volvo   1) процедура show_ax для чего предназначена? мы в…   10.12.2008 4:46
Rocket   Да, скорее всего надо в процедуре получать через …   10.12.2008 16:42
volvo   А я переделал вот так: findSStr proc ; Ищем первы…   10.12.2008 17:09
Rocket   Вот последняя вариация программы: data segment en…   11.12.2008 3:20
volvo   Нет... Проблема не тут. Замени вот эти 2 строки: …   11.12.2008 3:56
Rocket   Нет... Проблема не тут. Замени вот эти 2 строки: …   11.12.2008 4:42
volvo   Ты просто забыл кое что (например, очистить AX пер…   11.12.2008 5:39
Rocket   Ты просто забыл кое что (например, очистить AX пер…   12.12.2008 2:40


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

 





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