YOMEDIA
ADSENSE
Chương III: Tập lệnh của vi xử lý
531
lượt xem 127
download
lượt xem 127
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Vi xử lý là một IC số có tất cả các hàm số cơ bản, để thực hiện được một bài toán hay công việc nào đó, các hàm số cơ bản sẽ được cho phép thực hiện một cách tuần tự theo một thuật toán nhất định.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương III: Tập lệnh của vi xử lý
- CHƯƠNG III: TÂP LÊNH CUA VI XƯ LÝ ̣ ̣ ̉ 3.1. KHAI NIÊM VỀ LÊNH, DANG LÊNH VÀ CACH MÃ HOÁ LÊNH CUA VI ́ ̣ ̣ ̣ ̣ ́ ̣ ̉ XƯ LY. ́ Vi xư lý là môt IC số có tât cả cac ham số cơ ban, để thưc hiên đươc môt bai toan hay môt ̣ ́ ́ ̀ ̉ ̣ ̣ ̀ ́ ̣ công viêc nao đo, cac ham số cơ ban sẽ đươc cho phep thưc hiên môt cach tuân tư theo ̣ ̀ ́ ́ ̀ ̉ ́ ̣ ̣ ́ ̀ môt thuât toan nhât đinh. Để cho phep môt ham số hoat đông cân phai cung câp tin hiêu ̣ ̣ ́ ́ ̣ ́ ̣ ̀ ̣ ̣ ̀ ̉ ́ ́ ̣ chon ham, và chon dư liêu xư lý trong ham, viêc cung câp cac tin hiêu như vây đươc goi là ̣ ̀ ̣ ̣ ̀ ̣ ́ ́ ́ ̣ ̣ ̣ cung câp môt lênh cho vi xư ly. ́ ̣ ̣ ́ Như vây dang lênh cua vi xư lý sẽ bao gôm hai phân chinh: môt phân chon ham đươc goi ̣ ̣ ̣ ̉ ̀ ̀ ́ ̣ ̀ ̣ ̀ ̣ là mã hoat đông (opcode – operation code), môt phân chon dư liêu cân xư lý trong ham ̣ ̣ ̣ ̀ ̣ ̣ ̀ ̀ đươc goi là toan hang cua lênh (operand) như trinh bay trên hinh 3.1. ̣ ́ ̣ ̉ ̣ ̀ ̀ ̀ OPCODE OPERAND Hinh 3.1: Dang lênh cua vi xử lý ̀ ̣ ̣ ̉ Vi xư lý là môt IC sô, vì vây cac lênh mà nó hiêu đươc phai ơ dươi dang nhị phân 0, 1 ̣ ́ ̣ ́ ̣ ̉ ̉ ̣ đươc goi là cac lênh mã may. Do viêc viêt cac chương trinh băng cac lênh mã may, chỉ ̣ ́ ̣ ́ ̣ ́ ́ ̀ ̀ ́ ̣ ́ toan là cac số 0 và 1 rât khó nhơ, khó kiêm tra nên ngươi ta sư dung cac mã gơi nhơ để ̀ ́ ́ ̉ ̣ ́ thay thế khi lâp trinh. Ơ cả hai dang mã gơi nhơ và mã may, cac lênh đề thể hiên hai phân ̣ ̀ ̣ ́ ́ ̣ ̣ ̀ opcode và operand như mô tả ơ trên. Để lênh ngăn gon, ngươi ta không cung câp trưc tiêp ̣ ́ ̣ ́ ́ cac tin hiêu chon trong lênh, mà chung đươc mã hoá thanh cac phân khac nhau cua lênh. ́ ́ ̣ ̣ ̣ ́ ̀ ́ ̀ ́ ̉ ̣ Sau khi lây vao CPU cac phân nay sẽ đươc giai mã để tao ra cac tin hiêu chon mach. ́ ̀ ́ ̀ ̀ ̉ ̣ ́ ́ ̣ ̣ ̣ Độ dai cua môt lênh có thể tư 1 tơi vai byte, tuỳ thuôc vao tưng loai vi xư ly. Nêu sư dung ̀ ̉ ̣ ̣ ̀ ̣ ̀ ̣ ́ ́ ̣ 1 byte để mã hoá phân opcode, thì vi xư lý sẽ có cưc đai 256 lênh khac nhau. Trong thưc tế ̀ ̣ ̣ ́ viêc ghi lênh không hoan toan đơn gian như vây, mà nó con bị chi phôi bơi nhiêu yêu tố ̣ ̣ ̀ ̀ ̉ ̣ ̀ ́ ̀ ́ khac nưa. ́ Byte 1 Byte 2 Byte 3 Byte 4 1 0 0 0 1 0 Disp1 Disp2 Opcode D W mod REG M/R Direct low Direct high Hinh 3.2: Mã hoá lênh MOV trong CPU 8088 ̀ ̣ Cac lênh cua vi xư lý thương có 1 hoăc hai toan hang, cac toan hang nay cung đươc mã ́ ̣ ̉ ̣ ́ ̣ ́ ́ ̣ ̀ ̃ hoá cụ thể trong mã lênh. Ví dụ lênh di chuyên dư liêu cua 8088 đươc mã hoá như hinh ̣ ̣ ̉ ̣ ̉ ̀ 54
- 3.2. Toan hang chưa kêt quả cuôi cung cua phep xư lý dư liêu đươc goi là toan hang đich ́ ̣ ́ ́ ̀ ̉ ́ ̣ ̣ ́ ̣ ́ (Destination), toan hang con lai trong lênh đươc goi là toan hang nguôn (Source). ́ ̣ ̀ ̣ ̣ ̣ ́ ̣ ̀ Lênh MOV đich,nguôn sư dung để chuyên dư liêu giưa hai thanh ghi, hoăc giưa thanh ̣ ́ ̀ ̣ ̉ ̣ ̣ ghi và ô nhơ. Như vây ngoai phân Opcode, trong lênh cac toan hang nguôn và đich cân ̣ ̀ ̀ ̣ ́ ́ ̣ ̀ ́ ̀ đươc chỉ thi. Hinh 3.2 cho thây, để mã hoá cac lênh MOV cân it nhât 2 byte, trong đó 6 bit ̣ ̀ ́ ́ ̣ ̀ ́ ́ cua byte đâu sư dung cho Opcode. Vơi cac lênh MOV không sư dung toan hang là thanh ̉ ̀ ̣ ́ ̣ ̣ ́ ̣ ghi đoan thì 6 bit nay luôn là 100010. Khi sư dung toan hang là thanh ghi đoan sẽ có 6 bit ̣ ̀ ̣ ́ ̣ ̣ Opcode khac. ́ Bit W để mã hoá toan hang là môt byte (W=0) hoăc hai byte (W=1). Trong lênh chuyên dư ́ ̣ ̣ ̣ ̣ ̉ liêu, môt trong hai toan hang băt buôc phai là thanh ghi. 8088 sư dung 2 hoăc 3 bit trong ̣ ̣ ́ ̣ ́ ̣ ̉ ̣ ̣ lênh để mã hoá cac thanh ghi cua nó như sau: ̣ ́ ̉ Thanh ghi Mã hoá W=1 W=0 AX AL 000 BX BL 011 CX CL 001 DX DL 010 SP AH 100 DI BH 111 BP CH 101 SI DH 110 CS 01 DS 11 ES 00 SS 10 Bit D dung để mã hoá hương truyên cua dư liêu trong lênh, D=1 dư liêu sẽ đươc chuyên ̀ ̀ ̉ ̣ ̣ ̣ ̉ tơi thanh ghi mã hoá bơi 3 bit REG trong lênh, D=0 dư liêu sẽ chuyên tư thanh ghi mã hoá ̣ ̣ ̉ bơi REG đi. Hai bit mod và 3 bit M/R (memory/register) sư dung cho viêc chỉ thị cho chế độ đia chỉ ̣ ̣ ̣ cho toan hang con lai cua lênh. Chế độ đia chỉ là cach chỉ thị vị trí cua dư liêu sau đươc mô ́ ̣ ̀ ̣ ̉ ̣ ̣ ́ ̉ ̣ tả trong muc kế tiêp. Bang sau sẽ trinh bay cach mã hoá cua cac chế độ đia chỉ trong môt ̣ ́ ̉ ̀ ̀ ́ ̉ ́ ̣ ̣ ̣ lênh. Mod M/R 00 01 10 11 W=0 W=1 55
- 000 [BX]+[SI] [BX]+[SI] + d8 [BX]+[SI] + d16 AL AX 001 [BX]+[DI] [BX]+[DI] + d8 [BX]+[DI] + d16 CL CX 010 [BP]+[SI] [BP]+[SI] + d8 [BP]+[SI] + d16 DL DX 011 [BP]+[DI] [BP]+[DI] + d8 [BP]+[DI] + d16 BL BX 100 [SI] [SI] + d8 [SI] + d16 AH SP 101 [DI] [DI] + d8 [DI] + d16 CH BP 110 d16, direct [BP] + d8 [BP] + d16 DH SI 111 [BX] [Bx] + d8 [Bx] + d16 BH DI Trong đó : - d8: là toan hang độ dơi 8 bit; d16: là toan hang độ dơi 16 bit. ́ ̣ ́ ̣ Ví dụ viêc mã hoá lênh MOV CL,[BX] như sau: ̣ ̣ 1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 Opcode CL chuyên tới thanh ghi ̉ [BX] Chuyên 1 bytẻ Hinh 3.3: Mã hoá lênh MOV CL,[BX]. ̀ ̣ 3.2. CAC CHẾ ĐỘ ĐINH VỊ ĐIA CHI. ́ ̣ ̣ ̉ Cac chế độ đinh vị đia chỉ là cac cach chỉ thị vị trí cac toan hang trong cac lênh mà CPU ́ ̣ ̣ ́ ́ ́ ́ ̣ ́ ̣ thưc hiên. Môt bộ vi xư lý có thể có nhiêu chế độ đia chi, cac chế độ nay đươc xac đinh ̣ ̣ ̀ ̣ ̉ ́ ̀ ́ ̣ theo câu truc phân cưng ngay tư khi chế tao. Cung môt nguyên tăc đinh vị đia chi, cac hang ́ ́ ̀ ̣ ̀ ̣ ́ ̣ ̣ ̉ ́ ̃ chế tao CPU có thể đăt cac tên goi khac nhau. Sau đây là cac chế độ đia chỉ thông dung cua ̣ ̣ ́ ̣ ́ ́ ̣ ̣ ̉ cac bộ vi xư lý : ́ 3.2.1. Chế độ tưc thơi (immediate addressing mode): Trong chế độ nay toan hang là môt hăng số đươc mã hoa ngay trong lênh. Toan hang tưc ̀ ́ ̣ ̣ ̀ ́ ̣ ́ ̣ thơi chỉ có thể là toan hang nguôn. ́ ̣ ̀ Ví dụ : MOV CL,100H ; chuyên giá trị 100H vao thanh ghi CL ̉ ̀ MOV [BX],10H ; chuyên 10H vao ô nhơ có đia chỉ logic DS:BX. ̉ ̀ ̣ 3.2.2. Chế độ trưc tiêp (direct): ́ Trong chế độ nay toan hang là đia chỉ cua ô nhơ chưa dư liêu cân xư lý trong lênh. Toan ̀ ́ ̣ ̣ ̉ ̣ ̀ ̣ ́ hang con lai trong lênh chỉ có thể là thanh ghi, không thể cung đông thơi là ô nhơ. Trong ̣ ̀ ̣ ̣ ̀ ̀ 8088, toan hang trưc tiêp sẽ là đia chỉ độ lêch (offset) cua dư liêu. ́ ̣ ́ ̣ ̣ ̉ ̣ Ví dụ : MOV AL,[1000H] ;Chuyên nôi dung ô nhơ DS:1000H vao AL ̉ ̣ ̀ MOV [2009H],CX ;Chuyên nôi dung CX vao hai ô nhơ liên tiêp ̉ ̣ ̀ ́ ;DS:2009H và DS:200AH – vơi 8088. 3.2.3. Chế độ trưc tiêp thanh ghi (direct register): ́ Trong chế độ nay cac thanh ghi bên trong CPU đươc sư dung để chưa dư liêu cân xư lý ̀ ́ ̣ ̣ ̀ trong lênh. Vì thế cac lênh nay có tôc độ thưc hiên nhanh hơn nhiêu so vơi cac lênh sư ̣ ́ ̣ ̀ ́ ̣ ̀ ́ ̣ dung cac toan hang ngoai bộ nhơ. ̣ ́ ́ ̣ ̀ 56
- Ví dụ : MOV BX,DX ; chuyên giá trị tư DX qua BX. ̉ ADD BL,CL ; công giá trị cua BL vơi giá trị trong CL. ̣ ̉ 3.2.4. Chế độ gian tiêp thanh ghi (indirect register): ́ ́ Chế độ nay sư dung cac thanh ghi giư đia chỉ cua ô nhơ chưa dư liêu cân xư lý trong lênh, ̀ ̣ ́ ̣ ̉ ̣ ̀ ̣ toan hang con lai trong lênh phai là môt thanh ghi. ́ ̣ ̀ ̣ ̣ ̉ ̣ Ví dụ : MOV AH,[BX] ; chuyên nôi dung ô nhơ có đia chỉ DS:BX vao AH. ̉ ̣ ̣ ̀ MOV [SI],CL ; chuyên giá trị cua CL vao ô nhơ có đia chỉ DS:SI. ̉ ̉ ̀ ̣ Trong họ 8088/8086 chỉ có cac thanh ghi BX, BP, SI, DI có thể sư dung lam cac toan hang ́ ̣ ̀ ́ ́ ̣ ́ gian tiêp thanh ghi. ́ 3.2.5. Chế độ đia chỉ chỉ số (index): ̣ Trong chế độ nay đia chỉ cua toan hang đươc tinh băng tông số giưa 1 thanh ghi 16 bit và ̀ ̣ ̉ ́ ̣ ́ ̀ ̉ giá trị độ dơi (displacement values). Phương phap chỉ đinh đia chỉ nay rât có lơi khi truy ́ ̣ ̣ ̀ ́ câp cac bang số liêu, luc nay cac lênh truy câp chỉ cân cung câp giá trị độ dơi trong mã lênh ̣ ́ ̉ ̣ ́ ̀ ́ ̣ ̣ ̀ ́ ̣ ̉ cua no. ́ Vơi họ Intel chỉ có cac thanh ghi BX, BP, SI và DI có thể sư dung trong chế độ đia chỉ nay. ́ ̣ ̣ ̀ Đia chỉ đoan tuy theo tưng lênh có thể năm trong cac thanh ghi DS hoăc ES. ̣ ̣ ̀ ̣ ̀ ́ ̣ Ví dụ : MOV CX,[BX]+10 ;chuyên nôi dung hai ô nhơ liên tiêp băt đâu ̉ ̣ ́ ́ ̀ ;tai đia chỉ DS:(BX+10) vao CX. ̣ ̣ ̀ MOV CX,[BX+10] ; 1 cach viêt khac cua lênh trên. ́ ́ ́ ̉ ̣ MOV CX,10 [BX] ; 1 cach viêt khac cua lênh trên. ́ ́ ́ ̉ ̣ 3.2.6. Chế độ tương đôi chỉ số : ́ Trong chế độ nay đia chỉ ô nhơ chưa toan hang đươc chỉ đinh băng tông cua hai thanh ghi ̀ ̣ ́ ̣ ̣ ̀ ̉ ̉ và môt số độ dơi. Chế độ nay rât tiên dung trong viêc đia chỉ hoá cho cac mang hai chiêu. ̣ ̀ ́ ̣ ̣ ̣ ̣ ́ ̉ ̀ Trong 8088, chung ta có tât cả 4 cach viêt toan hang trong chế độ đia chỉ nay bao gôm: ́ ́ ́ ́ ́ ̣ ̣ ̀ ̀ [BX]+[DI]+Disp ; [BX]+[SI]+Disp ; [BP]+[DI]+Disp ; [BP]+[SI]+Disp. 3.2.7. Chế độ tương đôi: ́ Trong vi xư lý thông thương chế độ nay đươc sư dung trong cac lênh nhay. Khi đó đia chỉ ̀ ̣ ́ ̣ ̉ ̣ cân chuyên điêu khiên tơi sau lênh nhay sẽ đươc tinh băng khoang cach tư vị trí lênh nhay ̀ ̉ ̀ ̉ ̣ ̉ ́ ̀ ̉ ́ ̣ ̉ tơi vị trí cân chuyên điêu khiên đên.̀ ̉ ̀ ̉ ́ Ví dụ : JZ 03H ;chuyên điêu khiên tơi lênh cach lênh nhay 03 byte. ̉ ̀ ̉ ̣ ́ ̣ ̉ 3.2.8. Chế độ tưng bit. Trong chế độ nay toan hang chỉ thị trong lênh chỉ là 1 bit cua môt ô nhơ hoăc môt thanh ̀ ́ ̣ ̣ ̉ ̣ ̣ ̣ ghi nao đo. Chế độ nay rât hưu dung trong cac chương trinh điêu khiên, khi muôn thay đôi ̀ ́ ̀ ́ ̣ ́ ̀ ̀ ̉ ́ ̉ môt ngõ nao đó chung ta sẽ không cân phai câp nhât giá trị cho cả công chưa no. ̣ ̀ ́ ̀ ̉ ̣ ̣ ̉ ́ Ví dụ : SET P0.0 ;lâp giá trị bit 0 cua công 0 lên 1. ̣ ̉ ̉ 3.2.9. Chế độ gian tiêp. ́ ́ Chế độ nay thương sư dung cho cac cơ câu chuyên điêu khiên chương trinh. Vị trí cân ̀ ̣ ́ ́ ̉ ̀ ̉ ̀ ̀ chuyên tơi sẽ đươc chưa trong môt ô nhơ, và toan hang trong lênh sẽ chỉ thị đia chỉ cua ô ̉ ̣ ́ ̣ ̣ ̣ ̉ nhơ chưa đia chỉ cua ô nhơ đo. ̣ ̉ ́ Trong 8088 chế độ nay đươc sư dung cho cơ chế phuc vụ ngăt. ̀ ̣ ̣ ́ 3.3. MÔ TẢ TÂP LÊNH CUA 8088/8086. ̣ ̣ ̉ 57
- Môt bộ vi xư lý có tâp lênh bao gôm nhiêu lênh, cac lênh cua chung thông thương thể hiên ̣ ̣ ̣ ̀ ̀ ̣ ́ ̣ ̉ ́ ̣ cho môt chưc năng số cơ ban nao đo. Tuy vây, tât cả cac loai vi xư lý đêu có thể chia tâp ̣ ̉ ̀ ́ ̣ ́ ́ ̣ ̀ ̣ lênh cua chung thanh ba nhom chinh là : Cac lênh di chuyên dư liêu, cac lênh xư lý dư liêu ̣ ̉ ́ ̀ ́ ́ ́ ̣ ̉ ̣ ́ ̣ ̣ và cac lênh điêu khiên chương trinh. ́ ̣ ̀ ̉ ̀ Khi mô tả cac lênh sư dung cac ký hiêu sau: ́ ̣ ̣ ́ ̣ - Imm (Immediate): cac toan hang tưc thơi. ́ ́ ̣ - Reg (Register) : cac toan hang trưc tiêp thanh ghi. ́ ́ ̣ ́ - Mem (Memory) : cac toan hang bộ nhơ noi chung. ́ ́ ̣ ́ - Mem8 (Memory 8 bit) : cac toan hang bộ nhơ 8 bit. ́ ́ ̣ - Mem16 (Memory 16 bit) : cac toan hang bộ nhơ 16 bit. ́ ́ ̣ - Seg. Reg (Segment Register): cac thanh ghi đoan. ́ ̣ 3.3.1. Nhom lênh di chuyên dư liêu. ́ ̣ ̉ ̣ 1. Lênh chuyên dư liêu (Move). ̣ ̉ ̣ - Cú phap: ́ MOV Dest,Source - Thưc hiên: ̣ Dest ← Source Dư liêu đươc chep tư toan hang nguôn (Source) tơi toan hang đich (Dest). Chú ý lênh ̣ ́ ́ ̣ ̀ ́ ̣ ́ ̣ không lam thay đôi toan hang nguôn, chỉ lam thay đôi toan hang đich. ̀ ̉ ́ ̣ ̀ ̀ ̉ ́ ̣ ́ - Cac toan hang sư dung trong lênh mô tả trong bang sau: ́ ́ ̣ ̣ ̣ ̉ Dest Source Ví dụ Reg Reg MOV AH,BH Reg Mem MOV CL,[1000H] Reg Imm MOV DH,10 Mem Reg MOV Table,BX Mem Imm MOV X1,25H Seg.Reg Reg16 MOV DS,AX Seg.Reg Mem16 MOV ES,X2 - Chú ý môt số trương hơp không sư dung đươc trong lênh nay bao gôm: ̣ ̣ ̣ ̀ ̀ + Không chuyên dư liêu trưc tiêp giưa hai ô nhơ. ̉ ̣ ́ + Không chuyên giá trị tưc thơi (Imm) vao thanh ghi đoan. ̉ ̀ ̣ + Không chuyên dư liêu giưa hai thanh ghi đoan. ̉ ̣ ̣ ̀ + Không dung thanh ghi CS lam toan hang đich. ̀ ́ ̣ ́ 2. Lênh chuyên đôi dư liêu (Exchange). ̣ ̉ ̉ ̣ - Cú phap: XCHG Dest,Source ́ - Thưc hiên: Dest ↔ ̣ Source Dư liêu đươc chuyên đôi giưa hai toan hang đich và nguôn, tưc là sau khi thưc hiên cả ̣ ̉ ̉ ́ ̣ ́ ̀ ̣ toan hang đich và toan hang nguôn đêu thay đôi. ́ ̣ ́ ́ ̣ ̀ ̀ ̉ - Cac trương hơp sư dung trong lênh: ́ ̣ ̣ Dest Source Ví dụ 58
- AX Reg XCHG AX,BX Mem Reg XCHG SUM,BX Reg Reg XCHG CL,DL 3. Lênh lây dư trong bang vao AL. ̣ ́ ̉ ̀ - Cú phap: XLAT ́ - Thưc hiên: AL ← ̣ [DS*10H+BX+AL] Lây giá trị thư n trong bang dư liêu vao thanh ghi AL, vơi BX giư đia chỉ đâu bang, AL ́ ̉ ̣ ̀ ̣ ̀ ̉ giư khoang cach tư đâu bang tơi giá trị cân lây. ̉ ́ ̀ ̉ ̀ ́ 4. Lênh nap đia chỉ tac đông vao thanh ghi.(Load Effective Address to Register) ̣ ̣ ̣ ́ ̣ ̀ - Cú phap: LEA Reg16,X1 ́ ;X1 là tên biên cân lây đia chi. ́ ̀ ́ ̣ ̉ - Thưc hiên: Reg16 ̣ ← Đia chỉ tac đông cua biên X1. ̣ ́ ̣ ̉ ́ Lây đia chỉ offset cua biên X1 vao môt thanh ghi 16 bit. ́ ̣ ̉ ́ ̀ ̣ 5. Nap con trỏ bộ nhơ vao thanh ghi DS (Load Pointer to DS). ̣ ̀ - Cú phap: LDS Reg16,X ́ - Thưc hiên: DS ̣ ← Seg.X Reg16 ← Off.X Lây đia chỉ đoan cua biên X vao thanh ghi DS và lây đia chỉ tac đông vao thanh ghi 16 bit. ́ ̣ ̣ ̉ ́ ̀ ́ ̣ ́ ̣ ̀ 6. Lênh nap con trỏ bộ nhơ vao thanh ghi ES: ̣ ̣ ̀ - Cú phap: ́ LES Reg16,Var - Thưc hiên: ES ̣ ← Seg.Var Reg16 ← Off.Var 7. Lênh cât dư liêu vao ngăn xêp. ̣ ́ ̣ ̀ ́ - Cú phap: PUSH Source ́ Toan hang Source trong lênh có thể là môt biên bộ nhơ hoăc môt biên thanh ghi. Cât thanh ́ ̣ ̣ ̣ ́ ̣ ̣ ́ ́ ghi cơ vao đinh ngăn xêp sư dung lênh PUSHF. ̀ ̉ ́ ̣ ̣ - Thưc hiên: Cât dư liêu chỉ thị bơi toan hang nguôn vao đinh ngăn xêp và tư đông giam ̣ ́ ̣ ́ ̣ ̀ ̀ ̉ ́ ̣ ̉ con trỏ ngăn xêp tuỳ theo số byte cua toan hang nguôn. ́ ̉ ́ ̣ ̀ Ví dụ : PUSH AX sẽ thưc hiên cac thao tac sau ̣ ́ ́ [SS*10H+(SP-1)] ← AH [SS*10H+(SP-2)] ← AL SP ← SP-2 8. Lênh lây dư liêu ra khoi ngăn xêp. ̣ ́ ̣ ̉ ́ - Cú phap: POP Dest ́ Toan hang đich trong lênh cung có thể là môt toan hang bộ nhơ hoăc môt thanh ghi. Phuc ́ ̣ ́ ̣ ̃ ̣ ́ ̣ ̣ ̣ ̣ hôi thanh ghi cơ tư đinh ngăn xêp sư dung lênh POPF. ̀ ̉ ́ ̣ ̣ - Thưc hiên: Lây dư liêu tư đinh ngăn xêp ra toan hang đich và tăng giá trị cua SP lên môt ̣ ́ ̣ ̉ ́ ́ ̣ ́ ̉ ̣ lương tương ưng vơi số byte chưa đươc trong toan hang đich. ́ ̣ ́ 9. Cac lênh truy câp công. ́ ̣ ̣ ̉ ̣ Lênh nhâp (input): ̣ IN Acc,Port 59
- IN Acc,[DX] ̣ ́ Lênh xuât (output): OUT Port,Acc OUT [DX],Acc Vơi: Port là đia chỉ công vao ra truy xuât dư liêu. ̣ ̉ ̀ ́ ̣ [DX] là toan hang gian tiêp thanh ghi chưa đia chỉ công. ́ ̣ ́ ́ ̣ ̉ Acc là thanh ghi chưa (AX nêu truy xuât tư, AL nêu truy xuât byte). ́ ́ ́ ́ 3.3.2. Cac lênh xư lý dư liêu. ́ ̣ ̣ Cac lênh xư lý dư liêu ngoai kêt quả lênh chưa trong toan hang đich, trang thai cua kêt quả ́ ̣ ̣ ̀ ́ ̣ ́ ̣ ́ ̣ ́ ̉ ́ đó con lam anh hương tơi cac cơ trang thai trong thanh chi cơ. ̀ ̀ ̉ ́ ̣ ́ ́ ̣ 1. Cac lênh công: ̣ • Công (Add): ̣ - Cú phap: ADD Dest,Source ́ - Thưc hiên: Dest ← ̣ Dest+Source CF ← ̀ ̉ Bit tran cua kêt qua. ́ ̉ - Cac toan hang sư dung trong lênh: ́ ́ ̣ ̣ ̣ Dest Source Ví dụ Reg Reg ADD AX,BX Reg Mem ADD BX,VAR Mem Reg ADD SUM,DX Reg Imm ADD CL,09 Mem Imm ADD SUM,10 • Công có nhơ : (Add with Carry). ̣ - Cú phap: ADC Dest,Source ́ - Thưc hiên: Dest ← ̣ Dest+Source+CF - Cac toan hang sư dung trong lênh giông như lênh công. ́ ́ ̣ ̣ ̣ ́ ̣ ̣ • Lênh tăng (Increment). ̣ - Cú phap: INC Dest ́ - Thưc hiên: Dest ← ̣ Dest+1 - Toan hang đich sư dung trong lênh có thể là môt thanh ghi hoăc môt ô nhơ. ́ ̣ ́ ̣ ̣ ̣ ̣ ̣ • Chinh thâp phân cho lênh công (Decimal Adjust for Add) ̉ ̣ ̣ ̣ - Cú phap: DAA ́ - Thưc hiên: kêt quả cua lênh công đăt ngay trươc lênh chinh thâp phân sẽ đươc điêu ̣ ́ ̉ ̣ ̣ ̣ ̣ ̉ ̣ ̀ chinh tư dang nhị phân thông thương thanh dang BCD nen. Giá trị tran khoi thanh chưa sẽ ̉ ̣ ̀ ̣ ́ ̀ ̉ lưu trong cơ C. Để có kêt quả đung, cac toan hang sư dung trong lênh công trươc DAA phai ơ dang thâp ́ ́ ́ ́ ̣ ̣ ̣ ̣ ̉ ̣ ̣ phân nen. ́ • Chinh ASCII cho lênh công (ASCII Adjust for Add). ̉ ̣ ̣ - Cú phap: AAA ́ 60
- - Thưc hiên: Điêu chinh lai giá trị ASCII cho lênh công ngay phia trươc. Để có kêt quả ̣ ̀ ̉ ̣ ̣ ̣ ́ ́ đung, cac toan hang cua lênh công phai dươi dang mã ASCII. ́ ́ ́ ̣ ̉ ̣ ̣ ̉ ̣ 2. Cac lênh trư (Subtract). ́ ̣ Hoan toan tương tư vơi cac lênh công, 8088 có cac lênh trư tương đương. ̀ ̀ ́ ̣ ̣ ́ ̣ • Trư : SUB Dest,Source • Trư có nhơ : SBB Dest,Source • Giam: ̉ DEC Dest • Lây bù 2: ́ NEG Dest • Chinh thâp phân cho phep trư : DAS ̉ ̣ ́ • Chinh ASCII cho phep trư :̉ ́ AAS ́ ̣ 3. Cac lênh nhân (multiply). • Lênh nhân. ̣ - Cú phap: MUL Source ́ - Thưc hiên: AX ← ̣ AL * Source8 ́ ̣ ; khi toan hang nguôn 8 bit ̀ DX AX ← AX * Source16 ́ ̣ ; khi toan hang nguôn 16 bit ̀ • Lênh nhân số nguyên có dâu: ̣ ́ - Cú phap: IMUL Source ́ - Thưc hiên: tương tư như lênh nhân thương nhưng vơi cac số nguyên, kêt quả sẽ là môt ̣ ̣ ́ ́ ̣ số nguyên. Ngoai ra con có cac lênh nhân số nguyên có dâu khac như: ̀ ̀ ́ ̣ ́ ́ IMUL Reg,Imm ; Reg16 ← Reg16 * Imm IMUL Reg,Source,Imm8 ; Reg16 ← Source16 * Imm8 • Lênh chinh ASCII cho phep nhân. ̣ ̉ ́ - Cú phap: AAM ́ - Lênh nay chỉ thưc hiên đung cho phep nhân số BCD nen 8 bit kêt quả trong AL. ̣ ̀ ̣ ́ ́ ́ ́ ́ ̣ 4. Cac lênh chia (Division). Tương tư như cac lênh nhân, 8088 có cac lênh chia như sau: ́ ̣ ́ ̣ • Chia: DIV Source Vơi Source 8 bit, số bị chia trong AX thương số trong AL, số dư trong AH. Vơi Source 16 bit, số bị chia trong DX AX, thương chưa trong AX, số dư chưa trong DX. • Chia số nguyên có dâu: IDIV Source ́ • Chinh ASCII cho phep chia: AAD ̉ ́ 5. Cac lênh logic. ́ ̣ Cac lênh logic thưc hiên vơi cac toan hang 8 và 16 bit vơi viêc thưc hiên phep logic tưng ́ ̣ ̣ ́ ́ ̣ ̣ ̣ ́ bit tương ưng trong hai toan hang. Cac lênh logic bao gôm: ́ ̣ ́ ̣ ̀ • AND Dest,Source • OR Dest,Source • XOR Dest,Source • NOT Dest Cac toan hang sư dung trong cac lênh logic trên bao gôm: ́ ́ ̣ ̣ ́ ̣ ̀ 61
- Dest Source Reg Reg Reg Mem Mem Reg Reg Imm Mem Imm Riêng lênh NOT chỉ có môt toan hang đich, toan hang nay có thể là môt thanh ghi hoăc ̣ ̣ ́ ̣ ́ ́ ̣ ̀ ̣ ̣ môt ô nhơ. ̣ 6. Cac lênh quay dich dư liêu. ́ ̣ ̣ ̣ Trong cac lênh quay, dich toan hang đich (Dest) là bộ nhơ hoăc thanh ghi sẽ quay hoăc ́ ̣ ̣ ́ ̣ ́ ̣ ̣ dich cac bit đi số lân chỉ thị băng số đêm (Count) chỉ thị trong lênh. Số đêm count chỉ có ̣ ́ ̀ ̀ ́ ̣ ́ thể băng 1 hoăc chưa trong CL. ̀ ̣ • Dich trai logic (Shift Logic Left). ̣ ́ - Cú phap: SHL Dest,Count ́ - Thưc hiên: cac bit cua toan hang đich sẽ đươc dich về phia trai count lân, sau môi lân ̣ ́ ̉ ́ ̣ ́ ̣ ́ ́ ̀ ̃ ̀ dich bit thư i sẽ thay thế bit thư (i+1), bit có trong số cao nhât sẽ đươc dich ra cơ nhơ ̣ ̣ ́ ̣ (CF), và bit có trong số thâp nhât sẽ đươc thay thế băng số 0. Phep dich trai logic có thể ́ ́ ̀ ́ ̣ ́ ̉ ̃ biêu diên trên hinh 3.4. ̀ CF Dn D0 0 ̀ ̣ ̣ ̉ ̣ Hinh 3.4: Hoat đông cua lênh SHL Dest,Count. • Dich trai số hoc (Shift Arithmetic Left). ̣ ́ ̣ - Cú phap: SAL Dest,Count ́ - Thưc hiên: tương tư như lênh dich trai logic, chỉ khac ơ chỗ bit có trong số cao nhât ̣ ̣ ̣ ́ ́ ́ trong toan hang đich không thay đôi sau khi thưc hiên lênh. ́ ̣ ́ ̉ ̣ ̣ Tương tư có cac lênh dich phai logic và dich phai số hoc: ́ ̣ ̣ ̉ ̣ ̉ ̣ SHR Dest,Count ̣ ̉ ;dich phai logic. SAR Dest,Count ;dich phai số hoc. ̣ ̉ ̣ CF Dn D0 ̀ ̣ ̣ ̉ ̣ Hinh 3.5: Hoat đông cua lênh ROL Dest,Count. • Quay trai (Rote Left). ́ - Cú phap: ROL Dest,Count ́ 62
- - Thưc hiên: tương tư như lênh dich trai logic nhưng bit có trong số cao nhât đươc ̣ ̣ ̣ ́ ̣ ́ chuyên trơ về thay cho bit có trong số thâp nhât trong toan hang Dest. Có thể mô tả hoat ̉ ̣ ́ ́ ́ ̣ ̣ ̣ ̉ ̣ đông cua lênh trên hinh 3.5.̀ • Quay phai (Rote Right). ̉ - Cú phap: ROR Dest,Count ́ - Thưc hiên: tương tư lênh ROL như chiêu quay đôi về bên phai. ̣ ̣ ̀ ̉ ̉ • Quay trai qua cơ nhơ. ́ - Cú phap: RCL Dest,Count ́ - Thưc hiên: Tương tư lênh quay trai nhưng cả cơ nhơ đêu tham gia vao vong quay. Có ̣ ̣ ́ ̀ ̀ ̀ thể mô tả hoat đông cua lênh nay trên hinh 3.6. ̣ ̣ ̉ ̣ ̀ ̀ CF Dn D0 ̀ ̣ ̣ ̉ ̣ Hinh 3.6: Hoat đông cua lênh RCL Dest,Count. • Quay phai qua cơ nhơ. ̉ - Cú phap: RCR Dest,Count ́ - Thưc hiên: giông như lênh quay trai qua cơ nhơ (RCL), nhưng vơi chiêu quay ngươc ̣ ́ ̣ ́ ̀ ̣ lai. ̣ 7. Lênh so sanh. ́ - Cú phap: CMP Dest,Source ́ - Thưc hiên: Dest – Source → tac đông lên cac cơ trang thai. ̣ ́ ̣ ́ ̣ ́ Phep trư không lam thay đôi cac toan hang trong lênh, nhưng trang thai cua nó đươc ́ ̀ ̉ ́ ́ ̣ ̣ ̣ ́ ̉ thông bao lênh cac cơ trang thai. Cac toan hang sư dung trong lênh bao gôm. ́ ̣ ́ ̣ ́ ́ ́ ̣ ̣ ̣ ̀ Dest Source Reg Reg Reg Mem Reg Imm Mem Imm 8. Cac lênh xư lý chuôi dư liêu. ́ ̣ ̃ ̣ • ̉ ̃ Di chuyên chuôi theo byte (Move string byte) - Cú phap: MOVSB ́ - Thưc hiên: ̣ [ES*10H + DI] ← [DS * 10H + SI] SI ← SI ± 1 DI ← DI ± 1 Dâu công khi cơ DF = 1, dâu trư khi cơ DF = 0. ́ ̣ ́ • Di chuyên chuôi theo byte (Move string byte) ̉ ̃ - Cú phap: MOVSW ́ - Thưc hiên: ̣ [ES*10H + DI] ← [DS * 10H + SI] 63
- [ES*10H + DI + 1] ← [DS * 10H + SI + 1] SI ← SI ± 2 DI ← DI ± 2 • So sanh chuôi theo byte (compare string byte). ́ ̃ - Cú phap: CMPSB ́ - Thưc hiên: ̣ [DS*10H + DI] - [ES * 10H + SI] SI ← SI ± 1 DI ← DI ± 1 Dâu công khi cơ DF = 1, dâu trư khi cơ DF = 0. ́ ̣ ́ • So sanh chuôi theo tư (Compare String Word). ́ ̃ - Cú phap: CMPSW ́ - Thưc hiên: ̣ [DS*10H + DI] - [ES * 10H + SI] SI ← SI ± 2 DI ← DI ± 2 • Quet chuôi theo byte (Scan String Byte): Xac đinh ký tư chỉ đinh trươc trong chuôi. ́ ̃ ́ ̣ ̣ ̃ - Cú phap: SCASB ́ - Thưc hiên: ̣ AL - [DS*10H + DI] DI ← DI ± 1 • Quet chuôi theo tư (Scan String Word): ́ ̃ - Cú phap: SCASW ́ - Thưc hiên: ̣ AX - [DS*10H + DI] DI ← DI ± 2 • Nap chuôi theo byte (Load String Byte). ̣ ̃ - Cú phap: LODSB ́ - Thưc hiên: ̣ AL ← [DS*10H + SI] SI ← SI ± 1 • Nap chuôi theo tư (Load String Word). ̣ ̃ - Cú phap: LODSW ́ - Thưc hiên: ̣ AX ← [DS*10H + SI] SI ← SI ± 2 • Lưu chuôi theo byte (Store String Byte). ̃ - Cú phap: STOSB ́ - Thưc hiên: ̣ [ES*10H + DI] ← AL DI ← DI ± 1 • Lưu chuôi theo tư (Store String Word). ̃ - Cú phap: STOSW ́ - Thưc hiên: ̣ [ES*10H + DI] ← AX DI ← DI ± 2 • Cac lênh lăp chuôi: Cac lênh lăp chuôi thưc hiên cac lênh về chuôi, nhưng lăp lai CX ́ ̣ ̣ ̃ ́ ̣ ̣ ̃ ̣ ́ ̣ ̃ ̣ ̣ lân, hoăc cho đên khi thoả man điêu kiên. Cac lênh nay bao gôm: ̀ ̣ ́ ̃ ̀ ̣ ́ ̣ ̀ ̀ ́ ̣ - Cac lênh: 64
- REP MOVSB REP MOVSW REP STOSB REP STOSW ; cac lênh nay đươc lăp lai cho đên khi CX = 0 ́ ̣ ̀ ̣ ̣ ́ ́ ̣ - Cac lênh: REPE CMPS hoăc REPZ CMPS ̣ REPE SCAS hoăc REPZ SCAS ̣ ̣ ̣ Lăp lai cho đên khi ZF = 0 hoăc CX = 0. ́ ̣ ́ ̣ - Cac lênh: REPNE CMPS hoăc REPNZ CMPS ̣ REPNE SCAS hoăc REPNZ SCAS ̣ ̣ ̣ Lăp lai cho đên khi ZF = 1 hoăc CX = 0. ́ ̣ 3.2.3. Cac lênh điêu khiên chương trinh. ́ ̣ ̀ ̉ ̀ 1. Cac lênh điêu khiên cơ. ́ ̣ ̀ ̉ • Lênh chuyên giá trị thanh ghi cơ vao thanh ghi AH (Load AH with Flag). ̣ ̉ ̀ - Cú phap: LAHF ́ - Thưc hiên: AH ← ̣ F • Phuc hôi giá trị cua thanh ghi cơ tư thanh ghi AH (Store AH into Flags). ̣ ̀ ̉ - Cú phap: SAHF ́ - Thưc hiên: F ̣ ← AH • Xoá cơ nhơ : CLC • Lâp cơ nhơ : STC ̣ • Lây bù cơ nhơ : CMC ́ • Xoa cơ ngăt : CLI ́ ́ • Lâp cơ ngăt : STI ̣ ́ 2. Cac lênh nhay. ́ ̣ ̉ • Nhay không điêu kiên (JMP). ̉ ̀ ̣ - Cú phap: JMP tac_tô. ́ ́ ́ - Thưc hiên: chuyên điêu khiên chương trinh tơi vị trí xac đinh bơi tac tố chỉ thị trong ̣ ̉ ̀ ̉ ̀ ́ ̣ ́ ̣ lênh. - Tac tố = Short - Label; Near – Label; Far – Label; Mem16; Reg16; Mem32. ́ + Vơi Short – label và Near – Label: lênh sẽ chuyên điêu khiên tơi nhan cach lênh nhay ̣ ̉ ̀ ̉ ̃ ́ ̣ ̉ trong khoang tư –128 tơi 127 byte. Toan hang sư dung sẽ tinh theo chế độ tương đôi, chỉ ̉ ́ ̣ ̣ ́ ́ có giá trị IP thay đôi, CS không thay đôi. ̉ ̉ + Vơi Mem16 và Reg16: lênh sẽ chuyên điêu khiên tương đôi trong khoang tư – 32768 ̣ ̉ ̀ ̉ ́ ̉ tơi 32767. Cung chỉ có giá trị trong IP bị thay đôi. ̃ ̉ + Vơi Mem32 và Far – Label: lênh sẽ chuyên điêu khiên qua đoan 64KB khac cua bộ ̣ ̉ ̀ ̉ ̣ ́ ̉ nhơ. Cả CS và IP đêu đươc gan giá trị mơi. ̀ ́ • Nhay có điêu kiên. ̉ ̀ ̣ Cac lênh nhay có điêu kiên sẽ thưc hiên viêc chuyên điêu khiên khi điêu kiên chỉ thị trong ́ ̣ ̉ ̀ ̣ ̣ ̣ ̉ ̀ ̉ ̀ ̣ lênh đươc thoả man, nêu điêu kiên không thoả lênh kế tiêp trong chương trinh sẽ đươc ̣ ̃ ́ ̀ ̣ ̣ ́ ̀ 65
- thưc hiên. Cac lênh nay thưc hiên viêc chuyên điêu khiên tương đôi trong khoang – 128 tơ ̣ ́ ̣ ̀ ̣ ̣ ̉ ̀ ̉ ́ ̉ 127 byte. Cac điêu kiên sư dung trong cac lênh nay bao gôm: ́ ̀ ̣ ̣ ́ ̣ ̀ ̀ - A: Lơn hơn (Above). - B: Nhỏ hơn (Below). - E: Băng (Equal). ̀ - NA: không lơn hơn. - NB: không nhỏ hơn. - NE: không băng. ̀ - AE: lơn hơn hoăc băng. ̣ ̀ - BE: Nhỏ hơn hoăc băng. ̣ ̀ - NAE: không lơn hơn hoăc băng ̣ ̀ - NBE: Không nhỏ hơn hoăc băng. ̣ ̀ - C: CF = 1; NC: CF = 0; Z: ZF = 1; NZ: ZF = 0; S: SF = 1; NS: SF = 0; P: le; PE: chăn; ̉ ̃ O: OF = 1; NO: OF = 0. - CXZ: nhay nêu CX băng 0 . ̉ ́ ̀ Khi thưc hiên viêc so sanh cac số có dâu con có cac điêu kiên như: ̣ ̣ ́ ́ ́ ̀ ́ ̀ ̣ - L: nhỏ hơn (Less Than). - G: lơn hơn (Great than). - LE: nhỏ hơn hoăc băng. ̣ ̀ - GE: lơn hơn hoăc băng. ̣ ̀ - NLE: không nhỏ hơn hoăc băng. ̣ ̀ - NGE: không lơn hơn hoăc băng. ̣ ̀ Vơi cac điêu kiên trên 8088 có cac lênh nhay có điêu kiên sau: ́ ̀ ̣ ́ ̣ ̉ ̀ ̣ ̃ JB Nhan; JNAE Nhan; JC Nhan; JAE Nhan; JNB Nhan; JNC Nhan; JBE nhan; JNA Nhan; ̃ ̃ ̃ ̃ ̃ ̃ ̃ ̃ ̃ JNBE nhan; JA Nhan; JE Nhan; JZ Nhan; JNE Nhan; JNZ Nhan; JS Nhan; JNS Nhan; JO ̃ ̃ ̃ ̃ ̃ ̃ ̃ ̃ Nhan; JNP Nhan; JP Nhan; JPE Nhan; JNP Nhan; JPO Nhan; JCXZ Nhan; JL Nhan; JNGE ̃ ̃ ̃ ̃ ̃ ̃ ̃ ̃ Nhan; JG Nhan; JNLE Nhan; JLE Nhan; JNG Nhan; JGE Nhan; JNL Nhan. ̃ ̃ ̃ ̃ ̃ 3. Cac lênh cho chương trinh con. ́ ̣ ̀ • Cac lênh goi chương trinh con: ́ ̣ ̣ ̀ - Cú phap: CALL tac_tô. ́ ́ ́ - Cac tac tố trong lênh tương tư như trong lênh nhay không điêu kiên bao gôm: Near – ́ ́ ̣ ̣ ̉ ̀ ̣ ̀ Proc; Far – Proc; Mem16; Reg16; Mem32. - Thưc hiên: cât giá trị CS và IP vao đinh ngăn xêp (trong cac lênh goi xa, trong cac lênh ̣ ́ ̀ ̉ ́ ́ ̣ ̣ ́ ̣ goi gân chỉ cât IP vao ngăn xêp), và chuyên điêu khiên chương trinh tơi nhan chỉ thị ̣ ̀ ́ ̀ ́ ̉ ̀ ̉ ̀ ̃ bơi tac tố trong lênh.́ ̣ • Cac lênh trơ về tư chương trinh con (Return). ́ ̣ ̀ RET ; đia chỉ quay về tư chương trinh con đươc lây tai đinh ngăn xêp. ̣ ̀ ́ ̣ ̉ ́ RET Disp16; đia chỉ quay về tư chương trinh con đươc lây tai vị trí có đia chỉ băng ̣ ̀ ́ ̣ ̣ ̀ đinh ngăn xêp công vơi số độ dơi chỉ thị bơi toan hang Disp16 trong lênh. ̉ ́ ̣ ́ ̣ ̣ ́ ̣ 4. Cac lênh vong lăp. ̀ ̣ • LOOP Short – Label; giam CX đi 1 và nhay tương đôi tơi vị trí xac đinh bơi Short – ̉ ̉ ́ ́ ̣ Label nêu CX≠ 0 . Nêu CX = 0 lênh kế tiêp trong chương trinh sẽ đươc thưc hiên. ́ ́ ̣ ́ ̀ ̣ 66
- • LOOPE hoăc LOOPZ Short – Label; giam CX đi 1 và chuyên điêu khiên chương trinh ̣ ̉ ̉ ̀ ̉ ̀ nêu CX ≠ 0 và ZF ≠ 0. ́ • LOOPNE hoăc LOOPNZ Short – Label; giam CX đi 1 và chuyên điêu khiên chương ̣ ̉ ̉ ̀ ̉ trinh nêu CX ≠ 0 và ZF = 0. ̀ ́ 67
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn