Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
OzonePC
1

Написать программу, которая спросит сначала Ваше имя

11.02.2014, 01:16. Просмотров 1574. Ответов 12
Метки нет (Все метки)


Задание такое :Написать программу, которая спросит сначала Ваше имя, после ввода имени спросит фамилию, а потом выведет: привет, введенная ФАМИЛИЯ введенное имя.

Добавлено через 6 минут
на FASM
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2014, 01:16
Ответы с готовыми решениями:

Написать программу, которая запрашивает ваше имя и рост в сантиметрах
Написать программу, которая запрашивает ваше имя и рост в сантиметрах, а затем отображает...

Написать программу которая выводит на экран 6 раз ваше имя. ПОМ,ПОЖ.
Написать программу которая выводит на экран 6 раз ваше имя. ПОМ,ПОЖ.

Написать программу, которая запрашивает ваше имя и рост в сантиметрах, а затем отображает информацию в вид
Добрый вечер, помогите пожалуйста с заданием по теме switch, не получается сделать, вместо русского...

Строка: Написать программу, которая читает строку и определяет, что это, Ваше имя, фамилия или отчество.
Написать программу, которая читает строку и определяет, что это, Ваше имя, фамилия или отчество....

12
Эксперт быдлокодинга
2085 / 519 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
11.02.2014, 11:52 2
Аптека, улица, фонарь.
Программа, FASM, консоль
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
format PE Console 4.0
entry Start
 
include 'win32a.inc'
 
section '.text' code readable executable
 
Start:
  invoke SetConsoleTitleA, conTitle
  test eax, eax
  jz Exit
 
  invoke GetStdHandle, [STD_OUTP_HNDL]
  mov [hStdOut], eax
 
  invoke GetStdHandle, [STD_INP_HNDL]
  mov [hStdIn], eax
  invoke   CharToOemA,mes,mes
  invoke WriteConsoleA, [hStdOut], mes, mesLen, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, 20, chrsRead, 0
  invoke   CharToOemA,mes1,mes1  
  invoke WriteConsoleA, [hStdOut], mes1, mesLen1, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, 20, chrsRead, 0
  invoke   CharToOemA,mes2,mes2  
  invoke WriteConsoleA, [hStdOut], mes2, mesLen2, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, 20, chrsRead, 0 
 
Exit:
  invoke  ExitProcess, 0
 
section '.data' data readable writeable
 
  conTitle    db 'Console', 0
  mes         db 0CEh,20h,0EEh,0E1h,0EBh,0E0h,0E4h,0E0h,0F2h,0E5h,0EBh,0FCh,20h,0EFh,0FBh,0F2h,\
0EBh,0E8h,0E2h,0EEh,0E3h,0EEh,20h,0F3h,0ECh,0E0h,21h,20h,0CFh,0EEh,0E7h,0E2h,0EEh,0EBh,0FCh,20h,\
0F3h,0E7h,0EDh,0E0h,0F2h,0FCh,20h,0F2h,0E2h,0EEh,0B8h,20h,0E8h,0ECh,'я',3Fh,20h,0dh,0ah,0
  mesLen      = $-mes
  mes1         db 0D2h,0E2h,0EEh,0FEh,20h,0F4h,0E0h,0ECh,0E8h,0EBh,0E8h,0FEh,20h,0F2h,0EEh,0E6h,\
0E5h,20h,0E4h,0EEh,0EBh,0E6h,0EDh,0FBh,20h,0EFh,0EEh,0ECh,0EDh,0E8h,0F2h,0FCh,\
20h,0E1h,0EBh,0E0h,0E3h,0EEh,0E4h,0E0h,0F0h,0EDh,0FBh,0E5h,20h,0EFh,0EEh,0F2h,\
0EEh,0ECh,0EAh,0E8h,2Eh,20h,0C2h,0E2h,0E5h,0E4h,0E8h,20h,0E8h,20h,0E5h,0B8h,2Eh,0dh,0ah,0
  mesLen1      = $-mes1  
  mes2         db 0CFh,0F0h,0E8h,0E2h,0E5h,0F2h,0F1h,0F2h,0E2h,0F3h,0FEh,20h,0F2h,0E5h,0E1h,"я",\
  21h,20h,0C2h,0E2h,0E5h,0E4h,0E5h,0EDh,0EDh,0E0h,"я",20h,0D4h,0C0h,0CCh,0C8h,0CBh,0C8h,0DFh,20h,\
  0E2h,0E2h,0E5h,0E4h,0E5h,0EDh,0EDh,0EEh,0E5h,20h,0E8h,0ECh,"я",2Eh, 0dh, 0ah,\
 0C4h,0EEh,0E2h,0E5h,0E4h,0E8h,20h,0ECh,0E5h,0EDh,"я",20h,0E4h,0EEh,20h,0F3h,0ECh,0E0h,2Eh,20h,0D2h,\
 0E2h,0EEh,0E9h,20h,"FASM.", 0dh, 0ah, 0
  mesLen2      = $-mes2      
 
  hStdIn      dd 0
  hStdOut     dd 0
  chrsRead    dd 0
  chrsWritten dd 0
 
  STD_INP_HNDL  dd -10
  STD_OUTP_HNDL dd -11
 
