bat/tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm
2020-10-07 18:00:33 +02:00

87 lines
12 KiB
NASM
Vendored
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

global enlight
section .data
 red dq 0 ; some comment
 green dq 0
 blue dq 0
 data dq 0
 N dd 0
 M dd 0
 change dd 0
 delta db 0
section .text
enlight:
 call assign_arguments
 call set_data
 call make_deltas
 ret
assign_arguments:
 mov qword[red], rdi
 mov qword[green], rsi
 mov qword[blue], rdx
 mov dword[N], ecx
 mov dword[M], r8d
 mov dword[change], r9d
 mov al, byte[rsp + 16]
 mov byte[delta], al
 ret
set_data:
 mov eax, dword[change]
 cmp eax, 1
 jne not_1
 mov rax, qword[red]
 mov qword[data], rax
 ret
not_1:
 cmp eax, 2
 jne not_2
 mov rax, qword[green]
 mov qword[data], rax
 ret
not_2:
 mov rax, qword[blue]
 mov qword[data], rax
 ret
make_deltas:
 mov ecx, dword[N]
 mov eax, dword[M]
 imul ecx, eax
loop_start:
 call make_delta
 loop loop_start
 ret
make_delta:
 mov rax, qword[data]
 add rax, rcx
 dec rax
 mov dl, byte[delta]
 cmp dl, 0
 jl substracting
adding:
 add dl, byte[rax]
 jc adding_overflow
 mov byte[rax], dl
 ret
adding_overflow:
 mov byte[rax], 255 
 ret
substracting:
 mov r9b, dl
 mov dl, 0
 sub dl, r9b
 mov r8b, byte[rax]
 sub r8b, dl
 jc substracting_overflow
 mov byte[rax], r8b
 ret
; another comment
substracting_overflow:
 mov byte[rax], 0
 ret