Lectures Binary College
Lectures Binary College
dhenave
Hyrje ne Informatike
• Kjo është shumë e vështirë për tu kuptuar nga një njeri. është një seri
numrash, fillimisht binar, por heksadecimal është më i zakonshëm
sot. Kjo filloi që nga ditët e para të llogaritjes, ku kishte mekanizma të
kufizuar të inputeve
Çdo lloj procesori ka grupin e vet të udhëzimeve specifike të makinës.
• Një udhëzim makine përbëhet nga disa bajt në memorje që i thotë
procesorit të kryejë një operacion të makinës.
• Procesori shikon udhëzimet e makinës në memorien kryesore njëra
pas tjetrës dhe kryen një funksionim të makinës për secilin udhëzim
të makinës.
• Mbledhja e udhëzimeve të makinës në memorien kryesore quhet
gjuhë programuese e makinës
Instruksionet
Advantazhet
Assembler
abstract interface
Computer
Machine Architecture
abstract interface
Language
Hardware Gate Logic
abstract interface
Platform
Electrical
Chips & Engineering
Hardware Physics
Logic Gates
hierarchy
Gjuha e makinës
Dualitet tjetër
• ALU operacionet
• Memory access operacionet
(addressing mode: si specifikohen operandët)
• Adresimi i menjëhershëm, LDA R1, 67 // R1=67
• Adresimi Direkt, LD R1, 67 // R1=M[67]
• Adresikimi Indirekt, LDI R1, R2 // R1=M[R2]
• Operacionet e kontrollit të rrjedhës
Shembulli 1:
// Mëposhtë R1,R2,R3 janë rregjistra, PC është program counter,
// dhe addr është ndonjë vlerë.
ADD R1,R2,R3 // R1 R2 + R3
ADDI R1,R2,47 // R1 R2 + 47
NOP // Do nothing
//
Makina
reset Screen
Computer
Keyboard
Makina
• Një 16-bit makinë përmban këto elemente:
inM
writeM
Instruction outM Data
instruction
CPU
Memory Memory
addressM
(ROM32K) (Memory)
pc
reset
Të dy çipat e memories janë 16-bit të gjerë dhe kanë hapësirë adresash 15-bit.
Makina
• Një 16-bit makinë përmban këto elemente:
Control: ROM është i ngarkuar me një sekuencë udhëzimesh 16-bitëshe, një për vendndodhjen
e memories, duke filluar nga adresa 0.
Ku vlera është ose një numër ose një simbol që i referohet një numri.
Pse A Instruksioni?
Ne kemi udhëzimin A për caktimin e adresave nëse është e nevojshme.
Shembull: @21
Efekti:
◼ Vendos regjistrin A në 21
comp:
0, 1, -1, D, A, !D, !A, -D, -A, D+1, A+1, D-1, A-1, D+A, D-A, A-D, D&A, D|A
M, !M, -M, M+1, M-1, D+M, D-M, M-D, D&M, D|M
simbolike binare
@17 0000 0000 0001 0001
translate
D+1; JLE 1110 0111 1100 0110
execute
hardëare
Gjuha e makinës
Kod (shembull) Ekzekutimi
// Computes 1+...+RAM[0] 0000000000010000
// And stored the sum in RAM[1] 1110111111001000
@i 0000000000010001
M=1 // i = 1 1110101010001000
@sum 0000000000010000
M=0 // sum = 0 1111110000010000
(LOOP) 0000000000000000
@i // if i>RAM[0] goto WRITE 1111010011010000
D=M 0000000000010010
@R0 1110001100000001
D=D-M 0000000000010000
@WRITE 1111110000010000
D;JGT assemble 0000000000010001
@i // sum += i 1111000010001000
D=M 0000000000010000
@sum 1111110111001000
M=D+M 0000000000000100
@i // i++ 1110101010000111
M=M+1 0000000000010001
@LOOP // goto LOOP 1111110000010000
0;JMP 0000000000000001
(WRITE) 1110001100001000
@sum 0000000000010110
D=M 1110101010000111
@R1
M=D // RAM[1] = the sum
(END)
@END Ne fokusohemi në shkrimin e kodit assembler
0;JMP
Regjistrat dhe memorja
• D: data register
• A: address/data register
• M: memoria momentalisht e selektuar, M=RAM[12]
Simbolet
symbol value symbol value
R0 0 SP 0
R1 1 LCL 1
R2 2 ARG 2
… … THIS 3
R15 15 THAT 4
SCREEN 16384
KBD 24576
1. Vendosni D në A-1
2. Vendosni A dhe D në A + 1
3. Vendos D në 19
4. D++
5. Vendos D - RAM[17]
6. Vendos RAM[5034] në D - 1
8. Vendos 1 ne RAM[7],
dhe ruaj rezultatin në D
Detyra 1. 1. D = A-1
Implementoni hapat e mëtejshme
2. AD=A+1
3. @19
1. Vendosni D në A-1 D=A
2. Vendosi A dhe D në A + 1 4. D=D+1
5. @17
3. Vendos D në 19 D=M
4. D++ 6. @5034
M=D-1
5. D=RAM[17]
7. @171
6. Vendos RAM[5034] në D - 1 D=A
@53
7. Vendos RAM[53] to 171
M=D
8. Vendos 1 ne RAM[7], 8. @7
dhe ruaj rezultatin në D
D=M+1
Detyra 2.
• Mbledhja e dy numrave
Përfundoni siç duhet
@6
0; JMP
Detyra 3.
// Detyra: të bëhet swap.
// temp = R1
// R1 = R0
// R0 = temp
Detyra 3.
// Detyra: të bëhet swap.
// temp = R1
// R1 = R0
// R0 = temp
@R1
D=M
@temp
M=D // temp = R1
@R0
D=M
@R1
M=D // R1 = temp
@temp
D=M
@R0
M=D // R0 = temp
(END)
@END
0;JMP