section '.bss' readable writeable
 
  readBuf  db 20 dup ?
 
section '.idata' import data readable
 
    library kernel32,'KERNEL32.DLL',user32, 'USER32.DLL'
       
    include 'API\kernel32.inc'
    include 'api\user32.inc'
0
Мотороллер
11.02.2014, 18:19
  #3

Не по теме:

Цитата Сообщение от Полный 30h Посмотреть сообщение
0CFh,0F0h,0E8h,0E2h,0E5h,0F2h,0F1h,0F2h,0E2h,0F3h,0FEh,20h,0 F2h,0E5h,0E1h,"я",\
* 21h,20h,0C2h,0E2h,0E5h,0E4h,0E5h,0EDh,0EDh,0E0h,"я",20h,0D4h ,0C0h,0CCh,0C8h,0CBh,0C8h,0DFh,20h,\
* 0E2h,0E2h,0E5h,0E4h,0E5h,0EDh,0EDh,0EEh,0E5h,20h,0E8h,0ECh," я",2Eh, 0dh, 0ah,\
*0C4h,0EEh,0E2h,0E5h,0E4h,0E8h,20h,0ECh,0E5h,0EDh,"я",20h,0E 4h,0EEh,20h,0F3h,0ECh,0E0h,2Eh,20h,0D2h,\
*0E2h,0EEh,0E9h,20h,"FASM.", 0dh, 0ah, 0
и не лень тебе было?:D

0
Полный 30h
11.02.2014, 18:21
  #4

Не по теме:

Мотороллер, просвещение вообще дело неблагодарное

1
Ушел с форума
Автор FAQ
14176 / 7060 / 831
Регистрация: 11.11.2010
Сообщений: 12,669
12.02.2014, 04:17 5
Полный 30h,
а почему не в юникоде?
0
Эксперт быдлокодинга
2085 / 519 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
12.02.2014, 06:54 6
Mikl___
1. Слабо представляю как оно в принципе
2. Нотепад два креста только в HEX переводит и то в последней версии ему буква "я" не понравилась
0
Ушел с форума
Автор FAQ
14176 / 7060 / 831
Регистрация: 11.11.2010
Сообщений: 12,669
12.02.2014, 08:16 7
Цитата Сообщение от Полный 30h Посмотреть сообщение
Слабо представляю как оно в принципе
макрос du (define unicode string), чтобы без проблем переводить ASCII-строки в UNICODE-строки ― превращает ASCII-символы латиницы в UNICODE-символы добавлением после кода символа нуля, а для кириллицы заменяет 0 на 4 и сдвигает код символа на 176, в конце UNICODE-строки ставится ноль, терминирующий строку. Всё, что требуется от пользователя ― после du написать строку в угловых скобках (обрати внимание, что после названия строки стоит двоеточие)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
du  macro string
local bslash
bslash = 0
irpc c,<string>
if bslash eq 0
    if '&c' eq "\";;управляющая последовательность символов
    bslash = 1
    elseif '&c' eq "ё"
    db 51h,4
    elseif '&c' eq "Ё"
    db 1,4
    elseif '&c' gt 127
    db ('&c'- 0B0h),4;;кириллица
    else
    dw '&c'          ;;латиница
    endif
else
bslash = 0
    if '&c' eq "n"    ;;  \n = новая строка
        DW 0Dh,0Ah
        elseif '&c' eq "\";;  \\ = обратная косая черта (\)
        dw '\'
        elseif '&c' eq "r";;  \r = возврат каретки
        dw 0Dh
        elseif '&c' eq "l";;  \l = LF
        dw 0Ah
        elseif '&c' eq "s"
        dw 20h
        elseif '&c' eq "c"
        dw 3Bh
        elseif '&c' eq "t";;  \t = табуляция*
        dw 9
    endif
