48 lines
460 B
ArmAsm
48 lines
460 B
ArmAsm
|
bits 32
|
||
|
section .text
|
||
|
global putchar
|
||
|
global getchar
|
||
|
global _start
|
||
|
extern main
|
||
|
|
||
|
align 4
|
||
|
_start:
|
||
|
call main
|
||
|
jmp $
|
||
|
|
||
|
align 4
|
||
|
putchar:
|
||
|
mov eax, [esp+4]
|
||
|
mov [buf], eax
|
||
|
push dword 1
|
||
|
push dword buf
|
||
|
push dword 1
|
||
|
mov eax, 4
|
||
|
call kernel
|
||
|
add esp, 12
|
||
|
ret
|
||
|
|
||
|
align 4
|
||
|
getchar:
|
||
|
push dword 1
|
||
|
push dword buf
|
||
|
push dword 0
|
||
|
mov eax, 3
|
||
|
call kernel
|
||
|
add esp, 12
|
||
|
mov eax, 0
|
||
|
mov eax, [buf]
|
||
|
ret
|
||
|
|
||
|
align 4
|
||
|
kernel:
|
||
|
int 80h
|
||
|
ret
|
||
|
|
||
|
section .data
|
||
|
buf:
|
||
|
dd 0
|
||
|
dd 0
|
||
|
dd 0
|
||
|
dd 0
|