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 02/07/2004 ID218 Riistvaralähedane programmeerimine Arvuti käsustik II Kodeerimine.
Download ReportTranscript 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 02/07/2004 ID218 Riistvaralähedane programmeerimine Arvuti käsustik II Kodeerimine.
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 02/07/2004 ID218 Riistvaralähedane programmeerimine 2 Arvuti käsustik II Kodeerimine – Basic Instruction Encoding 02/07/2004 ID218 Riistvaralähedane programmeerimine 3 Arvuti käsustik III Mov ax, bx iii = rr = mmm = 11000001 02/07/2004 110 mov 00 ax 001 bx = 0C1h ID218 Riistvaralähedane programmeerimine reg, reg 4 Arvuti käsustik IV Mov ax, [1000] iii = 110 rr = 00 mmm = 110 11000110 00000000 0C6h, 00h, 10h 02/07/2004 mov reg, mem ax [1000] 00010000 ID218 Riistvaralähedane programmeerimine 5 Arvuti käsustik V Kodeerimine – Single Operand Instruction Encoding 02/07/2004 ID218 Riistvaralähedane programmeerimine 6 Arvuti käsustik VI Kodeerimine – Zero Operand Instruction Encoding 02/07/2004 ID218 Riistvaralähedane programmeerimine 7 Arvuti käsustik VII Kodeerimine – JUMP Instruction Encoding 02/07/2004 ID218 Riistvaralähedane programmeerimine 8 Signed / Unsigned I J K byte sbyte ? ? Unsigned byte j Signed byte k I db ? Nosigned byte k 02/07/2004 ID218 Riistvaralähedane programmeerimine 9 Signed / unsigned II Mov j, -5; 0xFB Unsigned j (0 - 255), 251 Mov k, 255; 0xFF Signed k (-128 - 127), -128 02/07/2004 ID218 Riistvaralähedane programmeerimine 10 Flag Register 02/07/2004 ID218 Riistvaralähedane programmeerimine 11 Aritmeetilised käsud Liitmise käsud Lahutamise käsud Korrutamise käsud Jagamise käsud 02/07/2004 ID218 Riistvaralähedane programmeerimine 12 Liitmise käsud I Add Adc Inc 02/07/2004 A, B A, B A ID218 Riistvaralähedane programmeerimine 13 Liitmise käsud II Add A, B Lipud: Signed Of X Cf Sf X Zf X Af X Pf X 02/07/2004 A=A+B Unsigned ID218 Riistvaralähedane programmeerimine X X X X X 14 Liitmise käsud III Adc A, B Lipud: Signed Of X Cf Sf X Zf X Af X Pf X 02/07/2004 A = A + B + Cf Unsigned ID218 Riistvaralähedane programmeerimine X X X X X 15 Liitmise käsud IV J:= K + M mov add mov ax, K ax, M J, ax Ainult üks mäluoperand Ühe pikkusega operandid 02/07/2004 ID218 Riistvaralähedane programmeerimine 16 Liitmise käsud V J := K + M + N + P mov ax, K add ax, M add ax, N add ax, P mov J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 17 Liitmise käsud VI J := K + J mov ax, J mov bx, K add ax, bx mov J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 18 Liitmise käsud VI J := K + J mov ax, J add ax, K mov J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 19 Liitmise käsud VII J := K + J mov ax, K add J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 20 Liitumise käsud VIII add add al, 2 bl, 2 ;Two bytes long ;Three bytes long add add ax, 2 bx, 2 ;Three bytes long ;Four bytes long 02/07/2004 ID218 Riistvaralähedane programmeerimine 21 Liitmise käsud IX Inc A Lipud: Of Cf Sf Zf Af Pf 02/07/2004 Signed X X X X X A=A+1 Unsigned ID218 Riistvaralähedane programmeerimine X X X X 22 Lahutamise käsud I Sub Sbb Dec Cmp Neg 02/07/2004 A, B A, B A A, B A ID218 Riistvaralähedane programmeerimine 23 Lahutamise käsud II Sub Lipud: Of Cf Sf Zf Af Pf 02/07/2004 A, B Signed X A=A-B Unsigned X X X X X X X X X ID218 Riistvaralähedane programmeerimine 24 Lahutamise käsud III Sbb Lipud: Of Cf Sf Zf Af Pf 02/07/2004 A, B Signed X A = A – B - Cf Unsigned X X X X X X X X X ID218 Riistvaralähedane programmeerimine 25 Lahutamise käsud IV Dec Lipud: Of Cf Sf Zf Af Pf 02/07/2004 A Signed X X X X X A=A-1 Unsigned ID218 Riistvaralähedane programmeerimine X X X X 26 Lahutamise käsud V J := K – J mov ax, K sub J, ax J = J – K ??? 02/07/2004 ID218 Riistvaralähedane programmeerimine 27 Lahutamise käsud VI J := K – J mov ax, K sub ax, J mov J, ax J = K – J !!! 02/07/2004 ID218 Riistvaralähedane programmeerimine 28 Lahutamise käsud VII J := J - (K + M) J:=J – K – M mov sub sub mov 02/07/2004 ax, J ax, K ax, M J, ax ; J:=J - K ; J:=J - M ID218 Riistvaralähedane programmeerimine 29 Lahutamise käsud VIII J := J - (K + M) mov add sub 02/07/2004 ax, K ax, M J, ax ; K + M ; J:= J – (K + M) ID218 Riistvaralähedane programmeerimine 30 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 02/07/2004 ID218 Riistvaralähedane programmeerimine 31 Lahutamise käsud X A ------ ------ - FFFF (-1) 8000 (-32768) FFFE (-2) 7FFF (32767) - 02/07/2004 B FFFE 0001 FFFF FFFF (-2) (1) (-1) (-1) ID218 Riistvaralähedane programmeerimine S O 0 0 1 1 0 1 0 1 32 Lahutamise käsud XI Neg Lipud: Of Cf Sf Zf Af Pf 02/07/2004 A A=0-A X X X X X X ID218 Riistvaralähedane programmeerimine 33 Lahutamise käsud XII J := -K mov ax, K neg ax mov J, ax J := - J neg J 02/07/2004 ID218 Riistvaralähedane programmeerimine 34 Korrutamise käsud I Unsigned Mul reg Mul mem Signed Imul Imul 02/07/2004 reg mem ID218 Riistvaralähedane programmeerimine 35 Korrutamise käsud II mul imul operand8 operand8 ax := al * operand8 02/07/2004 ID218 Riistvaralähedane programmeerimine 36 Korrutamise käsud III mul imul operand16 operand16 dx:ax := ax * operand16 02/07/2004 ID218 Riistvaralähedane programmeerimine 37 Korrutamise käsud IV Lipud: Of Cf Af Pf Sf Zf 02/07/2004 X X X X X X ; ; ; ; ei ei ei ei ole ole ole ole ID218 Riistvaralähedane programmeerimine tähtis tähtis tähtis tähtis 38 Jagamise käsud I Unsigned Div reg Div mem Signed Idiv Idiv 02/07/2004 reg mem ID218 Riistvaralähedane programmeerimine 39 Jagamise käsud II div idiv operand8 operand8 al := ax / ah := jääk 02/07/2004 operand8 ID218 Riistvaralähedane programmeerimine 40 Jagamise käsud III div idiv operand16 operand16 ax := dx:ax dx := jääk 02/07/2004 / operand16 ID218 Riistvaralähedane programmeerimine 41 Jagamise käsud IV Lipud: Af, Cf, Of, Pf, Sf, Zf tähtsust - ei oma Hoiatus: Jagatav => 2 * (Jagaja) Jagaja != 0 (Arvuti mõistes) Jagatis => (Jagatav) / 2 0800h : 2 = 0400h ??? 02/07/2004 ID218 Riistvaralähedane programmeerimine 42 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 02/07/2004 ID218 Riistvaralähedane programmeerimine 43 Jagamise käsud VI J := K / M (signed) mov ax, K ;Lugeja cwd ;Pikk lugeja ; < Jagaja != 0 > idiv M ;Jagamine mov J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 44 Jagamise käsud VII J := (K*M)/P mov ax, K imul M ; 32-bit korrutis idiv P ; 32-bit jagatav mov J, ax 02/07/2004 ID218 Riistvaralähedane programmeerimine 45 Kokkuvõte I Aritmeetilised käsud: Liitmine Lahutamine Korrutamine Jagamine 02/07/2004 ID218 Riistvaralähedane programmeerimine 46 Kokkuvõte II Aritmeetilised käsud: Signed operand Unsigned operand 8-bit operand 16-bit operand 02/07/2004 ID218 Riistvaralähedane programmeerimine 47