cmp no funciona

Iniciado por huchoko, 22 Febrero 2019, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

huchoko

Pues tengo esta simple rutina en ensamblador (NASM):
Código (asm) [Seleccionar]

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.

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

huchoko

Gracias, siempre me pregunte por que cmp nunca me funcionaba...
:silbar:

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón