HariboteOS/day22/app/api.asm
2021-05-19 22:24:17 +08:00

77 lines
1.6 KiB
NASM

[BITS 32]
GLOBAL api_putchar, api_end, api_putstr
GLOBAL api_open_win, api_putstr_win, api_boxfill_win
api_putchar:
MOV EDX, 1
MOV AL, [ESP+4]
INT 0x40
RET
api_end:
MOV EDX, 4
INT 0x40
api_putstr: ; void api_putstr(char *s);
PUSH EBX
MOV EDX, 2
MOV EBX, [ESP+8]
INT 0x40
POP EBX
RET
api_open_win: ; int api_open_win(char *buf, int xsize, int ysize, int col_inv, char *title);
PUSH EDI
PUSH ESI
PUSH EBX
MOV EDX, 5
MOV EBX, [ESP+16] ; buf
MOV ESI, [ESP+20] ; xsize
MOV EDI, [ESP+24] ; ysize
MOV EAX, [ESP+28] ; col_inv
MOV ECX, [ESP+32] ; title
INT 0x40
POP EBX
POP ESI
POP EDI
RET
api_putstr_win: ; void api_putstr_win(int win, int x, int y, int col, int len, char *str);
PUSH EDI
PUSH ESI
PUSH EBP
PUSH EBX
MOV EDX, 6
MOV EBX, [ESP+20] ; win
MOV ESI, [ESP+24] ; x
MOV EDI, [ESP+28] ; y
MOV EAX, [ESP+32] ; col
MOV ECX, [ESP+36] ; len
MOV EBP, [ESP+40] ; str
INT 0x40
POP EBX
POP EBP
POP ESI
POP EDI
RET
api_boxfill_win: ; void api_boxfill_win(int win, int x0, int y0, int x1, int y1, int col);
PUSH EDI
PUSH ESI
PUSH EBP
PUSH EBX
MOV EDX, 7
MOV EBX, [ESP+20] ; win
MOV EAX, [ESP+24] ; x0
MOV ECX, [ESP+28] ; y0
MOV ESI, [ESP+32] ; x1
MOV EDI, [ESP+36] ; y1
MOV EBP, [ESP+40] ; col
INT 0x40
POP EBX
POP EBP
POP ESI
POP EDI
RET