1.2.1 Ange talområdena för följande heltalstyper i C på hexadecimal form (Avser ARM-v6):
a) unsigned char;
b) signed char;
c) unsigned short;
d) signed short;
e) unsigned int;
f) signed int;
g) unsigned signed long;
h) signed long;
a)0..0xFF b)0x80..0x7F c)0..0xFFFF d)0x8000..0x7FFF e)0..0xFFFFFFFF f)0x80000000..0x7FFFFFFF g)0..0xFFFFFFFF h)0x80000000..0x7FFFFFFF
1.2.2. Utgå från följande deklarationer på global nivå:
signed char c;
signed short s;
unsigned short us;
signed int i;
unsigned int ui;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
c = us;
c = s;
c = ui;
c = i;
a) LDR R3,=us LDRH R3,[R3] LDR R2,=c STRB R3,[R2] b) LDR R3,=s LDRH R3,[R3] LDR R2,=c STRB R3,[R2] c) LDR R3,=ui LDR R3,[R3] LDR R2,=c STRB R3,[R2] eller: LDR R3,ui LDR R2,=c STRB R3,[R2] d) LDR R3,=i LDR R3,[R3] LDR R2,=c STRB R3,[R2] eller: LDR R3,i LDR R2,=c STRB R3,[R2]
1.2.3. Utgå från följande deklarationer på global nivå:
unsigned char uc;
signed short s;
unsigned short us;
signed int i;
unsigned int ui;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
uc = us;
uc = s;
uc = ui
uc = i;
Lösning: a) LDR R3,=us LDRH R3,[R3] LDR R2,=uc STRB R3,[R2] b) LDR R3,=s LDRH R3,[R3] LDR R2,=uc STRB R3,[R2] c) LDR R3,=ui LDR R3,[R3] LDR R2,=uc STRB R3,[R2] eller: LDR R3,ui LDR R2,=uc STRB R3,[R2] d) LDR R3,=i LDR R3,[R3] LDR R2,=uc STRB R3,[R2] eller: LDR R3,i LDR R2,=uc STRB R3,[R2]
1.2.4. Utgå från följande deklarationer på global nivå:
signed char c;
unsigned char uc;
signed short s;
signed int i;
unsigned int ui;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
s = uc;
s = c;
s = ui
s = i;
Lösning: a) LDR R3,=uc LDRB R3,[R3] LDR R2,=s STRH R3,[R2] b) LDR R3,=c LDRB R3,[R3] SXTB R3,R3 LDR R2,=s STRH R3,[R2] eller LDR R3,=c MOV R2,#0 LDRSB R3,[R3,R2] LDR R2,=s STRH R3,[R2] c) LDR R3,=ui LDR R3,[R3] LDR R2,=s STRH R3,[R2] eller: LDR R3,ui LDR R2,=s STRH R3,[R2] d) LDR R3,=i LDR R3,[R3] LDR R2,=s STRH R3,[R2] eller: LDR R3,i LDR R2,=s STRH R3,[R2]
1.2.5. Utgå från följande deklarationer på global nivå:
signed char c;
unsigned char uc;
unsigned short us;
signed int i;
unsigned int ui;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
us = uc;
us = c;
us = ui
us = i;
Lösning: a) LDR R3,=uc LDRB R3,[R3] LDR R2,=us STRH R3,[R2] b) LDR R3,=c LDRB R3,[R3] LDR R2,=us STRH R3,[R2] c) LDR R3,=ui LDR R3,[R3] LDR R2,=us STRH R3,[R2] eller: LDR R3,ui LDR R2,=us STRH R3,[R2] d) LDR R3,=i LDR R3,[R3] LDR R2,=us STRH R3,[R2] eller: LDR R3,i LDR R2,=us STRH R3,[R2]
1.2.6. Utgå från följande deklarationer på global nivå:
signed char c;
unsigned char uc;
signed short s;
unsigned short us;
signed int i;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
i = uc;
i = c;
i = us;
i = s;
Lösning: a) LDR R3,=uc LDRB R3,[R3] LDR R2,=i STR R3,[R2] b) LDR R3,=c LDRB R3,[R3] SXTB R3,R3 LDR R2,=i STR R3,[R2] eller LDR R3,=c MOV R2,#0 LDRSB R3,[R3,R2] LDR R2,=i STRH R3,[R2] c) LDR R3,=us LDRH R3,[R3] LDR R2,=i STR R3,[R2] d) LDR R3,=s LDR R3,[R3] SXTH R3,R3 LDR R2,=i STR R3,[R2] eller: LDR R3,=s MOV R2,#0 LDRSH R3,[R3,R2] LDR R2,=i STRH R3,[R2]
1.2.7. Utgå från följande deklarationer på global nivå:
signed char c;
unsigned char uc;
signed short s;
unsigned short us;
unsigned int ui;
visa hur följande tilldelningssatser kodas i ARM-v6 assemblerspråk:
ui = uc;
ui = c;
ui = us;
ui = s;
Lösning: a) LDR R3,=uc LDRB R3,[R3] LDR R2,=ui STR R3,[R2] b) LDR R3,=c LDRB R3,[R3] LDR R2,=ui STR R3,[R2] c) LDR R3,=us LDRH R3,[R3] LDR R2,=ui STR R3,[R2] d) LDR R3,=s LDRH R3,[R3] LDR R2,=ui STR R3,[R2]