Det är den första koden jag skrivit så försök att inte garva ihjäl er

Problemet är att jag inte kan setta en utgång. har letat i boken o lite på forumet men hittar ingen förklaring. I vissa program funkar det och i vissa inte, det känns som om jag missat nån viktig regel

Har testat lite olika varianter(att setta en viss bit som dom vill i boken), har testat med hela portA = ut, hela portB = in etc.
När jag kör simulatorn/debugger så skiter den helt enkelt i viss kod, programmet funkar i övrigt och den gnäller inte i build.
Har skrivit in två olika varianter på problemet i koden.
Tacksam för alla svar
;startar och stänger av larmet med kod....
List p=16f84
status equ 0x05
porta equ 0x05
portb equ 0x06
trisa equ 0x85
trisb equ 0x86
kod equ 0x1a
ram equ 0x0c
rp0 equ 0x05
org 0x00
init
bsf status,rp0
movlw B'00001111'
movwf trisb
bcf status,rp0
movlw B'00000001' ; den hemliga koden för att släcka LED(bit 6 portB)
movwf kod
start
bsf portb,6 ;<---Vägrar setta portB bit 6
movlw B'00100000'
movwf portb ;<--- Samma här Vägrar setta portB bit 6
clrf ram
movfw portb
andlw b'00001111' ;nollar bort bitar 4-7 samt ointryckta bit0-3
xorwf kod,0 ;Jämför om det är rätt kod,värdet sparas i W.
movwf ram ;Kollar att det är rätt kod d.v.s om w = 0
btfsc ram,0
goto start
btfsc ram,1
goto start
btfsc ram,2
goto start
btfsc ram,3
goto start
clrf portb ;Släcker LED (bit6)
goto start
end
Edit:snyggat till lite...