Ассемблер: различия между версиями
Материал из OpenWiki
Перейти к навигацииПерейти к поиску
George (обсуждение | вклад) Нет описания правки |
George (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
[[Язык программирования]] низкого уровня. Используется в тех случаях, когда требуется особо высокая скорость работы [[компьютерная программа|программы]] или же получение прямого доступа к ресурсам установленного на компьютере оборудования. Программирование на ассемблере отличается очень высокой трудоемкостью и требует от программиста глубоких знаний компьютерного оборудования и [[операционная система|операционной системы]]. | [[Язык программирования]] низкого уровня. Используется в тех случаях, когда требуется особо высокая скорость работы [[компьютерная программа|программы]] или же получение прямого доступа к ресурсам установленного на компьютере оборудования. Программирование на ассемблере отличается очень высокой трудоемкостью и требует от программиста глубоких знаний компьютерного оборудования и [[операционная система|операционной системы]]. | ||
Пример кода на ассемблере для 64-разрядного процессора фирмы [[Intel]]: | Пример кода на ассемблере для 64-разрядного процессора фирмы [[Intel]] (платформа [[Linux]], компилятор NASM): | ||
<pre> | <pre> | ||
Версия от 17:07, 30 марта 2024
Язык программирования низкого уровня. Используется в тех случаях, когда требуется особо высокая скорость работы программы или же получение прямого доступа к ресурсам установленного на компьютере оборудования. Программирование на ассемблере отличается очень высокой трудоемкостью и требует от программиста глубоких знаний компьютерного оборудования и операционной системы.
Пример кода на ассемблере для 64-разрядного процессора фирмы Intel (платформа Linux, компилятор NASM):
;======================================================
; WriteBuffer
; Действие: записать в файл содержимое буфера
; Параметры: rax=(hFile), rbx=(BufAddr), rcx=(BufSize)
; Возврат: rax=(количество записанных байтов)
;
;----------------------------
global WriteBuffer
;----------------------------
WriteBuffer: push rcx
push rdx
push rsi
push rdi
push r11
mov rdi,rax
mov rsi,rbx
mov rdx,rcx
mov rax,1
syscall
pop r11
pop rdi
pop rsi
pop rdx
pop rcx
ret
;======================================================
; SetFileContent
; Действие: создать файл и записать в него содержимое буфера
; Параметры: rax=(адрес ASCIZ строки FileName) rbx=(BufAddr) rcx=(BufSize)
; Возврат: эта функция ничего не возвращает
;
;----------------------------
global SetFileContent
;----------------------------
SetFileContent: push rax
call CreateFile
push rax
call WriteBuffer
pop rax
call CloseFile
pop rax
ret
;======================================================