endif
endm
dw 0
endm
.data
Hello: du <Приветствую тебя, о великий Полный 30h!>
1
Эксперт быдлокодинга
2085 / 519 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
12.02.2014, 08:55 8
Mikl___ Спасибо большое. Переведу в быдлокод, попробую. Если что то не получится обращусь.
0
Ушел с форума
Автор FAQ
14176 / 7060 / 831
Регистрация: 11.11.2010
Сообщений: 12,669
12.02.2014, 09:16 9
Полный 30h,
а зачем переводить? так используй - или в FASM не работает?
0
Эксперт быдлокодинга
2085 / 519 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
12.02.2014, 11:15 10
Mikl___, у меня две очереди. Одна из "надо сделать", одна из "надо попробовать". "надо попробовать" используется в качестве развлечения когда от "надо сделать" голова опухает.
Да, чуть не забыл. "надо сделать" в свою очередь делается когда есть физическая возможность, потому как я не кабинетный работник ни разу. Короче для меня программирование в плане нужности по жизни как и вышивание крестиком. Хочешь шьёшь, хочешь не шьёшь, хочешь вообще наплевал и забыл.
Инвестиция в нескучную, но пока ещё далёкую старость.
1
Эксперт быдлокодинга
2085 / 519 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
19.02.2014, 11:30 11
Mikl___, в FASM твоя конструкция так у меня и не заработала. Потому как оказалось, что моих знаний макросов не достаточно для понимания происходящего. Но гугл сжалился и подсказал что можно ограничиться полумерами. Чем, я и воспользовался.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
format PE Console 4.0
entry Start
 
    include 'win32a.inc'
    include 'encoding\win1251.inc.'
 
section '.text' code readable executable
 
Start:
  invoke GetStdHandle,-11
        mov [hStdOut],EAX
  invoke GetStdHandle,-10
        mov [hStdIn],EAX
        
  invoke SetConsoleTitleW, conTitle
  invoke WriteConsoleW,[hStdOut],text,len,temp,0
  invoke ReadConsoleA,[hStdIn],temp,2,temp,0
Exit:
  invoke  ExitProcess,0
 
section '.data' data readable writeable
 
  temp dd 0
  
  hStdIn      dd 0
  hStdOut     dd 0
  
  conTitle  du 'Unicode консоль-монсоль', 0
 
  text du   'У FASMa оказывается на борту есть свой макрос!',0Ah,0Dh,\
            0Ah,0Dh,\
            'Во внимание нужно принять только пару моментов:',0Ah,0Dh,\
            0Ah,0Dh,\
            '1. Количество знаков считается ($ - text)/2 Потому как один знак - два байта',0Ah,0Dh,\ 
            0Ah,0Dh,\
            '2. Не забыть подключить кодовую страницу кириллицы win1251.inc',0Ah,0Dh,\
            0Ah,0Dh,\
            '3. Функции вывода имеют на конце вместо буковки "А" буковку "W"',0Ah,0Dh            
            
              
  len = ($ - text)/2
 
section '.idata' import data readable
    library kernel32,'KERNEL32.DLL',user32, 'USER32.DLL'      
    include 'API\kernel32.inc'
    include 'api\user32.inc'
З.Ы. Костыли конечно хорошо, но твой макрос я не брошу. Следующая тема обязательная к изучению "Научиться работать с макросами". Твой макрос выпускной экзамен по теме. FTP добью только.
0
Ушел с форума
Автор FAQ
14176 / 7060 / 831
Регистрация: 11.11.2010
Сообщений: 12,669
19.02.2014, 15:16 12
Полный 30h,
это как раз случай реверс-инжиниринг, дело в том, что FASM поддерживает конструкцию du для строк содержащих юникод символы, а du, которую я предложил, это как раз попытка создать такой макрос в MASM, иначе в MASM unicode-строки определяют вот так
Assembler
1
Hello db 'H',0,'e',0,'l',0,'l',0,'o',3 dup(0)
что не очень красиво, на кириллице юникод-строки вообще не читаемы, вот и пришлось извернуться и придумать макрос
1
Полный 30h
19.02.2014, 15:41     Написать программу, которая спросит сначала Ваше имя
  #13

Не по теме:

Цитата Сообщение от Mikl___ Посмотреть сообщение
пришлось извернуться и придумать макрос :)
В процессе поиска инфы по теме на одном из форумов я видел твой макрос. Видимо в момент придумывания.

0
19.02.2014, 15:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 15:41
Привет! Вот еще темы с ответами:

Напишите программу, которая по введённым с клавиатуры данным выводила бы ваше имя на экране монитора
Напишите программу, которая по введённым с клавиатуры данным выводила бы ваше имя на экране...

Напишите программу, которая читает строку, и если это ваше имя то печатает на экране "привет"
Фамильярность. Напишите программу, которая читает строку, и если это ваше имя то печатает на экране...

Написать программу, которая рекурсивно выведет сначала левую половину массива, затем правую
что-то я туплю с задачей. Написать программу, которая рекурсивно выведет сначала левую половину...

Написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, а затем восклицательные предложения.
Написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.