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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 21:22   #1
Forever_young
 
Регистрация: 10.11.2009
Сообщений: 5
По умолчанию Ввод с клавиатуры,верхний и нижний регистр

всем доброго дня!
подскажите пожалуйста как можно будет реализовать вот такую задачу:
Вводятся "A"..."Z","a"..."z"остальные игнорируются.Выводится введённая буква и соответствующая буква в другом регистре.
Forever_young вне форума Ответить с цитированием
Старый 10.11.2009, 22:55   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Вводишь символ ( ф-ция 08 int 21h) если это "A"..."Z","a"..."z", значит выводишь его (ф-ция 02 int 21h), переводишь его в др регистр и выводишь его.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 11.11.2009, 11:04   #3
Forever_young
 
Регистрация: 10.11.2009
Сообщений: 5
По умолчанию

Goodwin98
а как непосредственно перевести в другой регистр???....
Forever_young вне форума Ответить с цитированием
Старый 11.11.2009, 11:21   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Посмотри/поищи таблицу ASCII симолов.
Коды заглавных латинских букв отличаются от строчных на 20h.
Т.е. 'A' == 40h, 'a' == 60h.
Значит чтобы перевести из прописной в строчную, нужно прибавить к коду символа 20h, а чтобы перевести из из строчной в прописную - вычесть 20h из этого кода.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 11.11.2009, 20:05   #5
Forever_young
 
Регистрация: 10.11.2009
Сообщений: 5
По умолчанию

вообщем попытался написать, где то есть ошибки, не могу понять где...
помогите пожалуйста найти ошибку:
PHP код:
assume CScodeDSdata

code segment
begin
:

        
mov AXdata
        mov DS
AX

;Ввод очередного символа
next
:
        
mov AH08h     ;Используем функцию ввода символа без эха
        int 21h             
                        cmp AL
13      код клавиши Enter
        je next 
просто переходим к вводу другого символа.
        
cmp AL44h     ;Проверяемнажата ли клавиша <F10с ;кодом 44h
        jne label0      
;Если не <F10>, приступаем к выводу кода,
        
jmp exit        ; иначе завершаем программу
        
label0
                        mov ascii
AL   ;Сохраним введенный ASCII код в сегменте данных
                        cmp ascii
40   ;больше кода 40?
                        
ja label1
                        jmp next
label1

                        
cmp ascii5B
                        ja label2
                        cmp ascii
60
                        ja label 3
                        jmp next
label2
:              
                        
add ascii20h
                        jmp vivod
label3
:             
                        
cmp ascii7B
                        ja label4
                        jmp next
label4
:
                        
sub ascii20h
                        jmp vivod                           
                         
vivod
:
        
mov AH02h     ;Выведем символсоответствующий коду
        mov DL
ascii
        int 21h
exit:              
        
mov AH08h ;Ждем нажатия любой клавиши
        int 21h
        mov AX
4C00h ;Используя средства DOSзавершаем программу
        int 21h
code ends

data segment

data ends

stk segment stack
  dw 128 dup 
(0)
stk ends

end begin 

Forever_young вне форума Ответить с цитированием
Старый 11.11.2009, 21:35   #6
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

где у вас объявление переменной ascii ?
почему у некоторых чисел нет h в конце?
почему объявление label0 без двоеточия?
зачем в строке "ja label 3" пробел в имени метки?
и при чем тут php?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 11.11.2009, 23:11   #7
Forever_young
 
Регистрация: 10.11.2009
Сообщений: 5
По умолчанию

Цитата:
assume CS: code, DS: data

code segment
begin:

mov AX, data
mov DS, AX

;Ввод очередного символа
next:
mov AH, 08h ;Используем функцию ввода символа без эха
int 21h
cmp AL, 13 ; код клавиши Enter
je next ; просто переходим к вводу другого символа.
cmp AL, 44h ;Проверяем, нажата ли клавиша <F10> с кодом 44h
jne label0 ;Если не <F10>, приступаем к выводу кода,
jmp exit ; иначе завершаем программу

label0:
mov ascii, AL ;Сохраним введенный ASCII код в сегменте данных
cmp ascii, 40h ;больше кода 40?
ja label1
jmp next
label1:
cmp ascii, 5Bh
ja label2
cmp ascii, 60h
ja label3
jmp next
label2:
add ascii, 20h
jmp vivod
label3:
cmp ascii, 7Bh
ja label4
jmp next
label4:
sub ascii, 20h
jmp vivod

vivod:
mov AH, 02h ;Выведем символ, соответствующий коду
mov DL, ascii
int 21h
exit:
mov AH, 08h ;Ждем нажатия любой клавиши
int 21h
mov AX, 4C00h ;Используя средства DOS, завершаем программу
int 21h
code ends

data segment
ascii db 0
data ends

stk segment stack
dw 128 dup (0)
stk ends

end begin ;

исправил, вот только программа отказывается работать как нужно всего лишь показывает введённый символ и при последующем нажатии закрывается
Forever_young вне форума Ответить с цитированием
Старый 11.11.2009, 23:17   #8
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Во-первых для выделения кода лучше пользоваться кнопкой с изображением #
Цитата:
всего лишь показывает введённый символ и при последующем нажатии закрывается
А где хоть какой-то намек, что она должна принимать еще символ, после вывода первого?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 11.11.2009, 23:27   #9
Forever_young
 
Регистрация: 10.11.2009
Сообщений: 5
По умолчанию

Цитата:
Во-первых для выделения кода лучше пользоваться кнопкой с изображением #
ок) спасиб а то искал-не мог найти
Цитата:
А где хоть какой-то намек, что она должна принимать еще символ, после вывода первого?
о..это не надо...что то я перепутал..((
вот что интересует "вот только программа отказывается работать как нужно всего лишь показывает введённый символ "
и возможен ли ввод маленькой буквы???
Forever_young вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод с клавиатуры Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 15.03.2020 14:34
Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)? Diego__ Microsoft Office Word 22 07.03.2010 21:49
Как в lable задать степень (нижний и верхний регистр) Polotenchik Общие вопросы Delphi 17 17.07.2009 23:30
Перевод имени в верхний регистр MalCer Общие вопросы Delphi 6 31.03.2009 13:14
Используя типизированную константу множество преоброзовать все маленькие русские буквы в верхний регистр VITIY Паскаль, Turbo Pascal, PascalABC.NET 20 21.11.2008 19:16