]]> ]]>

Intel x86 (IA32)

Реализация языка программирования Assembler

x86 — образованно от последних цифр ранних моделей процессоров intel — 8086 80186 80286 80386 80486 За время своего существования набор команд расширялся, сохраняя совместимость с предыдущими версиями. У этой архитектуры есть и другое название — IA32 (Intel Architecture 32). x86 — CISC(‘Complex instruction set computing’) архитектура, доступ к памяти происходит по «словам». «Слова» размещаются по принципу little-endian, известному также как Intel-формат. Современные процессоры включают в себя декодеры команд x86 для преобразования их в упрощённый внутренний формат с последующим их выполнением.

Сегментная организация памяти —

  • real mode (реальный режим)
  • protected mode (защищенный режим)
  • virtual 8086 mode (виртуальный режим)
  • Смешанные режимы

Примеры:

Hello, World!:

Пример для версий Intel x86 (IA32)

MSDOS

mov ax,cs
mov ds,ax
mov ah,9
mov dx, offset Hello
int 21h
xor ax,ax
int 21h

Hello:
  db "Hello World!",13,10,"$"

Hello, World!:

Пример для версий Intel x86 (IA32)

NASM Linux , используется Intel синтаксис. Компиляция и линковка:

  • nasm –f elf –o hello.o hello.asm
  • ld -o hello hello.o
SECTION .data
msg     db "Hello, world!",0xa  
len     equ $ - msg
SECTION .text
global _start           
_start:                      ; Точка входа в программу
        mov eax, 4      ; 'write' системный вызов
        mov ebx, 1     
        mov ecx, msg    ; Указатель на данные
        mov edx, len    ; Количество данных
        int 0x80        ;Вызов ядра
        mov eax, 1      ; '_exit' системный вызов 
        mov ebx, 0      ; Возвращаем 0 (все хорошо)
        int 0x80        ; Вызов ядра

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам