X-Git-Url: https://git.danieliu.xyz/?p=sped.git;a=blobdiff_plain;f=sped.asm;h=eda67b319c0ed0c03fbe20f546e5b2bf76db4752;hp=6230c852604e4d959e9a909669573042e4b17b32;hb=17adbf435e9341831aa580404d18d8caa7448ce2;hpb=4c9d6b68e0b493e23969b79e96457b68cfed8895 diff --git a/sped.asm b/sped.asm index 6230c85..eda67b3 100644 --- a/sped.asm +++ b/sped.asm @@ -1,4 +1,8 @@ +global main +extern printf + +; macros %macro write_str 2 mov eax, 4 mov ebx, 1 @@ -8,14 +12,41 @@ %endmacro section .data - msg db "SPED - the stupidly pointless editor", 0x0a - len equ $ - msg + banner_str db `SPED - the stupidly pointless editor\n`, 0x00 + readfile_str db `reading file %s\n`, 0x00 + nofile_str db `no file provided\n`, 0x00 + argcount_str db `there are %d args\n`, 0x00 section .text -global _start -_start: - write_str msg, len +main: + push ebp + mov ebp, esp + + ; read command line args + mov ecx, [ebp+8] + cmp ecx, 1 + jg .readFile + + ; display error msg if no file + push nofile_str + call printf mov eax, 1 - mov ebx, 42 - int 0x80 + jmp .exit + +.readFile: + + mov ebx, DWORD [ebp+12] + add ebx, 4 + push DWORD [ebx] + push readfile_str + call printf + + mov eax, 0 + jmp .exit + +.exit: + mov esp, ebp + pop ebp + ret +