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 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
|
Loading…
x
Reference in New Issue
Block a user