Added strcmp function
This commit is contained in:
parent
ba2db3a84b
commit
ef03c94f13
50
kernel.asm
50
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
|
Loading…
x
Reference in New Issue
Block a user