diff options
| -rw-r--r-- | todo.md | 6 | ||||
| -rw-r--r-- | tsea83.md | 85 |
2 files changed, 89 insertions, 2 deletions
@@ -13,11 +13,15 @@ vilken grupp? tddd60 läs din del [[tsea83#Föreläsning 4]] -[[tsea83#Laboration 1]] uppgift 3 +[[tsea83#Laboration 1]] översätt till hex +15 genomgång tsea28 +tsrt12 börja kolla på labben. planera +[[tsea83#Laboration 1]] dubbelkolla uppgift 3 ## onsdag 10-12 [[tsrt12#Föreläsning 4]] 13-15 [[tsea83#Föreläsning 4]] +tddd60 läs din del 17-19 [[tsea83#Laboration 1]] redovisa ## torsdag @@ -38,6 +38,8 @@ ### Uppgift 1 | Instruktion | Betydelse | Adresseringsmoder | Flaggor | | --------------- | ----------------------------- | ----------------- | ------------------ | +| uppgift 1 och 2 | | | | +| --------------- | ----------------------------- | ----------------- | ------------------ | | LOAD GRx,M,ADR | GRx := PM(A) | 00,01,10,11 | - | | STORE GRx,M,ADR | PM(A) := GRx | 00,10,11 | - | | ADD GRx,M,ADR | GRx := GRx+PM(A) | 00,01,10,11 | Z,N,O,C | @@ -46,8 +48,17 @@ | LSR GRx,M,Y | GRx logic shift right Y steps | - (00) | Z,N, C shifted bit | | BRA ADR | PC := PC+1+ADR | - (00) | - | | BNE | PC := PC+1+ADR om Z = 0 | - (00) | - | -| | PC := PC+1 annars | - (00) | - | +| | PC+1 annars | | | | HALT | | - (00) | - | +| --------------- | ----------------------------- | ----------------- | ------------------ | +| uppgift 3 | | | | +| --------------- | ----------------------------- | ----------------- | ------------------ | +| CMP GRx,M,ADR | Jämför GRx och PM(A) | 00,01,10,11 | Z,N,O,C | +| | och uppdatera flaggor | | | +| BGE | PC := PC+1+ADR om N = 0 | - (00) | - | +| | PC+1 annars | | | +| BEQ | PC := PC+1+ADR om Z = 1 | - (00) | - | +| | PC+1 annars | | | | Instruktion | OP | uAdress | | ----------- | --- | ------- | @@ -115,6 +126,78 @@ Maskinkod: | 12 | 8 | | | | | ### Uppgift 3 +- [x] Implementera CMP +- [x] Implementera BGE +- [x] Implementera BEQ +- [x] Implementera bubblesort + +| Adress | Variabel | +| ------ | -------------- | +| 0xD0 | lista_sorterad | +| 0xD1 | addr | +| 0xD2 | addr2+1 | +| 0xD3 | tmp | +| 0xD4 | tmp2 | + +Assembly +| OP | GRx | M | ADR? | OPER? | +| ---------------------------- | --- | --- | ---- | ------- | +| label1: | | | | | +| lista_sorterad = 1 | | | | | +| LOAD | GR0 | 01 | | 0x0001 | +| STORE | GR0 | 00 | 0xD0 | | +| | | | | | +| addr = $e0 | | | | | +| LOAD | GR0 | 01 | | 0x00E0 | +| STORE | GR0 | 00 | 0xD1 | | +| | | | | | +| label2: | | | | | +| tmp = pm(addr) | | | | | +| LOAD | GR0 | 10 | 0xD1 | | +| STORE | GR0 | 00 | 0xD3 | | +| | | | | | +| tmp2 = pm(addr + 1) | | | | | +| LOAD | GR0 | 10 | 0xD1 | | +| ADD | GR0 | 01 | | 0x0001 | +| STORE | GR0 | 00 | 0xD2 | | +| LOAD | GR0 | 10 | 0xD2 | | +| STORE | GR0 | 00 | 0xD4 | | +| | | | | | +| tmp1 > tmp2? | | | | | +| LOAD | GR0 | 00 | 0xD3 | | +| CMP | GR0 | 00 | 0xD4 | | +| BEQ | | | | no_swap | +| BGE | | | | swap | +| BRA | | | | no_swap | +| | | | | | +| swap: | | | | | +| swap pm(addr) and pm(addr+1) | | | | | +| LOAD | GR0 | 10 | 0xD1 | | +| LOAD | GR1 | 10 | 0xD2 | | +| STORE | GR0 | 10 | 0xD2 | | +| STORE | GR1 | 10 | 0xD1 | | +| | | | | | +| lista_sorterad = 0 | | | | | +| LOAD | GR0 | 01 | | 0x0000 | +| STORE | GR0 | 00 | 0xD0 | | +| | | | | | +| no_swap: | | | | | +| räkna upp addr | | | | | +| LOAD | GR0 | 00 | 0xD1 | | +| ADD | GR0 | 01 | | 0x0001 | +| STORE | GR0 | 00 | 0xD1 | | +| | | | | | +| addr = 0xff? | | | | | +| LOAD | GR0 | 00 | 0xD1 | | +| CMP | GR0 | 01 | | 0x00FF | +| BNE | | | | label2 | +| | | | | | +| lista_sorterad = 1? | | | | | +| LOAD | GR0 | 00 | 0xD0 | | +| CMP | GR0 | 01 | | 0x0001 | +| BNE | | | | label1 | +| | | | | | +| HALT | | | | | ### Tillfälle 1 |
