Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2014, 18:51   #1
thedoctor
Пользователь
 
Регистрация: 29.11.2013
Сообщений: 10
По умолчанию Найти в коде строчу,где мы вводим цифру и тот ищет в строчке слово

Здравствуйте, дамы и господа Программисты. Тут короче такое дело,я в программирвании на ассемблере не очень(даже скажем так,вообще нуль), и тут друг написал мне код(для экзамена), смысл задачи вот в чем:
Пишем строку, потом пишем цифру(от 0 до 9) и на следующей строке он выводит те слова,у которого количество букв равна цифре,введеной нами,например:
"Type string: Hello World, My name is smart boy and i am from Russia.
Type number(from 0 to 9): 2
Result: My is am"
А вот вопрос в чем,в какой строчке кода компилятор узнает,скажем так,какое количество букв нужно искать.
Код:
.MODEL small                                  
.STACK 100h
data segment
  str1 db 50 dup ('$')                        
  str2 db 50 dup ('$')
  mess1 db "type string: $"
  mess2 db "type number from 0 to 9: $"
  mess3 db "  result: $"
  a dw 0
data ends
code segment
  assume ds:data, cs:code
  start:
    mov ax, data
    mov ds, ax
    mov ah, 0ch
    int 21h
    mov ah, 09h
    mov dx, offset mess1
    int 21h
   
    mov ah, 3fh
    mov dx, offset str1
    int 21h
    
    mov ah, 09h
    mov dx, offset mess2
    int 21h
  
    mov ah, 01h
    int 21h
    mov bl, al
    sub bl, 48
    mov bh, 0
  
    mov cx, 0             
    mov dx, 0
    mov di, 0
    mov si, 0
    mov ah, 0
    mov al, 0



M:  mov si, dx
F1: cmp str1[si], ' '
    jne E1 
    add si, 1
    jmp F1 


E1: mov cx, si
    mov si, cx 
F2: cmp str1[si], ' '    
    je E2  
    cmp str1[si], 13 
    je E2     
    add si, 1 
    jmp F2

E2: mov dx, si

    mov ax, dx
    sub ax, cx

    cmp ax, bx
    jne U2   
    mov si, cx
    mov di, a                 
F4: cmp si, dx
    je E4 
    mov ah, str1[si] 
    mov str2[di], ah
    add si, 1
    add di, 1
    jmp F4

E4: mov ah, ' ' 
    mov str2[di], ah
    add di, 1 
    mov a, di

U2: mov si, dx
    cmp str1[si], 13
    je R 
    jmp M

R:  mov ah, 09h
    mov si, 0
    mov mess3[si], 13
    mov si, 1
    mov mess3[si], 10
    mov dx, offset mess3
    int 21h

    mov dx, offset str2 
    int 21h     

    mov ah, 07h
    int 21h 
    mov ah, 4ch
    mov al, 00h 
    int 21h 
code ends
end start
thedoctor вне форума Ответить с цитированием
Старый 21.01.2014, 20:09   #2
Klient.by
 
Регистрация: 20.01.2014
Сообщений: 7
По умолчанию

mov ah, 01h
int 21h
mov bl, al
sub bl, 48 ; bl = 2
mov bh, 0
Klient.by вне форума Ответить с цитированием
Старый 21.01.2014, 23:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а сравнивается, похоже, вот здесь:
Код:
    cmp ax, bx     ; в ax длина очередного слова, в bx - введённая нами длина
    jne U2           ; если длины не равны - выполнить переход на U2
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если слово содержит цифру, то заключить ее в скобки.. moto125 Помощь студентам 10 25.02.2012 20:35
не могу найти обьяснение в строчке программы vb Юлия-студентка Помощь студентам 7 25.06.2010 11:02
Функция которая ищет слово в строке? VintProg Общие вопросы Delphi 17 05.06.2010 13:22
Слово/цифру разделить на части 0mega Microsoft Office Excel 5 31.01.2010 22:46
Как обратиться к ячейке используя присвоенные имена к столбцу или строчке в коде VBA? Neo007 Microsoft Office Excel 6 22.01.2009 12:28