Intel x86 (IA32)
Реализация языка программирования Assemblerx86 — образованно от последних цифр ранних моделей процессоров 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
]]>