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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 00:26   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки

Написать программу,которая вводит строку с клавиатуры:если длина строки равна четному числу,то программа заканчивает свою работу,иначе в конец строки добавляется точка, заранее благодарен
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 05.04.2012, 11:26   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

за что благодарны то, Вы ничего не просили...

а по сути, берите функцию 0aH прерывания DOS (int 21h) - это буферизированный ввод:
Цитата:
Код:
 Expects: AH    0aH
          DS:DX address of a length-prefixed input buffer (see below)
          ──────────────────────────────────────────────────────────────────
 Returns: DS:DX the buffer contains input terminated with CR (ASCII 13H) and
                identifies the length of the actual input
          ──────────────────────────────────────────────────────────────────
    Info: Reads a line of text (up to 254 bytes) from the Standard Input
          into a caller-supplied buffer.  You must specify the maximum
          input length.

          On entry, the buffer at DS:DX must be set up as:
           ┌───┬───┬───┬───┬───┬───┬─ -
           │max│ ? │ ?   ?   ?   ?   ?    max is maximum acceptable input
           └───┴───┴───┴───┴───┴───┴ -    (range: 1 to 254)
          On exit, the buffer is filled:
           ┌───┬───┬───┬───┬───┬───┬─ -
           │max│len│ H   I  0dH           len is actual length of input,
           └───┴───┴───┴───┴───┴───┴ -    less the terminating CR (e.g.,
          02H)

          Characters are read from the Standard Input up to a CR
          (ASCII 0dH) or up to the value of max-1.  If max-1 is reached,
          the console bell rings (beeps) for each character until Enter
          (CR) is read.

          The second byte of the buffer is filled with the actual length of
          the input, less the terminating CR.  The final character in the
          buffer is always CR (which is not counted in the length byte).
и пользуйтесь ей.
что характерно, длину строки сама функция вернёт (см. второй байт от начала)

в коде вызов может выглядеть примерно так (я взял в качестве примера чужой код из раздела Ассемблер):
Код:
data segment 
    welcome db "Введите текст:", 13, 10, '$' 
    buftext db 80, 0, 80 dup(0) 
data ends 
 
stck segment stack 
    dw 128 dup(0) 
stck ends 
 
code segment 
start: 
    ; зададим привязку сегментных регистров 
    assume cs: code, ds: data, ss: stck 
    mov ax, data 
    mov ds, ax 
    mov es, ax 

    ; текст приглашения на ввод
    lea dx, welcome 
    call print
                           
    ; введення рядка 
    mov ah, 0ah 
    lea dx, buftext
    int 21h      
    ; цикл перев_рки символ_в та п_драхунку 
    lea si, buftext+1 
    mov cl, [si] 

  ... тут анализ длины строки и выполнение необходимых действий ...

    exit: 
    ; ожидание нажатия любой клавиши 
    mov ah, 0h  
    int 16h 
    ; выход в операционную систему
    mov ah, 4ch  
    int 21h 

    ; процедура вывода текста на экран 
    print proc 
        mov ah, 9 
        int 21h 
        ret     
    print endp 

code ends 
end start
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод строки неизвестной длины Alt Общие вопросы C/C++ 5 27.02.2011 14:34
Программа считает пробел за конец строки AxenicX Общие вопросы C/C++ 3 12.11.2009 10:16
Программа на циклы и строки, на языке C KuPnu4 Помощь студентам 2 05.03.2009 23:09
КАК сделать ввод строки на русском языке vicdon Паскаль, Turbo Pascal, PascalABC.NET 4 05.11.2007 07:54