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

Узнай цену своей работы

Формулировка задачи:

.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
Можете пожалуйста разъяснить каждую строку программы?
в gcc это можно собрать в 456 байт, но я не могу разобраться как это работает

Решение задачи: «"Hello world", нужны комментарии к коду»

textual
Листинг программы
.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

Объяснение кода листинга программы

  1. .text — сегмент кода.
  2. .global _start — видимый снаружи символ (метка входа).
  3. _start: — сама метка.
  4. movb $4, %al — загнать байт (число 4) в регистр al.
  5. movb $1, %bl — загнать байт (число 1) в регистр bl.
  6. movl $str, %ecx — поместить адрес строки в регистр ecx.
  7. movl $12, %edx — поместить двойное слово (число 12) в регистр edx.
  8. int $0x80 — системный вызов (надо в манах искать).
  9. movb $1, %al — загнать байт (число 1) в регистр al (код возврата типо).
  10. str: — начало строки.
  11. .ascii Hello world! — строка Hello world! в кодировке ascii.
  12. .byte 10 — следующий байт со значением 10 (символ перевода строки).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5