├── README.md └── main.asm /README.md: -------------------------------------------------------------------------------- 1 | # asmhttp 2 | Very simple http server written in assembly x86 3 | -------------------------------------------------------------------------------- /main.asm: -------------------------------------------------------------------------------- 1 | section .data 2 | listen_sock dd 0 3 | conn_sock dd 0 4 | sa_in sockaddr_in 5 | 6 | section .text 7 | global _start 8 | 9 | _start: 10 | mov eax, SYS_SOCKET 11 | mov ebx, AF_INET 12 | mov ecx, SOCK_STREAM 13 | int 0x80 14 | mov [listen_sock], eax 15 | 16 | ; 8080 17 | mov eax, SYS_BIND 18 | mov ebx, [listen_sock] 19 | mov ecx, sa_in 20 | mov edx, 16 21 | int 0x80 22 | ; listen 23 | mov eax, SYS_LISTEN 24 | mov ebx, [listen_sock] 25 | mov ecx, 1 26 | int 0x80 27 | 28 | aclc: 29 | mov eax, SYS_ACCEPT 30 | mov ebx, [listen_sock] 31 | mov ecx, 0 32 | mov edx, 0 33 | mov esi, sa_in 34 | mov edi, 16 35 | int 0x80 36 | mov [conn_sock], eax 37 | 38 | snrp: 39 | mov eax, SYS_WRITE 40 | mov ebx, [conn_sock] 41 | mov ecx, message 42 | mov edx, message_len 43 | int 0x80 44 | 45 | clcn: 46 | mov eax, SYS_CLOSE 47 | mov ebx, [conn_sock] 48 | int 0x80 49 | 50 | ; (this server can accept only 1 connection!!1!1!!1) 51 | jmp aclc 52 | 53 | section .data 54 | message db "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\ngive star to project pls\r\n" 55 | message_len equ $ - message 56 | --------------------------------------------------------------------------------