[ASM] dwa programy - jak na jagode ?

0

.. sprawa wyglada tak :
oba programy nie daja sie skompilowac przez jagode - choc ta nie wywala bledu ... jestem w kropce bo podobno na dsm-51 dziala choc pewnosci nie mam, ale sek w tym ze musi dzialac w jagodzie. PROSZE O POMOC w przerobieniu programu(ów) tak aby to poszlo - potrzebne na zaliczenie.

pr1. wprowadzic z klawiatury matrycowej znakowo 2 cyfry szesnastkowe, po czym liczbe tą wyswietlic dziesetnie i dwojkowo na wyswietlaczu LCD.

ljmp start
org 100h

start:
lcall lcd_clr
mov r0, #cskb0

loop: movx a, @r0
jz loop
mov r1, a

loop1: movx a, @r0
jz loop1
mov r2, a

;zamiana na dziesietna reprezentacje
mov b, #16d
mov a, r1
mul ab
;mov r1, a
add a, r2
mov r1, a ;caly wynik dziesietny

    ;trzeba go rozlozyc na cyfry
mov b, #10d
div ab
mov r3, b
mov b, #10d
div ab
mov r4, b

add a, #30h
mov r5, a    ;cyfra setek gotowa do wyswietlenia na lcd
mov a, r4
add a, #30h
mov r4, a    ;cyfra dziesiatek gotowa do wyswietlenia na lcd
mov a, r3
add a, #30h
mov r3, a  ;cyfra jednosci gotowa do wyswietlenia na lcd

mov 18h, r0
mov 19h, r1
mov r0, #lcdwd
mov r1, #lcdrc

busy: movx a, @r1

jb acc.7, busy
mov a, r5
movx @r0, a 
djnz 13h, $
mov a, r4
movx @r0, a
djnz 13h, $
mov a, r3
movx @r0, a    ;wypisanie na lcd liczby w postaci dziesietnej
mov a, #0h
lcall delay_100ms

mov r0, 18h
mov r1, 19h

;postac binarna

mov a, r1
jb acc.0,jump
mov 08h, #0
ljmp goon

jump: mov 08h, #1

goon:

jb acc.1,jump1
mov 09h, #0
ljmp goon1

jump1: mov 09h, #1

goon1:

jb acc.2,jump2
mov 0Ah, #0
ljmp goon2

jump2: mov 0Ah, #1

goon2:

jb acc.3,jump3
mov 0Bh, #0
ljmp goon3

jump3: mov 0Bh, #1

goon3:

jb acc.4,jump4
mov 0Ch, #0
ljmp goon4

jump4: mov 0Ch, #1

goon4:
jb acc.5,jump5
mov 0Dh, #0
ljmp goon5

jump5: mov 0Dh, #1

goon5:
jb acc.6,jump6
mov 0Eh, #0
ljmp goon6

jump6: mov 0Eh, #1

goon6:
jb acc.7,jump7
mov 0Fh, #0
ljmp goon7

jump7: mov 0Fh, #1

goon7:

    mov r1, #0Fh

goon8: mov a, @r1
add a, #30h
mov @r1, a
dec r1
cjne r1, #07h, goon8 ;gotowe do wyswietlenia na lcd w postaci binarnej

mov r0, #lcdrc

busy1: movx a, @r0
jb acc.7, busy1

mov r0, #0Fh
mov r1, #lcdwd

goon9: mov a, @r0
movx @r1, a

dec r0
cjne r0, #07h, goon9

end

pr2. Sterowanie za pomoca dwoch klawiszy strzalek z klawiatury ziwkszaniem lub zmniejszaniem wartosci pewnej liczby ( max 2 cyfrowej ) z wyswietlaniem jej za kazdym razem dziesietnie na wysw. 7-segmentowym. Proba przekroczenia zalozonego zakreu w gore lub w doł sygbalizowane ma byc za pomoca dwoch wybranych diod sposrod F1, ... , F4, OK, ER.


ljmp start
org 100h

start: mov r3, #50d
clr 00h
clr 01h

start1: mov a, r3
lcall cyfry
mov 1bh, r5
lcall kody
mov r5, 1bh
mov 1bh, r4
lcall kody
mov r4, 1bh
lcall wysw

goon1: mov dptr,#0ff30h
mov a,#08
movx @dptr,a
jb 208,satan
clr 00h
sjmp allah

satan: jnb 00h,zwieksz

allah:
mov a,#10
movx @dptr,a
jb 208,budda
clr 01h
sjmp goon

budda:

jnb 01h,zmniej
sjmp goon

zwieksz:
setb 00h
inc r3
cjne r3, #99d, goon
mov dptr, #0ff30h
mov a,#01000000b
movx @dptr,a
mov dptr,#0ff38h
mov a, #00000010b ;dioda F2
movx @dptr, a
ljmp goon1

zmniej:
setb 01h
dec r3
cjne r3, #00d, goon
mov dptr, #0ff30h
mov a,#01000000b
movx @dptr,a
mov dptr,#0ff38h
mov a, #00000001b ;dioda F1
movx @dptr, a
ljmp goon1

goon: ljmp start1

;**********************************
cyfry:
push acc ;wyodrebnienie cyfr setek, dziesiatek i jednosci
mov b, #10d
div ab
mov r5, b
mov r4, a
pop acc

ret

;**********************************

kody: ;szukanie i przyporzadkowanie kodu dla wyodrebnionej cyfry
push acc
mov r7, #0
mov a, r7
cjne a, 1bh, etap1
mov 1bh, #3fh ;kod cyfry '0'
ljmp ende

etap1: inc a
cjne a, 1bh, etap2
mov 1bh, #06h
ljmp ende

etap2: inc a
cjne a, 1bh, etap3
mov 1bh, #5bh
ljmp ende

etap3: inc a
cjne a, 1bh, etap4
mov 1bh, #4fh
ljmp ende

etap4: inc a
cjne a, 1bh, etap5
mov 1bh, #66h
ljmp ende

etap5: inc a
cjne a, 1bh, etap6
mov 1bh, #6dh
ljmp ende

etap6: inc a
cjne a, 1bh, etap7
mov 1bh, #7dh
ljmp ende

etap7: inc a

cjne a, 1bh, etap8
mov 1bh, #07h
ljmp ende

etap8: inc a
cjne a, 1bh, etap9
mov 1bh, #7fh
ljmp ende

etap9: inc a
mov 1bh, #67h ;kod cyfry '9'

ende: pop acc

ret

;**********************************
wysw:

push acc
mov 18h, #02h      ;licznik petli		
mov 19h, #01h	   ;wskaznik wyswietlacza
mov r0, #05h       ;wskaznik skad maja byc pobierane dane na komkretny

loop2: mov dptr,#0ff30h ;wyswietlacz

mov a, 19h	   ;wskazanie na wyswietlacz jednosci(przy 19h=01h) 
movx @dptr, a

mov dptr,#0ff38h
mov a, @r0
movx @dptr, a
clr 91h
;mov r7, #255
djnz r7, $ 
setb 91h                ;wyswietlenie
mov a, 19h          ;wskazanie na nastepny wyswietlacz
rl a
mov 19h, a
dec r0
djnz 18h, loop2
pop acc

ret

end

0

Po 1
Co to jest Jagoda ?
Po 2
Gdzie moge zdobyć jej opis tego ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1