470 likes | 621 Views
Riistvarapõhine programmeerimine. Loeng 4 Arvuti käsustik, aritmeetilised käsud. Arvuti käsustik I. Aritmeetilised käsud Loogilised käsud Andmelaadimise käsud Sisend/väljund käsud Siirdekäsud Stringikäsud Muud käsud. Arvuti käsustik II. Kodeerimine – Basic Instruction Encoding.
E N D
Riistvarapõhine programmeerimine Loeng 4 Arvuti käsustik, aritmeetilised käsud
Arvuti käsustik I • Aritmeetilised käsud • Loogilised käsud • Andmelaadimise käsud • Sisend/väljund käsud • Siirdekäsud • Stringikäsud • Muud käsud ID218 Riistvaralähedane programmeerimine
Arvuti käsustik II Kodeerimine – Basic Instruction Encoding ID218 Riistvaralähedane programmeerimine
Arvuti käsustik III Mov ax, bx iii = 110 mov reg, reg rr = 00 ax mmm = 001 bx 11000001 = 0C1h ID218 Riistvaralähedane programmeerimine
Arvuti käsustik IV Mov ax, [1000] iii = 110 mov reg, mem rr = 00 ax mmm = 110[1000] 11000110 00000000 00010000 0C6h, 00h, 10h ID218 Riistvaralähedane programmeerimine
Arvuti käsustik V Kodeerimine – Single Operand Instruction Encoding ID218 Riistvaralähedane programmeerimine
Arvuti käsustik VI Kodeerimine – Zero Operand Instruction Encoding ID218 Riistvaralähedane programmeerimine
Arvuti käsustik VII Kodeerimine – JUMP Instruction Encoding ID218 Riistvaralähedane programmeerimine
Signed / Unsigned I J byte ? Unsigned byte j K sbyte ? Signed byte k I db ? Nosigned byte k ID218 Riistvaralähedane programmeerimine
Signed / unsigned II Mov j, -5; 0xFB Unsigned j (0 - 255), 251 Mov k, 255; 0xFF Signed k (-128 - 127), -128 ID218 Riistvaralähedane programmeerimine
Flag Register ID218 Riistvaralähedane programmeerimine
Aritmeetilised käsud • Liitmise käsud • Lahutamise käsud • Korrutamise käsud • Jagamise käsud ID218 Riistvaralähedane programmeerimine
Liitmise käsud I • Add A, B • Adc A, B • Inc A ID218 Riistvaralähedane programmeerimine
Liitmise käsud II Add A, B A = A + B Lipud: Signed Unsigned Of X Cf X Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Liitmise käsud III Adc A, B A = A + B + Cf Lipud: Signed Unsigned Of X Cf X Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Liitmise käsud IV J:= K + M mov ax, K add ax, M mov J, ax • Ainult üks mäluoperand • Ühe pikkusega operandid ID218 Riistvaralähedane programmeerimine
Liitmise käsud V J := K + M + N + P mov ax, K add ax, M add ax, N add ax, P mov J, ax ID218 Riistvaralähedane programmeerimine
Liitmise käsud VI J := K + J mov ax, J mov bx, K add ax, bx mov J, ax ID218 Riistvaralähedane programmeerimine
Liitmise käsud VI J := K + J mov ax, J add ax, K mov J, ax ID218 Riistvaralähedane programmeerimine
Liitmise käsud VII J := K + J mov ax, K add J, ax ID218 Riistvaralähedane programmeerimine
Liitumise käsud VIII add al, 2 ;Two bytes long add bl, 2 ;Three bytes long add ax, 2 ;Three bytes long add bx, 2 ;Four bytes long ID218 Riistvaralähedane programmeerimine
Liitmise käsud IX Inc A A = A + 1 Lipud: Signed Unsigned Of X Cf - - Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Lahutamise käsud I • Sub A, B • Sbb A, B • Dec A • Cmp A, B • Neg A ID218 Riistvaralähedane programmeerimine
Lahutamise käsud II Sub A, B A = A - B Lipud: Signed Unsigned Of X Cf X Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Lahutamise käsud III Sbb A, B A = A – B - Cf Lipud: Signed Unsigned Of X Cf X Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Lahutamise käsud IV Dec A A = A - 1 Lipud: Signed Unsigned Of X Cf - - Sf X X Zf X X Af X X Pf X X ID218 Riistvaralähedane programmeerimine
Lahutamise käsud V J := K – J mov ax, K sub J, ax J = J – K ??? ID218 Riistvaralähedane programmeerimine
Lahutamise käsud VI J := K – J mov ax, K sub ax, J mov J, ax J = K – J !!! ID218 Riistvaralähedane programmeerimine
Lahutamise käsud VII J := J - (K + M) J:=J – K – M mov ax, J sub ax, K ; J:=J - K sub ax, M ; J:=J - M mov J, ax ID218 Riistvaralähedane programmeerimine
Lahutamise käsud VIII J := J - (K + M) mov ax, K add ax, M ; K + M sub J, ax ; J:= J – (K + M) ID218 Riistvaralähedane programmeerimine
Lahutamise käsud IX Cmp A, B A – B => FR If ((Sf=0)&(Of=1)) or ((Sf=1)&(Of=0)) then A < B If ((Sf=0)&(Of=0)) or ((Sf=1)&(Of=1)) then A > B ID218 Riistvaralähedane programmeerimine
Lahutamise käsud X A BS O ------ ------ - - FFFF (-1) - FFFE (-2) 0 0 8000 (-32768) - 0001 (1) 0 1 FFFE (-2) - FFFF (-1) 1 0 7FFF (32767) - FFFF (-1) 1 1 ID218 Riistvaralähedane programmeerimine
Lahutamise käsud XI Neg A A = 0 - A Lipud: Of X Cf X Sf X Zf X Af X Pf X ID218 Riistvaralähedane programmeerimine
Lahutamise käsud XII J := -K mov ax, K neg ax mov J, ax J := - J neg J ID218 Riistvaralähedane programmeerimine
Korrutamise käsud I Unsigned • Mul reg • Mul mem Signed • Imul reg • Imul mem ID218 Riistvaralähedane programmeerimine
Korrutamise käsud II mul operand8 imul operand8 ax := al * operand8 ID218 Riistvaralähedane programmeerimine
Korrutamise käsud III mul operand16 imul operand16 dx:ax := ax * operand16 ID218 Riistvaralähedane programmeerimine
Korrutamise käsud IV Lipud: Of X Cf X Af X ; ei ole tähtis Pf X ; ei ole tähtis Sf X ; ei ole tähtis Zf X ; ei ole tähtis ID218 Riistvaralähedane programmeerimine
Jagamise käsud I Unsigned • Div reg • Div mem Signed • Idiv reg • Idiv mem ID218 Riistvaralähedane programmeerimine
Jagamise käsud II divoperand8 idivoperand8 al := ax / operand8 ah := jääk ID218 Riistvaralähedane programmeerimine
Jagamise käsud III divoperand16 idivoperand16 ax := dx:ax / operand16 dx := jääk ID218 Riistvaralähedane programmeerimine
Jagamise käsud IV Lipud: Af, Cf, Of, Pf, Sf, Zf - ei oma tähtsust Hoiatus: Jagatav => 2 * (Jagaja) Jagaja != 0 (Arvuti mõistes) Jagatis => (Jagatav) / 2 0800h : 2 = 0400h ??? ID218 Riistvaralähedane programmeerimine
Jagamise käsud V J := K / M (unsigned) mov ax, K ;Lugeja mov dx, 0 ;Pikk lugeja ; < Jagaja != 0 > div M ;Jagamine mov J, ax ID218 Riistvaralähedane programmeerimine
Jagamise käsud VI J := K / M (signed) mov ax, K ;Lugeja cwd ;Pikk lugeja ; < Jagaja != 0 > idiv M ;Jagamine mov J, ax ID218 Riistvaralähedane programmeerimine
Jagamise käsud VII J := (K*M)/P mov ax, K imul M ; 32-bit korrutis idiv P; 32-bit jagatav mov J, ax ID218 Riistvaralähedane programmeerimine
Kokkuvõte I Aritmeetilised käsud: • Liitmine • Lahutamine • Korrutamine • Jagamine ID218 Riistvaralähedane programmeerimine
Kokkuvõte II Aritmeetilised käsud: • Signed operand • Unsigned operand • 8-bit operand • 16-bit operand ID218 Riistvaralähedane programmeerimine