summaryrefslogtreecommitdiffstats
path: root/tsea83.md
blob: 4d737cbe870ec902d42147edbd0a5c492cf6771a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# Datorkonstruktion
## Innehåll
```toc
```

## Föreläsning 1

## Föreläsning 2

## Föreläsning 3

## Föreläsning 4

## Föreläsning 5

## Föreläsning 6

## Föreläsning 7

## Föreläsning 8

## Föreläsning 9

## Föreläsning 10

## Föreläsning 11

## Laboration 1
- [x] Skriv ut
- [x] Läs igenom labbmanualen
- [x] Läs PM
- [x] Uppgift 1
- [x] Uppgift 2
- [ ] Uppgift 3
- [ ] Redovisa (v4ons 26/1 17-19 mux2)
- [ ] Redovisa (v4fre 28/1 08-10 mux2)

### 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            |
| SUB GRx,M,ADR   | GRx := GRx-PM(A)              | 00,01,10,11       | Z,N,O,C            |
| AND GRx,M,ADR   | GRx := GRx and PM(A)          | 00,01,10,11       | Z,N                |
| 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+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 |
| ----------- | --- | ------- |
| LOAD        | 0   | 0A      |
| STORE       | 1   | 0B      |
| ADD         | 2   | 0C      |
| SUB         | 3   | 0F      |
| AND         | 4   | 12      |
| LSR         | 5   | 15      |
| BRA         | 6   | 18      |
| BRN         | 7   | 1C      |
| HALT        | 8   | 21      |

### Uppgift 2
Assembly
| OP    | GRx | M   | ADR? | OPER?               |
| ----- | --- | --- | ---- | ------------------- |
| LOAD  | GR0 | 00  | 0xFE |                     |
| AND   | GR0 | 01  |      | 0000_0000_0000_1111 |
| STORE | GR0 | 00  | 0xFF |                     |
|       |     |     |      |                     |
| LOAD  | GR0 | 00  | 0xFE |                     |
| LSR   | GR0 | 01  |      | 4                   |
| AND   | GR0 | 01  |      | 0000_0000_0000_1111 |
| ADD   | GR0 | 00  | 0xFF |                     |
| STORE | GR0 | 00  | 0xFF |                     |
|       |     |     |      |                     |
| LOAD  | GR0 | 00  | 0xFE |                     |
| LSR   | GR0 | 01  |      | 8                   |
| AND   | GR0 | 01  |      | 0000_0000_0000_1111 |
| ADD   | GR0 | 00  | 0xFF |                     |
| STORE | GR0 | 00  | 0xFF |                     |
|       |     |     |      |                     |
| LOAD  | GR0 | 00  | 0xFE |                     |
| LSR   | GR0 | 01  |      | 12                  |
| AND   | GR0 | 01  |      | 0000_0000_0000_1111 |
| ADD   | GR0 | 00  | 0xFF |                     |
| STORE | GR0 | 00  | 0xFF |                     |
| HALT  |     |     |      |                     |

Maskinkod:
| ADR | OP (4) | GRx (2) | M (2) | ADR? (8) | OPER? (16) |
| --- | ------ | ------- | ----- | -------- | ---------- |
| 00  | 0      | 0       | 0     | FE       |            |
| 01  | 4      | 0       | 1     |          | 000F       |
| 02  | 1      | 0       | 0     | FF       |            |
|     |        |         |       |          |            |
| 03  | 0      | 0       | 0     | FE       |            |
| 04  | 5      | 0       | 1     |          | 0004       |
| 05  | 4      | 0       | 1     |          | 000F       |
| 06  | 2      | 0       | 0     | FF       |            |
| 07  | 1      | 0       | 0     | FF       |            |
|     |        |         |       |          |            |
| 08  | 0      | 0       | 0     | FE       |            |
| 09  | 5      | 0       | 1     |          | 0008       |
| 0A  | 4      | 0       | 1     |          | 000F       |
| 0B  | 2      | 0       | 0     | FF       |            |
| 0C  | 1      | 0       | 0     | FF       |            |
|     |        |         |       |          |            |
| 0D  | 0      | 0       | 0     | FE       |            |
| 0E  | 5      | 0       | 1     |          | 000C       |
| 0F  | 4      | 0       | 1     |          | 000F       |
| 10  | 2      | 0       | 0     | FF       |            |
| 11  | 1      | 0       | 0     | FF       |            |
| 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

### Tillfälle 2
## Laboration 2
- [ ] Skriv ut
- [ ] Läs PM
- [ ] Uppgift 2.7
- [ ] Uppgift 2.8
- [ ] Uppgift 3.1
- [ ] Uppgift 3.2
- [ ] Uppgift 3.3
- [ ] Uppgift 3.4
- [ ] Uppgift 4.1
- [ ] Uppgift 4.2
- [ ] Uppgift 4.3
- [ ] Uppgift 4.4
- [ ] Uppgift 4.5
- [ ] Redovisa

## Laboration 3
- [ ] Läs PM
- [ ] Planera
- [ ] Förberedelseuppgifter
- [ ] Labbuppgifter
- [ ] Redovisa

## Laboration 4
- [ ] Läs PM
- [ ] Planera
- [ ] Förberedelseuppgifter
- [ ] Labbuppgifter
- [ ] Redovisa
| | aaa