1 / 1 / 1
Регистрация: 18.10.2015
Сообщений: 9
1

"Hello world", нужны комментарии к коду

01.11.2016, 15:28. Показов 609. Ответов 5
Метки нет (Все метки)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.text
 
.global _start
 
_start:
 
movb $4, %al
 
movb $1, %bl
 
movl $str, %ecx
 
movl $12, %edx
 
int $0x80
 
movb $1, %al
 
str:
 
.ascii "Hello world!"
 
.byte 10
Можете пожалуйста разъяснить каждую строку программы?

Добавлено через 14 минут
в gcc это можно собрать в 456 байт, но я не могу разобраться как это работает
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2016, 15:28
Ответы с готовыми решениями:

Нужны комментарии к коду
//Код компилируется без ошибок в Turbo c v3.1.После компиляции видим в левом верхнем углу маленьки...

Вывод "Hello, world!" заданое количество раз, с новой строки
Доброго времени суток. Помогите написать програму на асме,сам впервые стыкаюсь с ним.. Сама...

"Hello world" в отладчике содержит множество посторонних инструкций
Имеется прога на асм для dos. Обычный хеллоуворлд. Открыл turbo disassembler, есть вопрос. Для чего...

Написать программу, выводящую строку "Hello World" на экран
Написать прогармму выводящую строку "Hello World" на экран Заранее спасибо

5
541 / 349 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
01.11.2016, 15:30 2
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.text              ; начало сегмента кода 
.global _start  ; видимый снаружи символ (метка входа)
_start:           ; сама метка 
movb $4, %al ; загнать байт (число 4) в регистр al
movb $1, %bl ; загнать байт (число 1) в регистр bl
movl $str, %ecx ; поместить адрес строки в регистр ecx
movl $12, %edx ; поместить двойное слово (число 12) в регистр edx
int $0x80           ; системный вызов (надо в манах искать)
 
movb $1, %al ; загнать байт (число 1) в регистр al (код возврата типо)
 
; объявления данных
str: 
.ascii "Hello world!" 
.byte 10
0
1 / 1 / 1
Регистрация: 18.10.2015
Сообщений: 9
01.11.2016, 15:34  [ТС] 3
получается 4,5,7строки нафиг не нужны по факту?
0
541 / 349 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
01.11.2016, 15:39 4
ilyakonst, нужно найти в man описание этого системного вызова, тогда станет ясно, что делают эти строки. Ты ведь не думаешь, что int $0x80 сам догадается, что ему делать и где искать свои параметры?
0
1 / 1 / 1
Регистрация: 18.10.2015
Сообщений: 9
01.11.2016, 15:44  [ТС] 5
к сожалению я совсем не изучал ассемблер и не знаю даже элементарного.
0
541 / 349 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
01.11.2016, 16:03 6
ilyakonst, короче, в ассемблере можно вызывать ядро через системные вызовы жмак, у каждого свои параметры и поведение (зависит от параметров). У каждого системного вызова должен быть ман с его описанием (у меня ясен пень под рукой описалово без манов, так что я как всегда в пролете... у меня там примеры на СИ, а не номера и параметры вызова).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 16:03

Программа "Hello World" из книги Крупника А. "Изучаем ассемблер" не выводит строку
Здравствуйте! :) Начал изучать Ассеблер по книге Крупника А. "Изучаем ассемблер". Переписал...

Hello, world и ошибка "error A2006: undefined symbol"
помогите откомпилировать в масм32, выдает ошибку hello.asm(7) : error A2006: undefined symbol :...

Комментарии к коду по теме "Умножить два многочлена заданной степени"
Ребят, приветствую всех! Задание: Умножить два многочлена заданной степени. Коэффициенты...

Проверить, содержит ли указанное предложение слово "дом". Нужны комментарии
помогите объяснить каждую строчку программы,и укажите на ошибка,почебу она не правильно работает?...


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

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

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