diff --git a/kernel.asm b/kernel.asm index c1b5305..c0182a0 100644 --- a/kernel.asm +++ b/kernel.asm @@ -1,20 +1,34 @@ -sect2: mov ax, 2000h mov ds, ax - mov si, msg + push msg call print - mov si, msg2 + push msg2 call print + push 13 + push msg + push msg + call strcmp + + cmp ax, 1 + jne _ne + push msg_same + call print +_ne: + jmp $ +data: msg db "Kernel OK!", 13, 10, 0 msg2 db "Hello, World!", 13, 10, 0 + msg_same db "They are the same", 13, 10, 0 print: - pop si + push bp + mov bp, sp + mov si, [bp + 4] mov ah, 0eh mov cx, 1 mov bh, 0 @@ -25,4 +39,32 @@ print_loop: int 10h jmp print_loop print_exit: + pop bp ret + +strcmp: + push bp + mov bp, sp + mov ax, [bp + 4] + lea si, [bp+6] + lea di, [bp+8] + dec di + mov word [bp - 2], 0 +strcmp_loop: + inc di + inc word [bp - 2] + lodsb + cmp [di], al + jne strcmp_notequal + cmp [bp - 2], ax + jne strcmp_equal + + +strcmp_equal: + mov ax, 1 + pop bp + ret +strcmp_notequal: + mov ax, 0 + pop bp + ret \ No newline at end of file