8/13/2007 1 Tập lệnh liên quan đến Byte, word, Double word 1/Xử lý toán học, tăng giảm thanh ghi 2/Tập lệnh lôgíc với Byte, Word, Double Word 3/Tập lệnh dịch chuyển nội dung thanh ghi, ô nhớ 4/Tập lệnh xoay và lật thanh ghi 5/Tập lệnh so sánh nội dung thanh ghi, ô nhớ 6/ Tập lệnh chuyển đổi kiểu dữ liệu 7/Lệnh nhẩy 8/Lệnh For-Next Các lệnh toán học, tăng giảm thanh ghi Các lệnh cộng, trừ, nhân, căn bậc hai , lợng giác, tăng, giảm thanh ghi tác động lên 3 cờ nhớ: SM1.0: Cờ không SM1.1: Cờ tràn SM1.2: Cờ âm Các lệnh chia tác động lên 4 cờ nhớ: SM1.0; SM1.1; SM1.2; SM1.3: Cờ chia không 8/13/2007 2 Nhãm lÖnh to¸n häc: ADD_I: LÖnh céng sè nguyªn 16 bÝt ADD_DI: LÖnh céng sè nguyªn 32 bÝt ADD_R: LÖnh céng sè thùc Thao t¸c: IN1 + IN2 → OUT SUB_I: LÖnh trõ sè nguyªn 16 bÝt SUB_DI: LÖnh trõ sè nguyªn 32 bÝt SUB_R: LÖnh trõ sè thùc Thao t¸c: IN1 - IN2 → OUT MUL_I: LÖnh nh©n sè nguyªn 16 bÝt MUL_DI: LÖnh nh©n sè nguyªn 32 bÝt MUL_R: LÖnh nh©n sè thùc Thao t¸c: IN1 * IN2 → OUT DIV_I: LÖnh chia sè nguyªn 16 bÝt DIV_DI: LÖnh chia sè nguyªn 32 bÝt DIV_R: LÖnh chia sè thùc Thao t¸c: IN1 / IN2 → OUT Chó ý: PhÐp to¸n nh©n 2 sè nguyªn 16 bÝt, kÕt qu¶ sè nguyªn 16 bÝt PhÐp to¸n nh©n 2 sè nguyªn 32 bÝt, kÕt qu¶ sè nguyªn 32 bÝt §èi víi phÐp chia sè nguyªn, phÇn d− kh«ng ®−îc l−u l¹i Thao t¸c (+): IN1 + OUT → OUT Thao t¸c (-): OUT - IN1 → OUT Thao t¸c (*): IN1 * OUT → OUT Thao t¸c (/): OUT / IN1 → OUT 8/13/2007 3 LD I0.0 +I AC1, AC0 *I AC1, VW100 /I VW10, VW200 PhÐp céng: PhÐp nh©n: PhÐp chia: LD I0.0 +R AC1, AC0 *R AC1, VD100 /R VD10, VD200 PhÐp céng: PhÐp nh©n: PhÐp chia: 8/13/2007 4 Nhân, chia có số d: MUL: Lệnh nhân DIV: Lệnh chia Thao tác: IN1 * IN2 OUT Thao tác: IN1 / IN2 OUT Thao tác: IN1 * OUT OUT Thao tác: OUT / IN1 OUT Chú ý: Kết quả phép nhân là số nguyên 32 bít Đối với phép chia số nguyên, phần d đợc lu lại Phép nhân: Phép chia: VW202: chứa thơng số VW200: chứa phần d 8/13/2007 5 Nhãm lÖnh l−îng gi¸c, khai c¨n, e mò: SIN(IN) = OUT COS(IN) = OUT TAN(IN) = OUT LN(IN) = OUT EXP(IN) = OUT SQRT(IN) = OUT §Ó thùc hiÖn hµm x y : EXP(Y*LN(X)) Nhãm lÖnh t¨ng vµ gi¶m néi dung « nhí: T¨ng: IN + 1 = OUT Gi¶m: IN - 1 = OUT T¨ng: OUT + 1 = OUT Gi¶m: OUT - 1 = OUT 8/13/2007 6 Chú ý: Lệnh tăng (INC_B) và giảm (DEC_B) là loại lệnh không dấu. Lệnh tăng (INC_W) và giảm (DEC_W) là loại lệnh có dấu (bít dấu có ảnh hởng đến kết quả) 16#7FFF > 16#8000. Lệnh tăng (INC_D) và giảm (DEC_D) là loại lệnh có dấu (bít dấu có ảnh hởng đến kết quả) 16#7FFFFFFF > 16#80000000. SM1.2: cờ âm (đối với W và D) Tập lệnh với byte, word, double word Nhóm lệnh đảo nội dung thanh ghi, tác động lên 1 cờ nhớ: SM1.0: Cờ không Nhóm lệnh AND, OR, XOR: SM1.0: Cờ không 8/13/2007 7 Nhãm lÖnh ®¶o néi dung thanh ghi: INV_B: §¶o néi dung 1 byte INV_W: §¶o néi dung 1 word INV_DW: §¶o néi dung 1 double word Thao t¸c: ~IN = OUT LÖnh nghÞch ®¶o trªn tõng bÝt cña ®èi sè: IN: 00110101 OUT: 11001010 Thao t¸c: ~OUT = OUT Nhãm lÖnh AND, OR, XOR: Thao t¸c: WAND: IN1 IN2 = OUT WOR: IN1 IN2 = OUT WXOR: IN1 IN2 = OUT & ≥ = Thao t¸c: WAND: IN1 OUT = OUT WOR: IN1 OUT = OUT WXOR: IN1 OUT = OUT & ≥ = 8/13/2007 8 Nhãm lÖnh dÞch chuyÓn thanh ghi, « nhí Nhãm lÖnh dÞch chuyÓn Nhãm lÖnh dÞch chuyÓn khèi 8/13/2007 9 Nhóm lệnh dịch chuyển: Thao tác: IN OUT Lệnh sao chép nội dung vùng nhớ IN sang vị trí vùng nhớ mới OUT. Nội dung của IN không bị thay đổi sau lệnh dịch chuyển. Nhóm lệnh dịch chuyển khối: Thao tác: IN OUT N: Số lợng dữ liệu cần sao chép, N = 1- 255. Lệnh sao chép một mảng dữ liệu, kể từ địa chỉ đặt trong IN. 8/13/2007 10 VÝ dô: KÕt qu¶ thao t¸c: Nhãm lÖnh xoay vµ lËt thanh ghi Nhãm lÖnh lËt ph¶i, lËt tr¸i, xoay ph¶i, xoay tr¸i. LÖnh t¸c ®éng lªn 2 cê nhí SM1.0: Cê kh«ng SM1.1: Cê trµn LÖnh lËt c¸c bit thanh ghi. [...]... VW102 18 0, VW104 30 0, VW106 36 0, VW108 M STL: 4) LD TON 5) LDW> S S 6) LDW>= S R 7) LDW>= S S R R M0.1 T3 7, 380 T3 7, VW100 Q0. 1, 1 Q0. 4, 1 T3 7, VW102 Q0. 6, 1 Q0. 4, 1 T3 7, VW104 Q0. 0, 1 Q0. 5, 1 Q0. 1, 1 Q0. 6, 1 t3 t4 LDN R 3) LD O AN = 2) t I0.1 Q0. 0, 7 I0.0 M0.1 I0.1 M0.1 8) LDW>= S R 9) LDW>= R R S S R T3 7, VW106 Q0. 2, 1 Q0. 0, 1 T3 7, VW108 Q0. 2, 1 Q0. 5, 1 Q0. 1, 1 Q0. 4, 1 T3 7, 1 21 8/13/2007 Điều khiển... VW100 Q0. 1, 1 S Q0. 4, 1 T3 7, VW102 5) LDW>= S Q0. 6, 1 R Q0. 4, 1 T3 7, VW104 6) LDW>= S Q0. 0, 1 S Q0. 5, 1 R Q0. 1, 1 R Q0. 6, 1 T3 7, VW106 7) LDW>= S Q0. 2, 1 24 8/13/2007 M STL: R Q0. 0, 1 8) LDW>= T3 7, VW108 R Q0. 2, 1 R Q0. 5, 1 S Q0. 1, 1 S Q0. 4, 1 R T3 7, 1 Rest program 2) LDN O R R R 3) LD TON 4) LDW>= L0.0 Erase_bit Bool IN-OUT S S 1) LDN I0.2 5) LDW>= A I0.1 R = M0.2 R R I0.1 I0.2 Q0. 2, 1 Q0. 6, 1 L0. 0,. .. 0, VW100 MOVW 12 0, VW102 MOVW 18 0, VW104 MOVW 30 0, VW106 MOVW 36 0, VW108 MOVW 3 0, VW 110 MOVW 6 0, VW112 2) LD I0.0 O M0.0 A I0.1 = M0.0 3) LD I0.2 A M0.0 S V0. 0, 1 4) LD V0.0 CALL NORMAL, V0.0 LDN I0.2 5) A M0.0 S V0. 1, 1 LD V0.1 6) CALL REST, V0.1 M STL: Normal program L0.0 Erase_bit I0.2 1) LD A = 2) LDN ON R R 3) LD TON 4) LDN> S Bool IN-OUT I0.1 M0.1 I0.1 I0.2 Q0. 0, 7 L0. 0, 1 M0.1 T3 7, +380 T3 7,. .. 1, 2, 3, 4 Yi 2 t2 3 t3 4 t4 I0.0 0 0 Đỏ A, L Xanh B L = t1 I0.1 Đỏ A, L Vàng B L = t2 Yi Xanh A L Đỏ B L = t3 Vàng A L Đỏ B L = t4 t1/1/12s Yi = 1, 2, 3, 4 M Q0.1 L Q0.4 L = 12s 2 t2/1/18s Q0.1 L Q0.6 L = 6s 3 t3/1/30s Q0.0 L Q0.5 L = 12s 4 t4/1/36s Q0.2 L Q0.5 L = 6s 1 20 8/13/2007 T-current 360 300 180 120 t1 t2 M STL: 1) LD MOVW MOVW MOVW MOVW MOVW SM0.1 0, VW100 12 0, VW102 18 0, VW104 30 0, VW106... t4 I0.0*~I0.2 0 5 t5/5/3s 6 Đỏ A, L Xanh B L = t1 Đỏ A, L Vàng B L = t2 Xanh A L Đỏ B L = t3 Vàng A L Đỏ B L = t4 D Yi Yi = 1, 2, 3, 4, 5, 6 Vàng A L Vàng B L = t5 I0.0*I0.2 Q0.2 L Q0.6 L = 3s 1 Q0.1 L Q0.4 L = 12s ~Q0.2 L ~Q0.6 L = 3s 2 Q0.1 L Q0.6 L = 6s I0.2 t6/5/6s t2/1/18s 3 t3/1/30s 4 ~I0.2 t4/1/36s Q0.0 L Q0.5 L = 12s Q0.2 L Q0.5 L = 6s I0.1 Yi Yi = 1, 2, 3, 4, 5, 6 M*~CD 23 8/13/2007 M STL: Main... kín sang phải, hoặc sang trái, theo số lần đặt trớc N Chú ý: Với lệnh lật: Số lần lật tối đa của lệnh bằng kích thớc toán hạng Ví dụ: N > 8, lệnh làm việc với byte, số lần lật tối đa là 8 N>1 6, lệnh làm việc với word, số lần lật tối đa là 16 N>3 2, lệnh làm việc với DW, số lần lật tối đa là 32 Sau khi lật, nội dung thanh ghi có giá trị 0, thì cờ không đợc set lên 1 11 8/13/2007 SLW VW20 0,3 Trớc khi lật... 3) LD TON 4) LDW>= L0.0 Erase_bit Bool IN-OUT S S 1) LDN I0.2 5) LDW>= A I0.1 R = M0.2 R R I0.1 I0.2 Q0. 2, 1 Q0. 6, 1 L0. 0, 1 M0.2 T3 8, +80 T3 8, VW 110 Q0. 2, 1 Q0. 6, 1 T3 8, VW112 Q0. 2, 1 Q0. 6, 1 T3 8, 1 Điều khiển nhiệt độ kho lạnh Trong kho sử dụng hai máy nén (2 máy lạnh ), máy A và máy B Yêu cầu điều khiển nh sau: Khi nhiệt độ kho lạnh trên 00C thì chạy cả hai máy A và B Khi nhiệt độ kho lạnh nằm trong... khiển đến vị trí khai báo label (LBL) số thứ tự N Hai lệnh JMP và LBL phải đợc đặt trong cùng một kiểu chơng trình 17 8/13/2007 Ví dụ: Chơng trình chính Chơng trình con Chơng trình phục vụ ngắt Để thực hiện lệnh JMP, đỉnh ngăn xếp phải có lôgic 1 13.7 Lệnh lặp FOR-NEXT Thao tác: Thực hiện đoạn chơng trình bên trong vòng lặp For-Next với số lần đặt trớc INDX: Địa chỉ lu giá trị ban đầu của vòng lặp (Địa... vòng For-Next, giá trị INDX đợc tăng lên 1, khi INDX bằng với FINAL thì vòng For kết thúc Nếu INIT > FINAL, thì vòng For không thực hiện Các lệnh For-Next đợc phép lồng nhau tối đa 8 lần 18 8/13/2007 Một số ví dụ ứng dụng 1/ Điều khiển đèn đờng không nháy đèn về đêm 2/ Điều khiển đèn đờng có nháy đèn về đêm 3/ Điều khiển nhiệt độ kho lạnh Điều khiển đèn đờng không nháy đèn về đêm Lập chơng trình điều... nguyên, double word, real là lệnh có dấu Lệnh chuyển kiểu dữ liệu Có thể chuyển từ: Byte Integer; Integer Byte; Integer DInteger Integer String; DInteger Integer; DInteger Real DInteger String; Real String; Integer ASCII; DInteger ASCII; Real ASCII; String Integer; String DInteger; String Real; BCD Integer; Integer BCD; Chuyển đổi mã bẩy đoạn Lệnh nhẩy Khi lệnh JMP đợc thực hiện, chơng trình . 8/13/2007 3 LD I0.0 +I AC 1, AC0 *I AC 1, VW100 /I VW1 0, VW200 PhÐp céng: PhÐp nh©n: PhÐp chia: LD I0.0 +R AC 1, AC0 *R AC 1, VD100 /R VD1 0, VD200 PhÐp céng: PhÐp. LÖnh nghÞch ®¶o trªn tõng bÝt cña ®èi sè: IN: 00 1101 01 OUT: 1100 1 010 Thao t¸c: ~OUT = OUT Nhãm lÖnh AND, OR, XOR: Thao t¸c: WAND: IN1 IN2 = OUT WOR: IN1 IN2