logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Asembler - Jak znaleźć największe słowo w ciągu od adresu T?

basfik 12 Cze 2009 17:27 1128 2
REKLAMA
  • #1 6647198
    basfik
    Poziom 10  
    Posty: 3
    Witam wszystkich moim zdaniem jest:

    W pamięci komputera, począwszy od adresu T, znajduje się ciąg słów (wartości dwubajtowych).
    Ilość elementów w tym ciągu znajduje się pod adresem N (jeden bajt, tzn. ich liczba jest nie większa od 255)
    Napisz program, który pod adresem W, zapisze największe z tych słów.
    przykładowo:
    ...
    ... zadanie
    ...
    N: 09 // mamy 9 liczb (słów)
    T: 0103,03A1,0400,05B3, 0F5A, AA01, 1CA1, 1D90, 0D12 //tu są liczby (słowa)
    W: ?/ //tu powinien znaleźć się wynik


    Moje rozwiązanie:

    100:      LD A, (N)     :3A 17 01
    103:		LD C, A       :4F
    104:		XOR A		   :AF
    105:		LD HL, T	   :21 18 01
    108:LOOP:	LD B, (HL)  :46
    109:		CP B		    :B8
    10A:		JP M, SKIP	 :FA 0E 01
    10D:		LD A,B        :78
    10E:SKIP:	INC HL		:23
    10F:		DEC C		   :0D
    110:		JP NZ, LOOP	:C2 08 01
    113:		LD (W), A	  :32 19 01
    116:		HLT		     :76
    
    117:	  N: 0A (17 01)
    118:    T:  01, 02, 03, 04, 05, 06, 07, 08, 09, A0 (18 01)
    119:    W: ?? (19 01)



    Wszystko działa mi poprawnie lecz są to wartości jednobajtowe, a w zadaniu mam podane dwubajtowe. Moje pytanie jest jak zmienić?
  • REKLAMA
  • #2 6649741
    wiesniak
    Poziom 31  
    Posty: 1006
    Pomógł: 231
    Ocena: 52
    Jakiego procesora jest to asembler? A, B, C to, jak się domyślam, są rejestry. One są 8-bitowe?
    Jeśli nie dysponujesz 16-bitowymi, to będziesz musiał napisać kod, który będzie porównywał najpierw starsze bajty liczb, a później młodsze w razie potrzeby i dopiero wtedy będzie decydował, która liczba większa.
  • #3 6649906
    basfik
    Poziom 10  
    Posty: 3
    Jest to Asembler Z80.
REKLAMA