Pues tengo esta simple rutina en ensamblador (NASM):
isr80:
cli
push byte 0
push byte 80
cmp eax, 3
je .read_srv
cmp eax, 4
je .write_srv
jmp .end
.read_srv:
mov ecx, strinputbuff
mov eax, ebx
call k_readkb
xor eax, eax
.write_srv:
mov ecx, testmsg
push ecx
call kputs
pop ecx
jmp isr_common_stub
.end:
Bueno, si mueves el valor 4 a eax, te imprime un texto, si mueves 3 a eax te lee el teclado, etc.
Pero no funciona, sea cual sea el valor que mueva a eax igualmente salta a la subrutina .write_srv.
Me tiene loco este error (por que no es la primera vez que me pasa, cada vez que uso cmp). Alguna idea?
PD: No estoy programando para un SO en específico (https://wiki.osdev.org/Bare_Bones).
Los cmp y je estan bien pero si EAX es 3 vas a terminar en .write_srv tambien. Cualquier otro valor diferente a 3 y 4 ira a .end, pone un jmp .end entre la linea 14 y la 15.
Gracias, siempre me pregunte por que cmp nunca me funcionaba...
:silbar:
De nadas ::)