Môc lôc I . giíi thiÖu ii. c¸c thµnh phÇn cña lÖnh m¸y 1. CÊu tróc chung cña lÖnh m¸y 2. C¸c kiÓu thao t¸c iii. c¸c nhãm lÖnh cña bé vi xö lý 1. Nhãm lÖnh dÞch chuyÓn 2. Nhãm lÖnh sè häc 3. Nhãm lÖnh lo gic 4. Nhãm lÖnhvµo ra chuyªn dông 5. Nhãm lÖnh chuyÓn ®iÒu khiÓn 6. Nhãm lÖnh ®iÒu khiÓn hÖ thèng IV. c¸c chÕ ®é ®Þnh ®Þa chØ 1. ChÕ ®é ®Þnh ®Þa chØ tøc th× 2. ChÕ ®é ®Þnh ®Þa chØ thanh ghi 3. ChÕ ®é ®Þnh ®Þa chØ trùc tiÕp 4. ChÕ ®é ®Þnh ®Þa chØ gi¸n tiÕp qua thanh ghi 5. ChÕ ®é ®Þnh ®Þa chØ trùc tiÕp 6. ChÕ ®é ®Þnh ®Þa chØ dÞch chuyÓn I. GíI THIÖU CHUNG Mçi bé vi xö lý ®Òu ph¶i cã mét tËp lÖnh x¸c ®Þnh , tËp lÖnh thêng cã tõ hµng chôc ch cho ®Ðm hµng tr¨m lÖnh mçi lÖnh lµ mét chuçi sè nhÞ ph©n mµ bé vi xö lý hiÓu ®îc ®Ó thùc hiÖn mét thao t¸c nhÊt ®Þnh ®èi víi ngêi sö dông th× c¸c lÖnh ®îc m« t¶ b»ng c¸c kÝ hiÖu gîi nhí ( ®ã chÝnh lµ hîp ng÷ ) II . C¸C THµNH PHÇN CñA LÖNH M¸Y 1. CÊu tróc chung cña mét lÖnh m¸y M· thao t¸c ®Þa chØ c¸c to¸n h¹ng Trong ®ã m· thao t¸c lµ m· hãa cho thao t¸c mµ m¸y ph¶i thùc hiÖn nh÷ng m· nµy ®îc dÞch ra m· m¸y lµ c¸c chuçi sè nhÞ ph©n ®Þa chØ to¸n h¹ng :chØ ra n¬i chøa c¸c to¸n h¹ng mµ thao t¸c sÏ t¸c ®éng + to¸n h¹ng nguån : d÷ liÖu vµo cña thao t¸c +to¸n h¹ng ®Ých : d÷ liÖu ra cña thao t¸c vÝ dô : lÖnh dÞch chuyÓn BX vµo AX MOV AX,BX ; chuyÓn BX vµo AX Trong ®ã : + MOV lµ m· thao t¸c + AX , BX lµ ®Þa chØ to¸n h¹ng III.C¸C NHãM LÖNH CñA VI Xö Lý 1. Nhãm lÖnh dÞch chuyÓn a. LÖnh MOVE D¹ng lÖnh: MOV ®Ých , gèc LÖnh MOVE ®îc sö dông ®Ó chuyÓn d÷ liÖu tõ to¸n h¹ng nguån vµo to¸n h¹ng ®Ých vÝ dô: MOV AL,BL : chuyÓn néi dung cña BL vµo AL GØa sö tríc khi thùc hiÖn lÖnh MOVE néi dung cña AL vµ BL lµ 0AH 05H AL BL Sau khi thùc hiÖn lÖnh MOVE th× néi dung cña AL µ BL lµ 05H 05H AL BL Mét b¶n sao cña thanh ghi BL sÏ ®îc chuyÓn vµo thanh ghi AL cßn néi dung cña BL vÉn d÷ nguyªn ,gi¸ trÞ tríc ®ã cña AL bÞ viÕt chÌn lªn. Kh¶ n¨ng kÕt hîp gi÷a to¸n h¹ng nguån vµ to¸n h¹ng ®Ých cña lÖnh MOVE To¸n h¹ng ®Ých To¸n h¹ng gèc Thanh ghi ®a n¨ng Thanh ghi ®o¹n « nhí H»ng sè Thanh ghi ®a n¨ng Cã thÓ Cã thÓ Cã thÓ Kh«ng thÓ Thanh ghi ®o¹n Cã thÓ Kh«ng thÓ Cã thÓ Kh« ng thÓ « nhí Cã thÓ Cã thÓ Kh«ng thÓ Kh«ng thÓ H»ng sè Cã thÓ Kh«ng thÓ Cã thÓ kh«ng thÓ To¸n h¹ng nguån vµ to¸n h¹ng ®Ých ph¶i cïng kiÓu vÝ dô : nÕu to¸n h¹ng ®Ých lµ AX th× to¸n h¹ng nguån kh«ng®îc lµ AL b.lÖnh LOAD LÖnh LOAD dïng ®Ó n¹p d÷ liÖu tõ bé nhí ®Õn bé xö lý, lÖnh LOAD cã c¸c d¹ng sau: • LSD Load register and DS with words from memory: ViÕt lÖnh: LDS ®Ých, gèc +®Ých :lµ mét trong c¸c thanh ghi AX ,BX ,CX,DX ,SP, BP ,SI ,DI +gèc :lµ « nhí trong ®o¹n DS ®îc chØ râ trong lÖnh M« t¶: ®Ých gèc ,DS gèc + 2 §©y lµ lÖnh ®Ó n¹p vµo thanh ghi ®· chän vµ vµo DS tõ 4 « nhí liªn tiÕp.Mét trong nh÷ng øng dông cña lÖnh nµy lµ lµm cho SI vµDI chØ vµo ®Þa chØ ®Çu cña vïng nhí chøa chuçi gèc tríc khi dïng ®Õn lÖnhthao t¸c chuçi. LÖnh nµy kh«ng t¸c ®éng dÕn c¸c cê. • LEA load efective address( n¹p ®Þa chØ hiÖu dông vµo thanh ghi) ViÕt lÖnh: LEA ®Ých , gèc +®Ých : thêng lµ mét trong c¸c thanh ghi BX , CX, DX, BP , SI ,DI + gèc : lµ tªn biÕn trong ®o¹n DS ®îc chØ râ trong lÖnh M« t¶: ®Ých , ®Þa chØ lÖch cña gèc HoÆc ®Ých , ®Þa chØ hiÖu dông cña gèc §©y lµ lÖnh ®Î tÝnh dÞa chØ lÖch cña biÕn hoÆc dÞa chØ cña « nhí chän lµm gèc råi n¹p vµo thanh ghi ®· chän LÖnh nµy kh«ng t¸c ®éng ®Õn c¸c cê vÝ dô: LSA DX,MSG ; n¹p ®Þa chØ lÖch cña b¶n tin MSG vµo DX LSA CX,{BX}{DI} ; n¹p vµo CX ®Þa chØ hiÖu dông do BX va DI chØ ra
Bộ công thơng Trờng đại học công nghiệp hà nội Khoa Điện tử Bài tập lớn Môn học : kiến tróc m¸y tÝnh ĐỀ TÀI : NGUN LÝ TẬP LỆNH Giảng viên hớng dẫn: vũ thị thu hơng Sinh viên thùc hiƯn: Líp : LT TC- ®h ®iƯn tư I - KI Mơc lơc I giíi thiƯu ii c¸c thành phần lệnh máy Cấu trúc chung lƯnh m¸y C¸c kiĨu thao t¸c iii c¸c nhãm lƯnh cđa bé vi xư lý Nhãm lƯnh dÞch chun Nhãm lƯnh sè häc Nhãm lƯnh lo gic Nguyễn Duy Quân Nguyễn Huỳnh Quang Bùi Văn Vinh Bùi Xuân Lợi Đinh Xuân Huy Nhóm lệnhvào chuyên dụng Nhóm lệnh chuyển điều khiển Nhóm lệnh điều khiển hệ thống IV chế độ định địa Chế độ định địa tức Chế độ định địa ghi Chế ®é ®Þnh ®Þa chØ trùc tiÕp ChÕ ®é ®Þnh địa gián tiếp qua ghi Chế độ ®Þnh ®Þa chØ trùc tiÕp ChÕ ®é ®Þnh ®Þa dịch chuyển I GớI THIệU CHUNG Mỗi vi xử lý phải có tập lệnh xác định , tËp lƯnh thêng cã tõ hµng chơc ch cho đém hàng trăm lệnh lệnh chuỗi số nhị phân mà vi xử lý hiểu đợc để thực thao tác định ngời sử dụng lệnh đợc mô tả kí hiệu gợi nhớ ( hợp ngữ ) II CáC THàNH PHầN CủA LệNH MáY CÊu tróc chung cđa mét lƯnh m¸y M· thao t¸c địa toán hạng Trong mà thao tác mà hóa cho thao tác mà máy phải thực mà đợc dịch mà máy chuỗi số nhị phân địa toán hạng :chỉ nơi chứa toán hạng mà thao tác tác động + toán hạng nguồn : liệu vào thao tác +toán hạng đích : liệu thao tác ví dụ : lệnh dịch chuyển BX vµo AX MOV AX,BX ; chun BX vµo AX Trong : + MOV mà thao tác + AX , BX địa toán hạng III.CáC NHóM LệNH CđA VI Xư Lý Nhãm lƯnh dÞch chun a Lệnh MOVE Dạng lệnh: MOV đích , gốc Lệnh MOVE đợc sử dụng để chuyển liệu từ toán hạng nguồn vào toán hạng đích ví dụ: MOV AL,BL : chun néi dung cđa BL vµo AL GØa sư tríc thùc hiƯn lƯnh MOVE néi dung cđa AL vµ BL lµ 0AH 05H AL BL Sau thùc hiƯn lệnh MOVE nội dung AL BL 05H 05H AL BL Mét b¶n cđa ghi BL đợc chuyển vào ghi AL nội dung BL nguyên ,giá trị trớc AL bị viết chèn lên Khả kết hợp toán hạng nguồn toán hạng đích lệnh MOVE Toán hạng đích Thanh ghi đa Thanh ghi đoạn ô nhớ Hằng số Toán hạng gốc Thanh ghi đa Có thể Có thể Có thể Không thể Thanh ghi đoạn Có thể Không thể Có thể Khô ng thĨ « nhí Cã thĨ Cã thĨ Kh«ng thĨ H»ng sè Cã thĨ Kh«ng thĨ Kh«ng thĨ Cã thĨ Toán hạng nguồn toán hạng đích phải kiểu ví dụ : toán hạng đích AX toán hạng nguồn khôngđợc AL b.lệnh LOAD Lệnh LOAD dùng để nạp liệu từ nhớ đến xử lý, lệnh LOAD có dạng sau: LSD- Load register and DS with words from memory: Viết lệnh: LDS đích, gốc +đích :là ghi AX ,BX ,CX,DX ,SP, BP ,SI ,DI +gèc :là ô nhớ đoạn DS đợc rõ lệnh Mô tả: đích gốc ,DS gốc + Đây lệnh để nạp vào ghi đà chọn vào DS từ ô nhớ liên tiếp.Một øng dơng cđa lƯnh nµy lµ lµm cho SI vµDI vào địa đầu vùng nhớ chứa chuỗi gốc trớc dùng đến lệnhthao tác chuỗi Lệnh không tác động dến cờ LEA- load efective address( nạp địa hiệu dụng vào ghi) Viết lệnh: LEA đích , gốc +đích : thờng c¸c ghi BX , CX, DX, BP , SI ,DI + gốc : tên biến đoạn DS đợc rõ lệnh Mô tả: đích , địa lệch gốc Hoặc đích , địa hiệu dụng gốc Đây lệnh đẻ tính dịa lệch biến dịa ô nhớ chọn làm gốc nạp vào ghi đà chọn Lệnh không tác động đến cờ ví dụ: LSA DX,MSG ; nạp địa lệch tin MSG vào DX LSA CX,{BX}{DI} ; nạp vào CX địa chØ hiƯu dơng BX va DI chØ LƯnh không tác đông đến cờ LES- Load register and ES with words from memory( n¹p tõ tõ bé nhí vµo ghi cho lƯnh vµ môt t vào ES) Viết lệnh: LES đích, gốc +đích :là ghi AX , BX ,CX ,DX ,SP , BP , SI , DI +Gốc :là ô nhớ đoạn DS đợc rõ lệnh Mô tả: đích gốc,ES gốc +2 Đây lệnh để nạp vao ghi đà chọn vào ES từ ô nhớ liên tiếp nhng øng dơng cđa lƯnh nµy lµ lµm cho DI ES vào địa đầu vùng nhớ chứa chuỗi đích trớc dùng dến lệnh thao tác Lệnh không tác động đến cờ ví dụ : LES DI,[BX] Thí dụ nạp vào DI nội dung hai ô nhớ BX BX +1 nạp vào ES nội dung hai ô nhớ tiÕp theo BX +2 vµ BX +3 chØ Các ô nhớ nằm đoạn liệu DSvà chứa địa chỉcủa chuỗi đích Do sâu ES :DI vào đầu chuỗi đích cần thao tác c.Lệnh STORE (cất liệu từ xử lý đến bé nhí) D¹ng lƯnh : SAHF(store AH in flag register) Thao tác : lu bit thấp AH vào byte thÊp cđa ghi cê chØ cã bit t¬ng ứng với cờ đợc chuyển đổi cờ bit thÊp cđa ghi cê lµ SF = bit7 ,AF =bit ,PF= bit ,CF= bit Cê không bị ảnh hởng d.Lệnh EXCHANGE Trao đổi nội dung toán hạng nguồn toán hạng đích Viết lệnh: XCHG đích,gốc Toán hạng nguồn toán hạng đích đợc đổi lẫn cho Cờ không bị ảnh hởng ví dơ: XCHG AL,BL ; trao ®ỉi néi dung cđa AL BL Giả sử ghi AL BL có néi dung nh sau: 05 H BL AL Sau thùc hiƯn lƯnh XCHG th× néi dung cđa hai ghi AL vµ BL lµ 05 H BL AL e.LƯnh CLEAR Chuyển bit vào toán hạng đích LệnhCLC( clear the carry flag: xoá cờ nhớ) Mô tả : CLC CF,0; chuyển vào CF Lệnh không tác động đến cờ khác Lệnh CLD (clear the direction:xoá cờ hớng) Mô tả: CLD DF,0; chuyển vào DF Lệnh không tác động đến cờ khác Lệnh định hớng thao tác theo chiều tiến cho lệnh liên quan đến chuỗi Các ghi liên quan SI DI Ssẽ tự động tăng lên làmg việc xong với phần tử chuỗi Lệnh CLI (clear the inerprrupt flag: xáo cờ cho phép ngắt) Mô tả: CLI IF,0;chuyển vào IF Lệnh xoá cờ cho phép ngắt yêu cầu ngắt che đợc bị che Không tác động đến cờ f.Lệnh SET Chuyển bit vào toán hạng đích Lệnh STC (set the carry flag:lập cờ nhớ) Mô tả : STC CF,1; chuyển vào CF Lệnh không tác động đến cờ khác LƯnh STD (set the direction flag: lËp cê híng) M« tả: STD DF,1 ;chuyển vào DF Lệnh không tác động đến cờ khác Lệnh định hớng thao tác cho lệnh làm việc với chuỗi theo chiều lùi ghi SI DI liên quan đơc tự động giảm làm việc xong với phần tử chuỗi Lệnh STI (setthe interprrupt flag:lập cờ cho phép ngắt ) Mô tả : STI IF, ; chun vµo IF LƯnh nµy lập cờ cho phép ngắt phép yêu cầu ngắt tác động vao chân INTR đợc CPU nhận biÕt Khi IF=1 nÕu cã tÝn hiƯu INTR th× 8086/8088 bị ngắt tự động cất ghhi cờ địa trở vào ngăn xếp chuyển sang chạy chơng trình phục vụ ngắt (CTCPVN) Tại cuối CTCPVN có lệnh trở chơng trình từ CTCPVN (IRET) để 8086/8088 lấy lại từ ngăn xếp giá trị cua ghi cờ địa trở Lệnh không tác động đến cờ g Lệnh PUSH Cất nội dung toán hạng nguồn vào ngăn xếp PUSH Push word on the stack( cất từ vào ngăn xếp) Viết lệnh : PUSH Gốc Mô tả: SP SP-2 Gốc {SP} Lệnh nguồn thực giảm SP sau chuyển toán hạng nguồn vào ngăn xếp có địa SS:BP Trong toán hạng gốc tìm đợc theo chế ịô địa khác ghi đa ghi đoạn hoăc ô nhớ Lệnh thờng dùng với lệnh POP nh cặp đối ngẫu để xử lý cho liệu trạng thái chơng trình (CTC)khi vào/ chơng trình Lệnh không tác ®éng ®Õn c¸c cê vÝ dơ: PUSH BX ; cất BX vào ngăn xếp vị trí SP chØ PUSH table {BX} ; cÊt hai byte cña vùng liệu DScó địa đầu ; {table +BX} PUSHF- Push flag register to the stack(cÊt ghi cờ vào ngăn xếp) Viết lệnh: Pushf Mô tả : SP SP-2 RF {SP} Giảm SP 2và chuyển bit cờ vào đỉnh ngăn xếp Dữ liệu để ngăn xếp không thay đổi SS không thay đổi Lệnh không tác động đến cờ ví dụ: POP DX ;lấy hai byte từ đỉnh ngăn xếp đa vào DX POP Table{BX} ; lấy hai byte đỉnh ngăn xếp để vùng DS có địa ; đầu {table +BX} h Lệnh POP Lấy nội dung đỉnh ngăn xếp đa đến toán hạng đích POP- pop word from top of stack (lÊy l¹i mét từ vào ghi từ đỉnh ngăn xếp) Viết lệnh : POP đích Mô tả: Đích { SP} SP SP+2 Trong toán hạng đích tìm đợc theo chế độ địa khác nhaucó thể ghi đa ghi đoạn ( nhng không đợc ghi đoạn mà CS) ô nhớ Dữ liệu đẻ ngăn xếp không thay đổi Gía trị SS không thay đổi Lênh không tác ®éng ®Õn c¸c cê POPF – Pop word from to stack to flag register (lấy môt từ từ đỉnh ngăn xếp đa vào cờ ) Viết lệnh: POPF Mô tả: RF {SP} SP SP+2 Sau lệnh liệu để ngăn xếp không thay đổi SS không thay đổi Lệnh không tác động đến cờ Nhóm lệnh số học a lệnh ADD Đợc sử dụng để cộng nội dung hai toán hạng Dạng lệnh : ADD Đích,nguồn Kết lu vào toán hạng đích nguồn không thay đổi ví dụ : ADD AL,BL ; cộng nội dung AL BL Giả sư tríc thùc hiƯn lƯnh ADD AL,BL th× néi dung cđa AL vµ BL lµ: 0FH 02H AL BL Sau thùc hiƯn lƯnh ADD AL,BL th× néi dung AL BL là: 11H 02H AL BL Khả kết hợp toán hạng nguồn toán hạng đích đợc bảng sau: Toán hạngđích Thanh ghi đa ô nhớ Hằng số Toan hạng nguồn Thanh ghi đa Có thể Có thể Không thể « nhí Cã thĨ Kh«ng thĨ Kh«ng thĨ H»ng sè Có thể Có thể Không thể Chú ý: hai toán hạng phải có độ dài liệu b Lệnh SUBTRACT Đợc sử dụng để trừ nội dung hai toán hạng kết lu toán hang đích toán hạngnguồn giữ ngyên Dạng lệnh: SUB Đích , gốc vÝ dơ: SUB AL,BL ;trõ néi dung cđa AL cho BL Gi¶ sư tríc thùc hiƯn lƯnh SUB AL,BL néi dung cua AL vµ BL lµ: 05H 02H AL BL Sau thùc hiƯn lƯnh SUB AL,BL th× néi dung AL BL là: 02H AL BL Khả kết hợp toán hạng nguồn toán hạng đích phép trừ đợc cho bảng sau: Toán hạng đích Toán hạng Nguồn Thanh ghi đa ô nhớ Hăng số Thanh ghi đa ô nhớ Hằng sè Cã thĨ Cã thĨ Kh«ng thĨ Cã thĨ Cã thĨ Kh«ng thĨ Cã thĨ Kh«ng thĨ Kh«ng thĨ Chó ý : toán hạng nguồn toán hạng đích phải có độ dài liệu c Lệnh MULIPLY Lệnh đợc dùng để nhân liệu hai toán hạng với Lệnh thực phép nhân không dấu Dạng lệnh: MUL nguồn Thao tác : lệnh MUL nguồn thc nhân nội dung AL với toán hạng nguồn toán hạng nguồn byte tích mạc định chứa AX , hoăc nhân nội dung AX với toán hạng nguồn toán hang nguồn từ , tích măc định chứa DX: AX C¸c cê CF ,OF =0 nÕu nưa cao tích phần mở rộng na thấp Toán hạng nguồn không đợc số Cờ bị ảnh hởng :CF ,OF Ví dụ :giả sử biến A,B,C,D biến không dấu kiểu byte Để thực phép toán AX (chứa kết quả) =A*B +C*D Đoạn m· nh sau: Mov AL ,A ;AL chøa A MOV BL,B ; BL chøa B MUL BL ;AX chøa A*B MOV DX,AX ; cÊt A*B vµo DX MOV AL,C ;AL chøa C MOV BL,D ;BL chøa D MUL BL ;AX chøa C*D ADD AX,DX ;AX chøa A*B+ C*D d Lệnh DIVIDE Đợc sử dụng để chia hai toán hạng không dấu Dạng lệnh: DIV nguồn Thao tác :số chia toán hạng nguồn ô nhí hay mét ghi.Trong phÐp chia cho byte (to¸n hạng nguồn 8bit) số bị chialà từ mặc định chứa AX, kết thơng số chứa AL số d trả AH.Khi thực phép chia cho word (toán hạng nguồn 16 bit), số bÞ chia 32 bit chøa DX:AX(16 bit cao DX 16 bit thấp ax) kết thơng số chứa AX số d trả DX Cờ không xác định: AF,OF,CF,SF,PF Ví dụ :giả sử AX chøa 20 DX chøa BX chøa thùc hiƯn phÐp chia cho byte hc cho tõ ta sÏ đợc kết nh sau: Kết Lệnh DIV BL AH AL AX DX 0203H MOV CL,3 ; CL chứa số lần dịch SHL AH,CL Sau thùc hiÖn lÖnh SHL AH,CL néi dung AH nhËn đợc cách xóa ba bit phần cao AH thêm vào ba bit phần thấp Lệnh dịch nhiều bit thực chất thực nhiều lệnh dịch bit thay hai lệnh ba lệnh dịch bit liên tiÕp , cê CF chøa bit cuèi cïng dÞch khỏi toán hạng 1 0 CF 1 1 0 CF kết AH= 11010000B , cờ CF chứa Khi dịch toán hạng sang trái bit tơng ứng nhân số với ví dụ : AH= 00000011B (3) dịch trái bit ta đợc AH= 00000110B (6) dịch trái tiếp bit ta có kết AH= 00001100 (12) Nh dịch trái toán hạng n bit vị trí tơng ứng nhân toán hạng với mũ n tợng tràn sảy sử dụng lệnh dịch trái để thực phép nhân Lệnh SHR Shif logical right (lệnh dịch phải logic ) Dạng lệnh : SHR Đích, CL Hoặc : SHR đích ,1 Mô tả: MSB LSB CF Thao tác : dịch bit toán hạng sang phải hay nhiều vị trí CF nhận đợc bit LSB đợc dịch vào bit MSB Nếu dịch vị trí ta dùng lệnh SHR đích , để dịch nhiều lần lần dịch số lần dịch đặt CL Khi đếm bit trái toán hạng đích cờ CF bị xóa Nếu chúng khác , OF thiết lập OF không xác định , CL không thay đổi Cờ bị ảnh hởng : CF , OF , PF , SF, ZF vÝ dơ : Gi¶ sư CL chøa AH chøa 93H sau thùc hiÖn lệnh SHR AH,CL nội dung AH nhận đợc cách xóa đI bit phần thấp thêm bit vào vào phần cao AH mô tả: CF 0 0 1 0 0 0 Kết AH = 00010010 B cê CF chøa bit cuèi cïng dịch khỏi toán hạng Ngợc lại với phép dịch trái , dịch phải bit tơng ứng chia số cho dịch phải toán hạng n vi trí tơng ứng chia số cho mị n VÝ dơ : AH= 10100000 B ( 160 ) dịch phải bit ta có AH= 01010000B (80) dịch phải tiếp ta có AH= 00101000 B( 40 )nhng điều với số chẵn , số lẻ dịch phải chia đôi làm tròn xuống số nguyên gần g.lệnh ROTATE ( lệnh quay trái /phải toán hạng ) lệnh quay thực dịch tất bit toán hang sang trái hặc sang phải nhiều vị trí bit dịch khỏi toán hạng đợc đa vào cờ nhớ đồng thời đa trở lại +LƯnh ROL ( Roltate left ) – lƯnh quay tr¸i Dạng lệnh : ROL đích,1 Hoặc : ROL đích,CL Thao tác : lệnh ROL thực dịch tất bit toán hạng đích sang trái hay nhiều vị trí , bit MSB dịch khỏi toán hạng đợc đa vào cờ nhớ đồng thời đa trở lại bit LSB Nếu quay trái vị trí ta dùng lệnh ROLđích,1 quay nhiều lần số lần quay đợc dặt CL Khi đếm bằng1 MSB toán hạng đích bị thay đổi so với trớc quay tì cờ OF đợc thiết lập Nếu đếm khác , OF không xác định , CL không thay đổi Cờ bị ảnh hởng, ngoại trừ OF , CF Mô tả : CF MSB LSB ví dụ :hiển thị bit toán hạng mà không làm thay đổi nội dung chúng giả sử hiển thị bit ghi AX MOV CX,16 MOV AH,2 Top: ROL JC MOV INT JMP BX,1 so DL,0 21H thoat ;đếm số bit cần hiển thị ; hàm hiển thị ; CF chứa bit MSB dịch đến ; CF=1 xuống hiển thị ; CF=0 ; hiĨn thÞ So : MOV DL,’1’ INT 21H ; hiĨn thÞ ‘1’ Thoat : Loop top ; lặp lại 16 lần Muốn hiển thị bit toán hạng ta phải lần lợt đa đợc bit toán hạng cờ nhớ Sử dụng lệnh nhảy JC JNC có nhớ ( JC=1 ) bit dịch , hiển thị ngợc lại hiển thị Thực lặp 16 lần ta in đợc 16 bit toán hạng lệnh ROL sau thực xong vòng lặp giá trị toán hạng giữ nguyên Ngắn gọn ta dùng lệnh ADC nh sau : MOV CX,16 ; lặp 16lần MOV AH,2 ;hàm hiển thị MOV DL, 30H Top: ROL BX,1 ADC DL,0 ; DL=30H +0+CF INT 21H ; hiĨn thÞ ‘1’ Loop top ; lặp lại CX=0 + LƯnh ROR ( Roltate right ) – lƯnh quay ph¶i Dạng lệnh : ROR đích ,1 Hoặc : ROR đích , CL Thao tác : ngợc lại với lệnh ROL lệnh ROR thực dịch tất bit toán hạng đích sang phải hay nhiều vị trí , bit LSB dịch khỏi toán hạng đợc đa vào cờ nhớ đồng thời đa trở lại vị trí bit MSB Cờ bị ảnh hởng ngoại trừ OF, CF Mô tả lệnh ROR nh sau: MSB LSB CF + LƯnhRCL (Rotate through cary left) - lƯnh quay tr¸i thông qua cờ nhớ Dạng lệnh : RCL đích , Hoặc: RCL đích ,CL Thao tác : quay bit toán hạng đích sang trái qua cờ CF nhiều lần Mô tả : MSB LSB CF +Lệnh RCR (Rotate through carry right) quay phải toán hạng thông qua cờ nhớ Dạng lệnh : RCR đích , Hoặc : RCR đích,CL Thao tác : quay bit toán hạng sang phải thông qua cờ CF hay nhiều lần Bit LSB toán hạng đích đợc đặt vào cờ CF nội dung cũ CF đợc chuyển vào bit MSB lệnh quay nhiều bit thùc chÊt lµ thùc hiƯn nhiỊu lƯnh quay mét bit , số lần dịch chứa CL Cờ bị ¶nh hëng : CF, OF M« t¶ : MSB LSB CF vÝ dô : RCR BX ,1 MOV CL,8 RCR AL,CL ; quay phải ghi BX thông qua CF ; số lần quay để CL ; quay phải ghi AL lần thông qua ; CF LSB chứa giá trị CF ban đầu Các lệnh vào chuyên dụng a lệnh INPUT ( đọc liệu từ cổng xác định đến đích) Dạng lệnh : IN Acc, Port Trong { port} liệu cổng có địa port Port địa bit cổng có giá trị khoảng 00H FFH Nh ta co khả sau : + Nếu Acc AL liệu đợc ®a vµo tõ cỉng Port + NÕu Acc lµ AX liệu 16 bit đợc da vào từ cổng Port cổng Port +1 Có cách khác để biểu diễn địa cổng thông qua ghi DX Khi dùng thnah ghi DX để chứa liệu cổng ta có khả địa hóa cổng mềm dẻo Lúc địa cổng nằm dải 0000H FFFFH ta phải viết lệnh theo dạng : IN Acc , DX Trong DX phải đợc gán từ trớc giá trị ứng với địa cổng lệnh không tác động đến cờ b Lệnh OUTPUT( cop liệu từ nguồn dến cổng xác định ) Dạng lệnh : OUT Port , Acc Trong {Port } liệu cổng có địa port Port địa bit cổng , có giá trị nằm khoảng 00H FFH.Nh ta có khả sau : + Nếu Acc AL liệu bit đợc đa cổng port + Nếu Acc AX liệu 16 bit đợc đa cổng port cổng port+1 Một cách khác ®Ĩ biĨu diƠn ®Þa chØ cỉng thong qua ghi DX Khi dùng ghi DX để chứa liệu cổng ta có khả địa hóa cổng mềm dẻo Lúc địa cổng nằm dải 0000H FFFFH ta phải viết lệnh theo dạng : OUT DX,Acc Trong DX phải đợc gán từ giá trị trớc ứng với địa cổng lệnh không tác động đến cờ 5.Các lệnh chuyển điều khiển a.Lệnh JMP( BRANCH) lệnh nhảy không điều kiện Nạp vao PC địa xác định Dạng lệnh : JMP nhÃn,đích Thao tác :nếu gặp lệnh JMP chơng trình chuyển đến lệnh nhÃn đích để thi hành lệnh mà không cần điều kiện Cờ không bị ảnh hởng ví dụ : MOV AH,2 ; hàm hiển thị ký tự MOV DL,30H ; DL chøa m· ASCII cưa kÝ tù hiĨn thÞ H1: INC 21H ;giảm mà ASCII CMP DL,39H ; so sánh vơI ký tự JLE H2 ; nhảy đến H2 (