Added strcmp function

This commit is contained in:
Xnoe 2021-08-28 07:55:26 +01:00
parent ba2db3a84b
commit ef03c94f13
Signed by: xnoe
GPG Key ID: 45AC398F44F0DAFE

View File

@ -1,20 +1,34 @@
sect2:
mov ax, 2000h mov ax, 2000h
mov ds, ax mov ds, ax
mov si, msg push msg
call print call print
mov si, msg2 push msg2
call print call print
push 13
push msg
push msg
call strcmp
cmp ax, 1
jne _ne
push msg_same
call print
_ne:
jmp $ jmp $
data:
msg db "Kernel OK!", 13, 10, 0 msg db "Kernel OK!", 13, 10, 0
msg2 db "Hello, World!", 13, 10, 0 msg2 db "Hello, World!", 13, 10, 0
msg_same db "They are the same", 13, 10, 0
print: print:
pop si push bp
mov bp, sp
mov si, [bp + 4]
mov ah, 0eh mov ah, 0eh
mov cx, 1 mov cx, 1
mov bh, 0 mov bh, 0
@ -25,4 +39,32 @@ print_loop:
int 10h int 10h
jmp print_loop jmp print_loop
print_exit: print_exit:
pop bp
ret 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