2012-04-05 11 views
9

Próbuję zrozumieć specs, ale nie rozumieją pierwszą linię podanym przykładzie:Jak zrozumieć pierwszy wiersz przykładowego zestawu specyfikacji DCPU-16?

SET A, 0x30    ; 7c01 0030 

Oto co zrozumiałem ze specyfikacją:

  • pierwszego słowa (7c01) pełni określa Instrukcji
  • operator 0x1, który jest polecenie SET a, b
  • b = 111100 = 0x3C (kiedy przekształcić w heksanie) = wartość dosłownym 0x3C
  • a = 000000 = zarejestrować

Rozumiem instrukcje jak ustawić, 0x3C

Czy ktoś może doradzić gdzie mam pójść źle?

+1

Skąd b = 111100 pochodzą? Z mojego punktu widzenia b = 110000 = 0x30 ... –

+0

@ cli_hlt Hum, teraz mam 0x7c01 = 0111110000000001 który daje mi b = 011111 = 1F?! – tucson

Odpowiedz

9

Ah ok od komentarzy W końcu dostałem moją odpowiedź.

Brakuje sekcję "wartości" z spec, tam jest napisane:

Values: 
.... 
0x1f: next word (literal) 

Więc mamy:

0x7c01 = 0111110000000001 

0001 = SET 
000000 = register A 
011111 = 1F -> next word -> [PC++] 

Następny słowo jest 0x0030 ... voilà.

+0

Rozumiem. Dzięki! – tucson

0

@cli_hlt jest prawie poprawne

dokumentacja dcpu mówi:

W podstawowej instrukcji, dolne pięć bitów pierwszego słowa instrukcji są opcode, a pozostałe bity są jedenaście podziel na pięciobitową wartość b i sześciobitową wartość a.

b jest zawsze obsługiwane przez procesor po a, i jest pięcioma niższymi bitami bitów. W bitach (w formacie LSB-0), podstawowa instrukcja ma format: aaaaaabbbbbooooo

więc poprawną odpowiedzią jest:

0x7c01 = 0111110000000001 

00001 = SET 
00000 = register A 
011111 = 1F -> next word -> [PC++] 
Powiązane problemy