17 / 6 / 0
Регистрация: 30.12.2009
Сообщений: 93
|
|
1 | |
Написать программу, выводящую строку "Hello World" на экран20.10.2011, 12:51. Показов 179950. Ответов 41
Метки нет (Все метки)
2
|
20.10.2011, 12:51 | |
Ответы с готовыми решениями:
41
Написать программу на ассемблере, выводящую на экран строку 100 раз Составьте программу, выводящую на экран 5 строк «Hello, World!» Написать программу, выводящую из файла на экран строку с заданным номером Напишите программу, выводящую на экран текст «Hello, world!» |
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
11.04.2012, 10:30 | 21 |
Mikl___, можно и через undoc BOP_3RDPARTY - MessageBox() из доси вывести.
И да, топик-таки лучше прилепить.
0
|
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
|
|
11.04.2012, 11:55 | 22 |
Mikl___, тему создать это легко, а почему эту не продолжить?
1
|
Mikl___
|
11.04.2012, 13:05
#23
|
Не по теме: чтобы тема не выродилась, a о MessageBox'e создавай новую тему
0
|
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
|
|
11.04.2012, 13:10 | 24 |
Mikl___,
Не по теме: понято!
1
|
0 / 0 / 1
Регистрация: 04.05.2011
Сообщений: 57
|
||||||
02.12.2012, 06:17 | 25 | |||||
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||||||
07.12.2013, 08:53 | 26 | |||||
Продолжим извраты - теперь и под FreeBSD. include-файлы лежат на https://github.com/graudeejs/a... SD/include ,
в файле macros.fasm стр. 21 должна выглядеть так: Код
lea esp,[esp+4*margc] ; clear stack
2
|
2 / 2 / 0
Регистрация: 12.06.2014
Сообщений: 10
|
||||||
14.06.2014, 15:02 | 27 | |||||
Mikl___, там не обязательно подсчитывать длину строки, можно просто прекращать вывод символов при встрече контрольного символа в конце строки (например $)
Lizakotenkova, не обязательно пользоваться оператором lea, можно просто использовать директиву offset, (mov dx, offset privet), таким образом мы экономим байты
1
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||||||
14.06.2014, 16:50 | 28 | |||||
Продолжаем мучить фряшу — теперь вызываем системную библиотеку libc.so:
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16.09.2014, 14:06 | 29 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Что-то совсем мало сказано про использование стандартной библиотеки Си.
Этот пост я направляю в первую очередь преподавателям и учителям. Начинать HelloWorld с реализации для DOS, с использованием WinAPI или макросов, по моему мнению, очень не правильно. Если изучать Ассемблер после Си, то можно легче понять происходящее, а самое главное, объяснить всем студентам/школьникам значимость Ассемблера, архитектуру компьютера и правила исполнения программ. Современный курс не должен концентрироваться на 100500 способах вывода последовательности байт в консоль и изучении систем исчисления. Чем быстрее будет изучен математический сопроцессор, SSE и прочие вкусности, тем больше можно успеть в рамках курса. А это значит, что надо пользоваться готовыми инструментами для взаимодействия человека и компьютера. Win32 Теперь вспомним, что в Си программа начинает исполняться с функции main. Реализуем её. Эта функция возвращает число с типом int, для Win32, в соответствии с "соглашением о вызове" cdecl, оно должно быть возвращено через регистр EAX. Процесс сборки готовой программы разобьём на два этапа: - компиляция asm-файла в объектный файл, - компоновка объектного файла со стандартными библиотеками средством, предполагающим сборку Си-приложения. Первый пункт требует, что бы мы не забыли "опубликовать" нашу функцию. Второй - предполагает, что компоновщик будет ждать функцию main. В качестве компилятора языка Ассемблера я буду использовать NASM, поменять его на другой не составит труда. В роли компоновщика рассмотрю MinGW и MSVS. Первый пример: "Ничего не делаем"
Я говорил, что можно скомпоновать и с помощью MSVS:
- адрес возврата (4 байта), - int argc (4 байта), - char *argv[] (4 байта).
А тут ничего почти не изменилось . Мы не использовали системнозависимых функций. Но нам потребуется: - избавиться от префикса "_", - изменить формат объектного файла
Win64 Тут нас ждут следующие изменения: - Регистры увеличились и в размера и в количестве . - Параметры передаются через регистры, для нас важно, что целые числа и указатели будут лежать в RCX, RDX, R8 и R9, действительные в XMM0L, XMM1L, XMM2L и XMM3L, остальное через стек. - Вызывающая подпрограмма должна зарезервировать в стеке место для 4-х регистров!!! - Префикс не нужен. - Изменился формат объектных файлов. Остальное читаем в http://msdn.microsoft.com/en-u... 35286.aspx
Изменения: - Параметры передаются через регистры. Целые числа/указатели в rdi, rsi, rdx, rcx, r8 и r9. Действительные xmm0-xxm7, остальное через стек. - Если вызывается подпрограмма с переменным числом параметров, то в RAX указываем число использованных xmm-регистров!!! - Префикс не нужен. - Изменился формат объектных файлов.
1
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
16.09.2014, 16:36 | 30 |
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
|
16.09.2014, 17:06 | 31 |
Не сколько, так как именно они продолжают заниматься фигнёй, преподавая устаревшие дисциплины. От того, что они дали решать Написать программу для расчета формулы студенту в DosBox, толка не будет. Только потратят драгоценное время. И студент уже не успеет подумать, а "как применить SSE3 инструкцию haddps для оптимизации умножения матрицы 4х4 на вектор".
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
16.09.2014, 18:39 | 32 |
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
06.11.2014, 13:22 | 33 |
"Hello, world" вертикально и разноцветно:
https://www.cyberforum.ru/post6695315.html
0
|
Модератор
1761 / 670 / 141
Регистрация: 10.06.2009
Сообщений: 2,604
|
||||||
20.03.2015, 00:42 | 34 | |||||
Вариант на тему masm64 и chcp1251
1
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||||||||||||||||||||||||
08.11.2016, 15:31 | 35 | |||||||||||||||||||||||||
Давайте у кого меньше получится код!
Добавлено через 8 минут Ещё один вариант, тоже на 20 байт...
Добавлено через 3 минуты И ещё...
Добавлено через 4 минуты Правда вариант,
Добавлено через 4 минуты Оооо! 19 байт
1
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
02.12.2016, 15:13 | 36 |
Сделал вывод 'Hello World' с использованием только 1-байтовых инструкций:
Значения регистров при запуске программы (DOS COM) p.s. Посмотрите, кому интересно, заодно изучите, какие значения регистров получает COM-программа при старте
1
|
Terminator of naked apes
832 / 139 / 34
Регистрация: 13.02.2015
Сообщений: 328
|
|
16.12.2016, 21:04 | 37 |
Таким можно маяться только от полного уныния и очаяния, например ;о) Впрочем, и трюкачить на Асме тоже можно, но прежде всего необходимо понимать, что мы
Конечно, и у Асма есть некоторые небольшие недостатки, но и они постепенно исчезают (что можно проиллюстрировать Исходник, правда, здесь опубликовать невозможно, т.к. он в моднейшей кодировке UNICODE UTF-16 (а на форуме кодировка прошлого века Win-1251, например ;о) А посему тот, кому будет недостаточно нотариально заверенного скриншота, завсегда может заглянуть в архив с кодом, например ;о)
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||||||||
18.05.2017, 00:40 | 38 | ||||||||||
Некоторые начинающие программисты иногда мешают код с данными. А мы ругаем их за это. Но я тут подумал: а почему бы не сделать такое смешивание вполне легальным?
Например так:
Заметьте: сюда ещё и антиотладка лайтовая ненароком встроилась... Добавлено через 3 минуты Ну и вариант с int 29h :
0
|
170 / 57 / 6
Регистрация: 21.05.2017
Сообщений: 68
|
|||||||||||
21.05.2017, 04:07 | 39 | ||||||||||
64-битный вариант
1
|
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 13
|
|||||||||||
29.05.2017, 16:54 | 40 | ||||||||||
0
|
29.05.2017, 16:54 | |
29.05.2017, 16:54 | |
Помогаю со студенческими работами здесь
40
как написать на vb программу, выводящую на консоле 'Hi, world!' Написать подпрограмму, выводящую на экран строку из одинаковых символов. Написать процедуру, выводящую на экран строку s длины N состоящую из символа q Написать функцию, принимающую на вход строку, и выводящую ее на экран наоборот Написать программу выводящую на экран Написать программу, выводящую на экран треугольник Написать программу, выводящую на экран столбцы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |