Bài giảng Kĩ thuật Vi xử lí

pdf 340 trang huongle 3770
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kĩ thuật Vi xử lí", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ki_thuat_vi_xu_li.pdf

Nội dung text: Bài giảng Kĩ thuật Vi xử lí

  1. BàiBài gigiảảngng KKỹỹ thuthuậậtt ViVi xxửử lýlý NgànhNgành ĐĐiiệệnn ttửử ViViễễnn thôngthông ĐạĐạii hhọọcc BáchBách khoakhoa ĐĐàà NNẵẵngng ccủủaa HHồồ ViViếếtt ViViệệtt,, KhoaKhoa CNTTCNTT ĐĐTVTTVT TàiTài liliệệuu thamtham khkhảảoo [1][1] KKỹỹ thuthuậậtt vivi xxửử lýlý,, VVăănn ThThếế MinhMinh,, NXBNXB GiáoGiáo ddụụcc,, 19971997 [2][2] KKỹỹ thuthuậậtt vivi xxửử lýlý vàvà LLậậpp trìnhtrình AssemblyAssembly chocho hhệệ vivi xxửử lýlý,, ĐỗĐỗ XuânXuân TiTiếếnn,, NXBNXB KhoaKhoa hhọọcc && kkỹỹ thuthuậậtt,, 20012001
  2. ChChươươngng 11 CácCác hhệệ ththốốngng ssốố,, mãmã hoáhoá,, linhlinh kikiệệnn ssốố ccơơ bbảảnn 1.11.1 CácCác hhệệ ththốốngng ssốố - Hệ thập phân - Hệ nhị phân - Hệ thập lục phân 1.21.2 CácCác hhệệ ththốốngng mãmã hoáhoá - ASCII - BCD 1.31.3 CácCác linhlinh kikiệệnn đđiiệệnn ttửử ssốố ccơơ bbảảnn - Các cổng logic: AND, OR, XOR,NOT - Các bộ giải mã, Các IC chốt, đêm
  3. 1.11.1 CácCác hhệệ ththốốngng ssốố „ HHệệ đếđếmm ththậậpp phânphân (Decimal)(Decimal) „ CònCòn ggọọii làlà hhệệ đếđếmm ccơơ ssốố mmườườii (Vì có quá ít người có chín ngón tay hoặc mười một ngón chân?) „ DùngDùng mmườườii kýký hihiệệuu:: 1,2,3,4,5,6,7,8,9,01,2,3,4,5,6,7,8,9,0 „ VíVí ddụụ:1.1::1.1: BaBa nghìnnghìn ChínChín trtrăămm BBảảyy mmươươii TámTám 39783978 == 3x103x103 ++ 9x109x102 ++ 7x107x101 ++ 8x108x100 == 30003000 ++ 900900 ++ 7070 ++ 88
  4. 1.11.1 CácCác hhệệ ththốốngng ssốố „ HHệệ đếđếmm nhnhịị phânphân (Binary)(Binary) „ CònCòn ggọọii làlà HHệệ đếđếmm ccơơ ssốố haihai „ SSửử ddụụngng haihai kýký hihiệệuu (bit):(bit): 00 vàvà 11 (Các hệ thống điện tử số chỉ sử dụng hai mức điện áp?) „ KíchKích ccỡỡ,, LSB,LSB, MSBMSB ccủủaa ssốố nhnhịị phânphân „ SSốố nhnhịị phânphân khôngkhông ddấấuu (Unsigned)(Unsigned) „ SSốố nhnhịị phânphân cócó ddấấuu (S(Sốố bùbù haihai))
  5. SSốố nhnhịị phânphân „ Mỗi ký hiệu 0 hoặc 1 được gọi là 1 Bit (Binary Digit- Chữ số nhị phân) „ Kích cỡ của một số nhị phân là số bit của nó „ MSB (Most Significant Bit): Bit sát trái „ LSB (Least Significant Bit): Bit sát phải „ VíVí ddụụ 1.1:1.1: 10101010101010101010101010101010 MSB LSB làlà mmộộtt ssốố nhnhịị phânphân 1616 bitbit
  6. SSốố nhnhịị phânphân khôngkhông ddấấuu „ ChChỉỉ bibiểểuu didiễễnn đượđượcc cáccác giágiá trtrịị khôngkhông âmâm (>=(>= 0)0) „ VVớớii nn bitbit cócó ththểể bibiểểuu didiễễnn cáccác giágiá trtrịị ttừừ 00 đếđếnn 22n –– 11 „ VíVí ddụụ 1.3:1.3: GiáGiá trtrịị VV ccủủaa ssốố nhnhịị phânphân khôngkhông ddấấuu 11011101 đượđượcc tínhtính:: V(1101)V(1101) == 1x21x23 ++ 1x21x22 ++ 0x20x21 ++ 1x21x20 == 88 ++ 44 ++ 00 ++ 11 == 1313
  7. SSốố nhnhịị phânphân khôngkhông ddấấuu „ TTổổngng quátquát:: NNếếuu ssốố nhnhịị phânphân NN nn bit:bit: NN == bb( n-1) bb( n-2) . . bb1 bb0 thìthì giágiá trtrịị VV ccủủaa nónó làlà:: (n-1) (n-2) VV == bb(n -1) xx 22 +b+b (n-2) x2x2 ++ 1 0 ++ bb1 xx 22 ++ bb0 xx 22 CácCác ssốố nhnhịị phânphân khôngkhông ddấấuu 44 bitbit bibiểểuu didiễễnn đượđượcc cáccác giágiá trtrịị ttừừ ?? đếđếnn ??
  8. 1616 giágiá trtrịị ttừừ 00 đếđếnn 1515 Nhị phân không dấu Giá trị thập phân 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 10 1011 11 1100 12 1101 13 1110 14 1111 15
  9. SSốố nhnhịị phânphân khôngkhông ddấấuu „ DDảảii giágiá tritri ccủủaa cáccác ssốố khôngkhông ddấấuu 88 bitbit làlà [0,255][0,255] (unsigned(unsigned charchar trongtrong C)C) „ DDảảii giágiá tritri ccủủaa cáccác ssốố khôngkhông ddấấuu 1616 bitbit làlà [0,65535][0,65535] (unsigned(unsigned intint trongtrong C)C)
  10. ChuyChuyểểnn đổđổii ththậậpp phânphân sangsang nhnhịị phânphân „ Ví dụ 1.4 Chuyển 25 sang nhị phân không dấu. Dùng phương pháp chia 2 liên tiếp Chia 2 Thương số Dư số „ 25/2 = 12 1 LSB „ 12/2 = 6 0 „ 6/2 = 3 0 „ 3/2 = 1 1 „ 1/2 = 0 1 MSB Kết quả là: 11001
  11. SSốố nhnhịị phânphân cócó ddấấuu „ BiBiểểuu didiễễnn đượđượcc ccảả cáccác giágiá trtrịị âmâm „ CònCòn ggọọii làlà SSốố bùbù haihai „ VVớớii nn bitbit cócó ththểể bibiểểuu didiễễnn cáccác giágiá trtrịị ttừừ –– 22(n-1) đếđếnn 22(n-1) –– 11 „ VíVí ddụụ 1.3:1.3: GiáGiá trtrịị VV ccủủaa ssốố nhnhịị phânphân cócó ddấấuu 11011101 đượđượcc tínhtính:: V(1101)V(1101) == –– 1x21x23 ++ 1x21x22 ++ 0x20x21 ++ 1x21x20 == –– 88 ++ 44 ++ 00 ++ 11 == –– 33
  12. SSốố nhnhịị phânphân cócó ddấấuu „ TTổổngng quátquát:: NNếếuu ssốố nhnhịị phânphân NN nn bit:bit: NN == bb( n-1) bb( n-2) . . bb1 bb0 thìthì giágiá trtrịị VV ccủủaa nónó làlà:: (n-1) (n-2) VV == ––bb(n -1) xx 22 +b+b (n-2) x2x2 ++ 1 0 ++ bb1 xx 22 ++ bb0 xx 22 CácCác ssốố nhnhịị phânphân cócó ddấấuu 44 bitbit bibiểểuu didiễễnn đượđượcc cáccác giágiá trtrịị ttừừ ?? đếđếnn ??
  13. 1616 giágiá trtrịị ttừừ 88 đếđếnn 77 Nhị phân có dấu Giá trị thập phân 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 - 8 1001 -7 1010 -6 1011 -5 1100 -4 1101 -3 1110 -2 1111 -1
  14. SSốố nhnhịị phânphân cócó ddấấuu „ DDảảii giágiá tritri ccủủaa cáccác ssốố cócó ddấấuu 88 bitbit làlà [[ 128,+127]128,+127] (char(char trongtrong C)C) „ DDảảii giágiá tritri ccủủaa cáccác ssốố cócó ddấấuu 1616 bitbit làlà [[ 32768,+32767]32768,+32767] ((intint trongtrong C)C)
  15. TìmTìm đốđốii ssốố ((LLấấyy bùbù 2)2) „ Tổng của một số với đối số củanóbằng 0 „ Ví dụ 1.5 Đối số của số nhị phân có dấu 10011101? 10011101 Số có dấu (-99) „ 01100010 Lấy bù 1 „ + 1 Cộng 1 01100011 Kết quả (+99)
  16. ChuyChuyểểnn ssốố ththậậpp phânphân sangsang nhnhịị phânphân cócó ddấấuu „ VVơơíí ssốố ddươươngng::GiGiốốngng nhnhưư chuychuyểểnn ththậậpp phânphân sangsang nhnhịị phânphân khôngkhông ddấấuu rrồồii thêmthêm bitbit 00 vàovào sátsát bênbên tráitrái „ VíVí ddụụ:: ChuyChuyểểnn 2525 sangsang nhnhịị phânphân cócó ddấấuu:: KKếếtt ququảả:: 001101111011 „ VVớớii ssốố âmâm:: ChuyChuyểểnn đốđốii ssốố sangsang nhnhịị phânphân cócó ddấấuu rrồồii llấấyy bùbù 22
  17. ChuyChuyểểnn ssốố ththậậpp phânphân sangsang nhnhịị phânphân cócó ddấấuu VVíí ddụụ 1.61.6 ChuyChuyểểnn –– 2626 sangsang nhnhịị phânphân 1.1. chuychuyểểnn đốđốii ssốố:: +26+26 == 1101011010 2.2. ĐưĐưaa 00 vàovào sátsát tráitrái:: 011010011010 3.3. BBùù 11:: 100101100101 4.4. CCộộngng 1:1: ++ 11 2626 == 100110100110
  18. SSốố ththậậpp llụụcc phânphân „ Quen gọi là số Hexa (Hexadecimal) „ Còn gọi là hệ đếm cơ số mười sáu „ Sử dụng 16 ký hiệu để biểu diễn: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F „ Mỗi ký hiệu tương ứng với 4-bit „ Mục đích: Biểu diễn số nhị phân ở dạng ngắn gọn 11110000 = F0 10101010 = AA 01010101 = 55 Nhị phân Thập lục phân
  19. MMỗỗii kýký hihiệệuu ttươươngng ứứngng vvớớii 44 bitbit HHeexxaa BBiinnaarryy HHeexxaa BBiinnaarryy 00 00000000 88 11000000 11 00000011 99 11000011 22 00001100 AA 11001100 33 00001111 BB 11001111 44 00110000 CC 11110000 55 00110011 DD 11110011 66 00111100 EE 11111100 77 00111111 FF 11111111
  20. ChuyChuyểểnn đổđổii HexaHexa && nhnhịị phânphân „ Ví dụ 1.7 Chuyển số hexa 2F8 và ABBA sang nhị phân Thay thế mỗi ký hiệu hexa bằng 4-bit tương ứng với nó 2 F 8 0010 1111 1000 AB BA 1010 1011 1011 1010 „ Kết quả 2F8h = 001011111000b ABBAh = 1010101110111010b
  21. ChuyChuyểểnn đổđổii HexaHexa && nhnhịị phânphân „ Ví dụ 1.8 Chuyển số nhị phân 1100101011111110 sang hexa -Trước hết theo hướng từ LSB về MSB chia số nhị phân đó thành các nhóm 4-bit -Sau đóthay thế mỗi nhóm 4-bit bằng ký hiệu hexa tương ứng với nó 1100 1010 1111 1110 C A F E „ Kết quả: 1100101011111110b = CAFEh
  22. 1.21.2 CácCác hhệệ ththốốngng mãmã hoáhoá „ ASCII:ASCII: AAmericanmerican SStandardtandard CCodeode forfor IInformationnformation IInterchange.nterchange. „ DùngDùng đểđể bibiểểuu didiễễnn cáccác kýký ttựự (characters):(characters): Gồm ký tự hiển thị được và ký tự điều khiển „ MMỗỗii kýký ttựự đượđượcc bibiểểuu didiễễnn bbằằngng 88 bitbit ggọọii làlà mãmã ASCIIASCII ccủủaa kýký ttựự đđóó • Các chữ cái in và thường: A Z và a z • Các chữ số thập phân: 0,1, ,9 • Các dấu chấm câu: ; , . : vân vân • Các ký tự đặc biệt: $ & @ / { vân vân • Các ký tự điều khiển: carriage return (CR) , line feed (LF), beep, vân vân
  23. MãMã ASCIIASCII „ Với bảng mã được sắp xếp theo trật tự tăng dần của mã ASCII: • Các chữ số thập phân: 0,1, ,9 nằm liên tiếp nhau, chữ số 0 có mã ASCII là 30h • Các chữ cái in:A Z nằm liên tiếp nhau, chữ A có mã ASCII là 41h • Các chữ cái thường: a z nằm liên tiếp nhau, chữ a có mã ASCII là 61h • Mã ASCII của chữ in và chữ thường tương ứng chỉ khác nhau ở bit 5 A: 01000001 B: 01000010 Z: 01011010 a: 01100001 b: 01100010 z: 01111010 • 32 ký tự điều khiển được xếp đầu bảng mã (00h đến 1Fh)
  24. Bảng mã ASCII
  25. Bảng mã ASCII
  26. MãMã BCDBCD „ BCDBCD ((BBinaryinary CCodedoded DDecimal)ecimal) „ QuenQuen ggọọii làlà ssốố BCDBCD „ DùngDùng đểđể mãmã hoáhoá cáccác ssốố ththậậpp phânphân bbằằngng cáccác kýký hihiệệuu nhnhịị phânphân „ MMỗỗii chchữữ ssốố ththậậpp phânphân đượđượcc bibiểểuu didiễễnn bbằằngng mmộộtt ttổổ hhợợpp 44 bitbit „ CácCác ttổổ hhợợpp 44 bitbit khôngkhông ssửử ddụụngng ggọọii làlà cáccác ttổổ hhợợpp ccấấmm „ NhiNhiềềuu linhlinh kikiệệnn đđiiệệnn ttửử ssửử ddụụngng mãmã nàynày (B(Bộộ gigiảảii mãmã BCDBCD LEDLED bbảảyy đđooạạnn 7447)7447)
  27. BBảảngng mãmã BCDBCD ThThậậpp phânphân BCDBCD ThThậậpp phânphân BCDBCD 00 00000000 88 10001000 11 00010001 99 10011001 22 00100010 10101010 33 00110011 10111011 44 01000100 11001100 55 01010101 11011101 66 01100110 11101110 77 01110111 11111111
  28. MãMã BCDBCD „ ĐừĐừngng nhnhầầmm mãmã hoáhoá BCDBCD vvớớii viviệệcc chuychuyểểnn đổđổii ththậậpp phânphân sangsang nhnhịị phânphân:: VíVí ddụụ 1.9:1.9: ChoCho ssốố ththậậpp phânphân 1515 MãMã BCDBCD ccủủaa nónó làlà:: 0001010100010101 SSốố nhnhịị phânphân khôngkhông ddấấuu 88 bitbit ttươươngng ứứngng làlà:: 0000111100001111
  29. Bit,Bit, Nibble,Nibble, Byte,Byte, WordWord „ Bit: Một chữ số nhị phân 0 hoặc 1 „ Nibble: 4-bit (nửa byte) „ Byte: 8-bit (Còn gọi là Octet) „ Word (Từ): 16-bit „ Double Word (Từ kép): 32-bit 10 „ K = 2 = 1024 Kb (kilôbit) = 1024 bit = 128 byte KB (kilôbyte) = 1024 byte Kbps (Kilobit per second): Kilôbit trên giây 20 „ M = 2 = 1024 K = 1048576 Mb (Mêgabit) = 1024 Kb = 1048576 bit MB (Mêgabyte) = 1024 KB = 1048576 byte 30 „ G = 2 = 1024 M = 1048576 K Gb (Gigabit) = 1024 Mb = 1048576 Kb GB (Gigabyte) = 1024 MB = 1048576 KB „ T = ?
  30. 1.31.3 CácCác linhlinh kikiệệnn đđiiệệnn ttửử ssốố ccơơ bbảảnn „ PhânPhân chiachia linhlinh liliệệnn ssốố theotheo mmậậtt độđộ tíchtích hhợợpp:: SSI,SSI, MSI,MSI, LSI,LSI, VLSIVLSI SSI (Small Scale Integration): Vi mạch tích hợp cỡ nhỏ MSI (Medium Scale Integration): Vi mạch tích hợp cỡ trung LSI (Large Scale Integration): Vi mạch tích hợp cỡ lớn VLSI (Very Large Scale Integration):Vi mạch tích hợp cỡ cực lớn „ SSI:SSI: CácCác ccổổngng logiclogic and,and, or,or, xorxor,, notnot „ MSI:MSI: CácCác bbộộ gigiảảii mãmã,, CácCác chchốốtt,, đệđệmm „ LSI,VLSI:LSI,VLSI: CácCác bbộộ vivi xxửử lýlý,, vivi đđiiềềuu khikhiểểnn,, DSPsDSPs
  31. CCổổngng logiclogic ANDAND A AA BB AA AANNDD BB A AND B 11 11 11 B 11 00 00 Cổng AND có thể có nhiều hơn 2 đầu vào Trên một chip có thể có nhiều cổng 00 11 00 AND 00 00 00
  32. CCổổngng logiclogic AND:AND: ICIC 74087408
  33. CCổổngng logiclogic AND:AND: ICIC 74117411
  34. CCổổngng logiclogic OROR A AA BB AA OORR BB A OR B B 11 11 11 Cổng OR có thể có nhiều hơn 2 đầu vào 11 00 11 Trên một chip có thể có nhiều cổng OR 00 11 11 00 00 00
  35. CCổổngng logiclogic OR:OR: ICIC 74327432
  36. CCổổngng logiclogic XORXOR A AA BB AA XXOORR BB A XOR B B 11 11 00 Cổng XOR có thể có nhiều hơn 2 đầu vào 11 00 11 Trên một chip có thể có nhiều cổng XOR 00 11 11 00 00 00
  37. CCổổngng logiclogic NOTNOT AA NNOOTT AA 11 00 A NOT A 11 00 00 11 00 11
  38. ĐệĐệmm 33 trtrạạngng tháithái cc zz cc zz 00 HHiiZZ 11 HHiiZZ 11 xx 00 xx
  39. ChipChip gigiảảii mãmã 7413874138
  40. ChipChip gigiảảii mãmã 7413874138
  41. FlipFlip FlopFlop kikiểểuu DD
  42. FlipFlip FlopFlop kikiểểuu DD
  43. FlipFlip FlopFlop kikiểểuu DD
  44. FlipFlip FlopFlop kikiểểuu DD
  45. ChChốốtt 88 bitbit 7437374373
  46. ChChốốtt 88 bitbit 7457374573
  47. ICIC 7424474244
  48. ICIC 7424474244
  49. ĐệĐệmm 22 chichiềềuu 7424574245
  50. ĐệĐệmm 22 chichiềềuu 7424574245
  51. BàiBài gigiảảngng KKỹỹ thuthuậậtt ViVi xxửử lýlý NgànhNgành ĐĐiiệệnn ttửử ViViễễnn thôngthông ĐạĐạii hhọọcc BáchBách khoakhoa ĐĐàà NNẵẵngng ccủủaa HHồồ ViViếếtt ViViệệtt,, KhoaKhoa CNTTCNTT ĐĐTVTTVT TàiTài liliệệuu thamtham khkhảảoo [1][1] KKỹỹ thuthuậậtt vivi xxửử lýlý,, VVăănn ThThếế MinhMinh,, NXBNXB GiáoGiáo ddụụcc,, 19971997 [2][2] KKỹỹ thuthuậậtt vivi xxửử lýlý vàvà LLậậpp trìnhtrình AssemblyAssembly chocho hhệệ vivi xxửử lýlý,, ĐỗĐỗ XuânXuân TiTiếếnn,, NXBNXB KhoaKhoa hhọọcc && kkỹỹ thuthuậậtt,, 20012001
  52. ChChươươngng 22 ViVi xxửử lýlý vàvà HHệệ ththốốngng vivi xxửử lýlý 2.12.1 BBộộ vivi xxửử lýlý - Bộ vi xử lý (Microprocessor) là gì? - Các thành phần của bộ vi xử lý - Ứng dụng của bộ vi xử lý 2.22.2 CácCác hhọọ vivi xxửử lýlý - Họ x86 của Intel- Luật Moore - Họ 68x của Motorola 2.32.3 HHệệ ththốốngng vivi xxửử lýlý - Bộ nhớ - Các cổng I/O - Bus hệ thống: D-Bus, A-Bus, C-Bus - Thiết kế hệ thống vi xử lý?
  53. 2.12.1 BBộộ vivi xxửử lýlý „ MMộộtt bbộộ vivi xxửử lýlý làlà mmộộtt mmạạchch tíchtích hhợợpp chchứứaa hànghàng ngànngàn,, ththậậmm chíchí hànghàng tritriệệuu transistortransistor (LSI,(LSI, VLSI)VLSI) đượđượcc kkếếtt nnốốii vvớớii nhaunhau „ CácCác transistortransistor ấấyy cùngcùng nhaunhau làmlàm viviệệcc đểđể llưưuu trtrữữ vàvà xxửử lýlý ddữữ liliệệuu chocho phépphép bbộộ vivi xxửử lýlý cócó ththểể ththựựcc hihiệệnn rrấấtt nhinhiềềuu chchứứcc nnăăngng hhữữuu íchích „ ChChứứcc nnăăngng ccụụ ththểể ccủủaa mmộộtt bbộộ vivi xxửử lýlý đượđượcc xácxác địđịnhnh bbằằngng phphầầnn mmềềmm ((cócó ththểể llậậpp trìnhtrình đđưượợcc))
  54. BBộộ vivi xxửử lýlý „ Bộ vi xử lý đầu tiên của Intel,4004, được giới thiệu vào năm 1971. „ 4004 chứa 2300 transistor. „ Bộ vi xử lý Pentium 4 hiện nay chứa 55 triệu transistor. „ Bộ vi xử lý thường được sử dụng trong các máy vi tính (microcomputer) với vai trò là CPU. Ngoài ra, chúng còn có mặt ở nhiều thiết bị khác.
  55. CácCác thànhthành phphầầnn ccủủaa bbộộ vivi xxửử lýlý
  56. ALUALU vàvà ControlControl UnitUnit ALU „ Thựchiện các phép toán logic (AND, OR, XOR, NOT) và các phép toán số học(cộng, trừ, nhân, chia) „ Thực hiện việc chuyển dữ liệu „ Việc thực hiện lệnh thực sự diễn ra ở ALU Control Unit „ Có trách nhiệm liên quan đến việc tìm và thực hiện các lệnh bằng cách cung cấp các tín hiệu điều khiển và định thời cho ALU và các mạch khác biết phải làm gì và làm khi nào.
  57. CácCác thanhthanh ghighi (Registers)(Registers) „ Thanh ghi là nơimàbộ vi xử lý có thể lưutrữđược mộtsố nhị phân (Kích cỡ của thanh ghi tính bằng bit) „ Bộ vi xử lý dùng các thanh ghi để lưu trữ dữ liệu tạm thời trong quá trình thực hiện chương trình „ Các thanh ghi có thể được truy cập bằng các câu lệnh ngôn ngữ máy thường được gọi là các thanh ghi người sử dụng có thể nhìn thấy được (có thể truy cập được) „ Các thanh ghi điều khiển và các thanh ghi trạng thái được CU dùng để điều khiển việc thực hiện chương trình. Đa số các thanh ghi này người sử dụng không thể nhìn thấy được
  58. 2.22.2 CCácác hhọọ vivi xxửử lýlý „ HiHiệệnn nay,nay, cócó rrấấtt nhinhiềềuu nhànhà ssảảnn xuxuấấtt rara cáccác chipchip vivi xxửử lýlý:Intel,:Intel, AMD,AMD, Motorola,Motorola, CyrixCyrix „ ThôngThông ththườườngng,, mmộộtt hhọọ vivi xxửử lýlý làlà cáccác chipchip vivi xxửử lýlý đượđượcc ssảảnn xuxuấấtt bbởởii mmộộtt nhànhà ssảảnn xuxuấấtt nàonào đđóó „ TrongTrong phphạạmm vivi mmộộtt hhọọ vivi xxửử lýlý,, theotheo ththờờii giangian vàvà theotheo côngcông nghnghệệ chchếế ttạạoo cócó cáccác đờđờii ((ththếế hhệệ)) vivi xxửử lýlý kháckhác nhaunhau phânphân bibiệệtt theotheo ĐộĐộ dàidài TTừừ ccủủaa chúngchúng (bit)(bit) vàvà ttốốcc độđộ (Hz).(Hz). „ ĐộĐộ dàidài TTừừ (Word(Word Length)Length) ccủủaa mmộộtt chipchip vivi xxửử lýlý làlà kíchkích ccỡỡ ttốốii đđaa ccủủaa cáccác toántoán hhạạngng nhnhịị phânphân màmà nónó cócó ththểể ththựựcc hihiệệnn cáccác phépphép toántoán trêntrên đđóó
  59. TTốốcc độđộ ccủủaa hhọọ vivi xxửử lýlý x86x86 ccủủaa IntelIntel The Continuing Evolution of Intel Microprocessors CIS105 December 2002 1600 1,400 1400 1200 ) 1000 Z H M 800 Speed ( 600 550 400 400 400 333 200 200 233 200 100 33 0.74 2 8 12 0 1971 1974 1979 1982 1985 1989 1993 1995 1997 1998 1998 1999 1999 2000 Year
  60. HHọọ vivi xxửử lýlý x86x86 ccủủaa IntelIntel Model Năm sản xuất Số lượng Transistor 4004 1971 2,300 8008 1972 2,500 8080 1974 5,000 8086 1978 29,000 80286 1982 120,000 80386™ processor 1985 275,000 80486™ DX processor 1989 1,180,000 Pentium® processor 1993 3,100,000 Pentium II processor 1997 7,500,000 Pentium III processor 1999 24,000,000 Pentium 4 processor 2000 55,000,000
  61. HHọọ vivi xxửử lýlý x86x86 ccủủaa IntelIntel 70’s70’s 4004 8008 8080 8086 Introduced 11/15/71 4/1/72 4/1/74 6/8/78 Clock Speeds 108KHz 200KHz 2MHz 5MHz, 8MHz, 10MHz Bus Width 4 bits 8 bits 8 bits 16 bits Number of 2,300 3,500 6,000 29,000 Transistors (10 microns) (10 microns) (6 microns) (3 microns) Addressable Memory 640 bytes 16 KBytes 64 KBytes 1 MB Virtual Memory Brief Description First microcomputer Data/character 10X the performance 10X the performance chip, Arithmetic manipulation of the 8008 of the 8080 manipulation
  62. HHọọ vivi xxửử lýlý x86x86 ccủủaa IntelIntel 80’s80’s Intel486TM Intel386TM DX Intel386TM SX DX CPU 80286 Microprocessor Microprocessor Microprocessor Introduced 2/1/82 10/17/85 6/16/88 4/10/89 Clock Speeds 6MHz, 8MHz, 10MHz, 16MHz, 20MHz, 16MHz, 20MHz, 25MHz, 33MHz, 12.5MHz 25MHz, 33MHz 25MHz, 33MHz 50MHz Bus Width 16 bits 32 bits 16 bits 32 bits Number of 134,000 275,000 275,000 1.2 million Transistors (1.5 microns) (1 micron) (1 micron) (1 micron) (.8 mic ron with 50MHz) Addressable Memory 16 megabytes 4 gigabytes 16 megabytes 4 gigabytes Virtual Memory 1 gigabyte 64 terabytes 64 terabytes 64 terabytes Brief Description 3-6X the performance First X 86 chip to 16-bit address bus Level 1 cache on chip of the 8086 handle 32-bit data sets enabled low-c ost 32-bit processing
  63. HHọọ vivi xxửử lýlý x86x86 ccủủaa IntelIntel 90’s90’s Intel486TM SX Pentium® Pentium® Pro Pentium® II Microprocessor Processor Processor Processor Introduced 4/22/91 3/22/93 11/01/95 5/07/97 Clock Speeds 16MHz, 20MHz, 60MHz,66MHz 150MHz, 166MHz, 200MHz, 233MHz, 25MHz, 33MHz 180MHz, 200MHz 266MHz, 300MHz Bus Width 32 bits 64 bits 64 bits 64 bits Number of 1.185 million 3.1 million 5.5 million 7.5 million Transistors (1 micron) (.8 micron) (0.35 micron) (0.35 micron) Addressable Memory 4 gigabytes 4 gigabytes 64 gigabytes 64 gigabytes Virtual Memory 64 terabytes 64 terabytes 64 terabytes 64 terabytes Brief Description Identical in design to Superscalar Dynamic execution Dual independent bus, Intel486TM DX but architecture brought architecture drives dynamic execution, without math 5X the performance of high-performing Intel MMXTM coprocessor the 33-MHz Intel486TM processor technology DX processor
  64. 2.32.3 HHệệ ththốốngng vivi xxửử lýlý
  65. LuLuậậtt MooreMoore Dr. Gordon E. Moore, Chairman Emeritus of Intel Corporation, dự đoán rằng Cứ một năm rưỡi thì số lượng transistor được tích hợp trên chip vi xử lý tăng gấp đôi
  66. 2.32.3 HHệệ ththốốngng vivi xxửử lýlý Address Bus MEMORY I/O Ports Microprocessor Data Bus Control Lines (Control Bus) Sơ đồ khối chức năng của một hệ thống vi xử lý
  67. HHệệ ththốốngng vivi xxửử lýlý „ GGồồmm 33 khkhốốii chchứứcc nnăăngng:: ViVi xxửử lýlý,, BBộộ nhnhớớ,, CácCác ccổổngng I/OI/O „ BBộộ nhnhớớ đượđượcc ththựựcc hihiệệnn bbằằngng cáccác chipchip nhnhớớ bánbán ddẫẫnn ROMROM hohoặặcc RWM,RWM, làlà nnơơii llưưuu trtrữữ chchươươngng trìnhtrình vàvà ddữữ liliệệuu ĐốĐốii vvớớii vivi xxửử lýlý,, bbộộ nhnhớớ làlà mmộộtt ttậậpp hhợợpp cáccác ôô nhnhớớ phânphân bibiệệtt theotheo địđịaa chchỉỉ ccủủaa chúngchúng „ CácCác ccổổngng I/OI/O đượđượcc ththựựcc hihiệệnn bbằằngng cáccác chipchip MSIMSI hohoặặcc LSI,LSI, làlà phphầầnn mmạạchch giaogiao titiếếpp gigiữữaa vivi xxửử lýlý vvớớii cáccác thithiếếtt bbịị I/O.I/O. BBộộ vivi xxửử lýlý ccũũngng phânphân bibiệệtt cáccác ccổổngng I/OI/O theotheo địđịaa chchỉỉ ccủủaa chúngchúng
  68. HHệệ ththốốngng vivi xxửử lýlý „ 33 khkhốốii chchứứcc nnăăngng:: ViVi xxửử lýlý,, BBộộ nhnhớớ,, CácCác ccổổngng I/OI/O ccủủaa mmộộtt hhệệ ththốốngng vivi xxửử lýlý traotrao đổđổii tíntín hihiệệuu vvớớii nhaunhau thôngthông quaqua BusBus hhệệ ththốốngng „ BusBus hhệệ ththốốngng làlà mmộộtt ttậậpp hhợợpp cáccác đườđườngng truytruyềềnn ddẫẫnn dùngdùng chungchung,, baobao ggồồmm:: BusBus địđịaa chchỉỉ (A(A Bus),Bus), BusBus ddữữ liliệệuu (D(D Bus)Bus) vàvà BusBus đđiiềềuu khikhiểểnn (C(C Bus)Bus) „ CácCác tíntín hihiệệuu địđịaa chchỉỉ didi chuychuyểểnn trêntrên AA BusBus theotheo hhướướngng ttừừ vivi xxửử lýlý đếđếnn BBộộ nhnhớớ vàvà cáccác ccổổngng I/O.I/O. SSốố llượượngng đườđườngng truytruyềềnn ddẫẫnn ccủủaa AA BusBus ((ggọọii làlà ĐộĐộ rrộộngng ccủủaa AA Bus)Bus) tínhtính bbằằngng bit,bit, phphảảnn ánhánh khkhảả nnăăngng ququảảnn lýlý bbộộ nhnhớớ ccủủaa chipchip vivi xxửử lýlý
  69. HHệệ ththốốngng vivi xxửử lýlý „ CácCác tíntín hihiệệuu ddữữ liliệệuu didi chuychuyểểnn trêntrên DD BusBus theotheo ccảả 22 hhướướngng ttừừ vivi xxửử lýlý đếđếnn BBộộ nhnhớớ vàvà cáccác ccổổngng I/OI/O vàvà ngngượượcc llạạii ((mmỗỗii lúclúc mmộộtt hhướướngng).). SSốố llượượngng đườđườngng truytruyềềnn ddẫẫnn ccủủaa DD BusBus ((ggọọii làlà ĐộĐộ rrộộngng ccủủaa DD Bus)Bus) tínhtính bbằằngng bit,bit, phphảảnn ánhánh mmộộtt phphầầnn ttốốcc độđộ traotrao đổđổii ddữữ liliệệuu ccủủaa chipchip vivi xxửử lýlý vvớớII cáccác khkhốốii chchứứcc nnăăngng kháckhác „ ĐĐaa ssốố cáccác tíntín hihiệệuu trêntrên CC BusBus làlà cáccác tíntín hihiệệuu đđiiềềuu khikhiểểnn riêngriêng llẽẽ,, cócó tíntín hihiệệuu xuxuấấtt phátphát ttừừ vivi xxửử lýlý,, cócó tíntín hihiệệuu đđii vàovào vivi xxửử lýlý ViVi xxửử lýlý ssửử ddụụngng cáccác tíntín hihiệệuu nàynày đểđể đđiiềềuu khikhiểểnn hohoạạtt độđộngng vàvà nhnhậậnn bibiếếtt trtrạạngng tháithái ccủủaa cáccác khkhốốii chchứứcc nnăăngng kháckhác
  70. ThiThiếếtt kkếế phphầầnn ccứứngng ccủủaa hhệệ ththốốngng vivi xxửử lýlý „ ThiThiếếtt kkếế bbộộ nhnhớớ chocho hhệệ ththốốngng vivi xxửử lýlý:: GhépGhép nnốốii cáccác chipchip nhnhớớ bánbán ddẫẫnn ssẵẵnn cócó vvớớii busbus hhệệ ththốốngng saosao chocho khikhi bbộộ vivi xxửử lýlý truytruy ccậậpp bbộộ nhnhớớ thìthì khôngkhông xxảảyy rara xungxung độđộtt gigiữữaa cáccác chipchip nhnhớớ vvớớii nhaunhau vàvà khôngkhông xungxung độđộtt vvớớii cáccác chipchip dùngdùng làmlàm ccổổngng I/OI/O „ TTươươngng ttựự,, ThiThiếếtt kkếế cáccác ccổổngng I/OI/O chocho hhệệ ththốốngng vivi xxửử lýlý:: GhépGhép nnốốii cáccác chipchip MSIMSI hohoặặcc LSILSI ththườườngng dùngdùng làmlàm ccổổngng I/OI/O vvớớii busbus hhệệ ththốốngng saosao chocho khikhi bbộộ vivi xxửử lýlý truytruy ccậậpp cáccác thithiếếtt bbịị I/OI/O thìthì khôngkhông xxảảyy rara xungxung độđộtt gigiữữaa cáccác chipchip đđóó vvớớii nhaunhau vàvà khôngkhông xungxung độđộtt vvớớii cáccác chipchip dùngdùng làmlàm bbộộ nhnhớớ
  71. ThiThiếếtt kkếế phphầầnn mmềềmm ccủủaa hhệệ ththốốngng vivi xxửử lýlý „ ViViếếtt chchươươngng trìnhtrình đđiiềềuu khikhiểểnn hohoạạtt độđộngng ccủủaa hhệệ ththốốngng phphầầnn ccứứngng theotheo chchứứcc nnăăngng mongmong mumuốốnn ((ththườườngng dùngdùng ngônngôn ngngữữ AssemblyAssembly ccủủaa chipchip vivi xxửử lýlý dùngdùng trongtrong hhệệ ththốốngng)) „ DDịịchch chchươươngng trìnhtrình đđãã viviếếtt sangsang ngônngôn ngngữữ máymáy ssửử ddụụngng cáccác chchươươngng trìnhtrình ddịịchch thíchthích hhợợpp „ NNạạpp chchươươngng trìnhtrình ngônngôn ngngữữ máymáy vàovào bbộộ nhnhớớ ccủủaa hhệệ ththốốngng vivi xxửử lýlý „ KiKiểểmm tratra hohoạạtt độđộngng ccủủaa hhệệ ththốốngng vàvà ththựựcc hihiệệnn cáccác hihiệệuu chchỉỉnhnh nnếếuu ccầầnn thithiếếtt „ CóCó ththểể nhnhờờ ssựự trtrợợ giúpgiúp ccủủaa cáccác chchươươngng trìnhtrình mômô phphỏỏngng trêntrên máymáy tínhtính
  72. Bay gi ng K thu t Vi x lý Ngành in t -Vi n thông i h c Bách khoa à Nng ca H Vi t Vi t, Khoa -TVT Tài li u tham kh o [1] K thu t vi x lý, Vn Th Minh, NXB Giáo dc, 1997 [2] K thu t vi x lý và Lp trình Assembly cho h vi x lý, Xuân Ti n, NXB Khoa h c & k thu t, 2001
  73. Chương 3 Vi x lý 8088-Intel 3.1 Ki n trúc và ho t ng c a 8088 - Nguyên lý ho t ng - kh i ch c n ng 3.2 Cu trúc thanh ghi c a 8088 3.3 Ph ư ng pháp qu n lý b nh 3.4 Mô t tp l nh Assembly
  74. Nguyên lý ho t ng c a m t b vi x lý Ly - Gi i mã - Th c hi n l nh Tìm và copy các byte lnh t b nh To ra các tín hi u iu khi n Gi i mã l nh th c hi n l nh
  75. Chu k lnh và Chu k máy • Chu k lnh: Tng th i gian tìm l nh, gi i mã l nh và th c hi n 1 lnh • Nói chung, Chu k lnh c a các l nh khác nhau là khác nhau • Chu k lnh bao gi cng b ng m t s nguyên l n chu k máy • Chu k máy b ng ngh ch o c a t n s ho t ng (tc ng h) ca b vi x lý
  76. 3.1 Ki n trúc và Ho t ng c a 8088
  77. n v giao ti p Bus - BIU • Phát các tín hi u a ch n b nh và các cng I/O thông qua A-Bus • c mã l nh t b nh thông qua D-Bus • c d li u t b nh thông qua D-Bus • Ghi d li u vào b nh thông qua D-Bus • c d li u t các c ng I thông qua D-Bus • Ghi d li u ra các c ng O thông qua D-Bus
  78. n v th c hi n - EU • Bao g m CU và ALU • CU : Gi i mã l nh to ra các tín hi u iu khi n nh m th c hi n l nh ã ưc gi i mã • ALU: th c hi n các thao tác khác nhau i vi các toán h ng c a l nh
  79. T ch c c a microprocessor CPU Control registers ALU Control General BIU Address purpose Control Data registers Status Registers
  80. X lý l nh c a các vi xưc 8086/8088 •Mt th tc n gi n g m 3 bưc: –Ly l nh t b nh – Gi i mã l nh – Th c hi n l nh •Ly các toán h ng t b nh (nu có) •Lưu tr kt qu Fetch Decode Execute Fetch Decode Execute Microprocessor 1 1 1 2 2 2 Bus Busy Idle Busy Busy Idle Busy
  81. C ch Pipelining Pipelining F e tc h F e tc h F e tc h F e tc h S to re F e tc h F e tc h L o a d F e tc h Bus 1 2 3 4 1 5 6 2 7 D ecode D ecode D ecode D ecode Id le D ecode D ecode Id le D ecode Instruction 1 2 3 4 5 6 7 U nit Exec. Exec. Exec. Exec. IdIdle le Exec. Exec. Id le Exec. Execution 1 2 3 4 5 6 7 U nit Memory request Memory request
  82. 3.2 Cu trúc thanh ghi c a 8088 8088 có 14 thanh ghi 16-bit
  83. Cu trúc thanh ghi ca h x86 General Purpose Special Registers AH AL Accumulator Index Registers AX Instr Pointer IP EAX EIP Stack Pointer SP BH BL Base Flags FLAG ESP BX EFLAG Base Pointer EBX BP EBP CH CL Count Dest Index CX Segment Registers DI ECX EDI CS Code Segment Source Index DH DL SI Data DS DX Data Segment ESI EDX ES Extra Segment SS Stack Segment FS GS
  84. Cấấấu trúc thanh ghi 8086/8088 7 0 7 0 Accumulator AH AL AX Base BH BL BX Counter CH CL CX Data DH DL DX 15 0 Code Segment CS Data Segment DS Stack Segment SS Extra Segment ES 15 0 Instruction Pointer IP } Stack Pointer SP Base Pointer BP } Source Index SI Destination Index DI }
  85. Các thanh ghi a n ng 7 0 7 0 Accumulator AH AL AX Base BH BL BX Counter CH CL CX Data DH DL DX - Có th truy c p nh ư các thanh ghi 8-bit -Lưu tr tm th i d li u truy c p nhanh h n và tránh kh i ph i truy c p b nh - Có công d ng c bi t i v i m t s câu l nh
  86. Các thanh ghi segment 15 0 Code Segment CS Data Segment DS Stack Segment SS Extra Segment ES - Lưu tr a ch segment ca m t ô nh cn truy c p -Kt h p v i các thanh ghi offset nh t nh
  87. Các thanh ghi offset Instruction Pointer IP Stack Pointer SP Base Pointer BP Source Index SI Destination Index DI - Lưu tr a ch offset ca m t ô nh cn truy c p -Kt h p v i các thanh ghi segment nh t nh
  88. Thanh ghi c 15 0 x x x x OF DF IF TF SF ZF x AF x PF x CF - Không ph i t t c các bit u ưc s dng -Mi bit ưc s dng ưc g i là mt c - Các c u có tên và có th ưc L p/Xoá riêng l - Bao g m các c tr ng thái và các c u khi n
  89. Flags register AC (Alignment check) (VM) Virtual mode (RF) Resume (NT) Nested task (IOPL) Input/output privilege level (O) Overflow (D) Direction (I) Interrupt (T) Trace (S) Sign (Z) Zero (A) Auxiliary Carry (P) Parity (C) Carry 8086, 8088, 80186 8086, 8088, 80186 80386, 80486DX 80286 80486SX
  90. 3.3 Ph ư ng pháp qu n lý b nh -B nh ưc xem là mt t p h p các ô nh -Mi ô nh ưc nh n d ng b ng m t a ch vt lý duy nh t 20-bit - Trong ho t ng truy c p m t ô nh , a ch vt lý c a nóưc t o ra t hai giá tr 16-bit: a ch segment vàa ch Offset - a ch logic = a ch segment: a ch offset
  91. Mi liên h gi a CVL và CLG A=Bus 19 0 Địa ch ỉ vật lý 15 0 15 0 Thanh ghi offset. Thanh ghi Segment 0000
  92. 3.4 Mô t tp l nh Assembly ca 8086/8088 - Khuôn d ng: Mnemonics Các toán h ng - Nhóm l nh chuy n s li u - Nhóm l nh s hc - Nhóm l nh logic - Nhóm l nh R nhánh - Nhóm l nh thao tác string - Nhóm l nh h n h p
  93. Nhóm l nh chuy n s li u Data Transfer Instructions -Chuy n s li u (sao chép s li u) t v trí này sang v trí khác - Ngu n s li u không thay i - có giá tr ư á tr ca Ngu n - Các l nh chuy n s li u không nh h ưng n các c tr ng thái trên thanh ghi c -Mt s lnh tiêu bi u: MOV, XCHG
  94. Data Transfer Instructions - MOV Khuôn dạng: MOV ích,Ngu n - Tác d ng: ( ích)  (Ngu n) - ích: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) - Ngu n: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) 3. Mt giá tr c th
  95. Mt s lưu ý i v i MOV - ích và Ngu n ph i có cùng kích c - ích và Ngu n không th ng th i thu c b nh -Nu ích là mt thanh ghi segment ca VXL thì Ngu n không th là mt giá tr c th (nói cách khác, không th np giá tr tr c ti p cho mt thanh ghi segment bng lnh MOV)
  96. Data Transfer Instructions - XCHG Khuôn dạng: XCHG T/h1,T/h2 - Tác d ng: (T/h1)  (T/h2) - T/h1: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) - T/h2: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau)
  97. Mt s lưu ý i v i XCHG - T/h1 và T/h2 ph i có cùng kích c - T/h1 và T/h2 không th ng th i thu c b nh - T/h1 và T/h2 không th là các thanh ghi segment
  98. Các mode a ch - Khi th c hi n l nh, VXL s th c hi n nh ng thao tác nh t nh trên s li u, các s li u này ưc g i chung là các toán h ng. - Các toán h ng trong m t câu l nh có th là mt ph n c a câu l nh ( dng mã máy), có th nm mt thanh ghi c a VXL ho c B nh -Cách xác nh toán h ng trong các câu l nh ưc g i là các mode ( nh) a ch
  99. Các mode a ch - Mode a ch thanh ghi: MOV AX,BX - Mode a ch tc thì: MOV AL,55h - Các mode a ch b nh : Các cách th c xác nh a ch vât lý c a toán h ng n m trong b nh : Mode a ch tr c ti p Các mode a ch gián ti p
  100. Mode a ch tr c ti p (Direct Addressing Mode)
  101. Mode a ch gián ti p thanh ghi (Register Indirect Addressing Mode )
  102. Mode a ch c s -ch s (Based-Indexed Addressing Mode )
  103. Nh các mode a ch b nh nh ư th nào? •Tt c bt u trong b ng sau ây: BX SI BP DI DISP •Ly ra 0 ho c 1 ph n t t mi ct • (Không l y 2 ph n t t mt ct) • Ph i l y ít nh t 1 ph n t t bng
  104. Các ví d Addressing Instruction Comment Memory Contents Mode MOV AX, BX Move to AX the 16-bit value in BX Register 89 D8 OP MODE MOV AX, DI Move to AX the 16-bit value in DI Register 89 F8 OP MODE MOV AH, AL Move to AL the 8-bit value in AX Register 88 C4 OP MODE MOV AH, 12h Move to AH the 8-bit value 12H Immediate B4 12 OP DATA8 MOV AX, 1234h Move to AX the value 1234h Immediate B8 34 OP DATA16 Move to AX the constant defined as MOV AX, CONST Immediate B8 lsb msb CONST OP DATA16 Move to AX the address or offset of MOV AX, X Immediate B8 lsb msb the variable X OP DATA16 Move to AX the value at memory MOV AX, [1234h] Direct A1 34 12 location 1234h OP DISP16 Move to AX the value in memory MOV AX, [X] Direct A1 lsb msb location DS:X OP DISP16
  105. Các ví d Addressing Instruction Comment Memory Contents Mode Move to the memory location MOV [X], AX Direct A3 lsb msb pointed to by DS:X the value in AX OP DATA16 Move to AX the 16-bit value pointed MOV AX, [DI] Indexed 8B 05 to by DS:DI OP MODE Move to address DS:DI the 16-bit MOV [DI], AX Indexed 89 05 value in AX OP MODE Move to AX the 16-bit value pointed Register MOV AX, [BX] 8B 07 to by DS:BX Indirect OP MODE Move to the memory address DS:BX Register MOV [BX], AX 89 07 the 16-bit value stored in AX Indirect OP MODE Move to memory address SS:BP Register MOV [BP], AX 89 46 the 16-bit value in AX Indirect OP MODE Move to AX the value in memory at Register MOV AX, TAB[BX] 8B 87 lsb msb DS:BX + TAB Relative OP MODE DISP16 Move value in AX to memory Register MOV TAB[BX], AX 89 87 lsb msb address DS:BX + TAB Relative OP MODE DISP16 Move to AX the value in memory at Base Plus MOV AX, [BX + DI] 8B 01 DS:BX + DI Index OP MODE
  106. Các ví d Addressing Instruction Comment Memory Contents Mode Move to the memory location Base Plus MOV [BX + DI], AX 89 01 pointed to by DS:X the value in AX Index OP MODE Move word in memory location Base Rel MOV AX, [BX + DI + 1234h] 8B 81 34 12 DS:BX + DI + 1234h to AX register Plus Index OP MODE DISP16 MOV word [BX + DI + Move immediate value 5678h to Base Rel C7 81 34 12 78 56 1234h], 5678h memory location BX + DI + 1234h Plus Index
  107. Mã máy Một lệnh có th ể dài từ1 đến 6 byte • Byte 1 gồm: – Opcode (6 bit) xác định phép toán c ần th ực hi ện – Bit D xác định toán h ạng ở REG của Byte 2 là ngu ồn hay đích: 1: Đích 0: Ngu ồn – Bit W xác định kích c ỡ của toán h ạng là 8 bit hay 16 bit 0: 8 bit 1: 16 bit • Byte 2 gồm:Mode field (MOD), Register field (REG) Register/memory field (R/M field)
  108. Anatomy of an instruction Opcode Mode Displacement Data/Immediate • Opcode contains the type of instruction we execute plus two special bits, D and W D W • The mode byte is used only in instructions that use register addressing modes and encodes the source and destination for instructions with two OPCODE operands • D stands for direction and defines the data flow of the instruction MODREG R/M – D=0, data flows from REG to R/M – D=1, data flows from R/M to REG • W stands for the size of data – W=0, byte-sized data – W=1, word (in real mode) or double-word sized (in protected mode)
  109. AnatomyAnatomy ofof anan instructioninstruction Opcode Mode Displacement Data/Immediate • MOD field specifies the addressing mode D W • 00 – no displacement • 01 – 8-bit displacement, sign extended OPCODE • 10 – 16 -bit displacement • 11 – R/M is a register, register addressing mode • If MOD is 00,01, or 10, the R/M field selects one of the memory addressing modes MODREG R/M
  110. Registers in the REG and R/M fields Code W=0 (Byte) W=1 (Word) W=1 (DWord) 000 AL AX EAX 001 CL CX ECX 010 DL DX EDX 011 BL BX EBX 100 AH SP ESP 101 CH BP EBP 110 DH SI ESI 111 BH DI EDI
  111. Example • Consider the instruction 8BECh Code W=0 W=1 W=1 • 1000 1011 1110 1100 binary 000 AL AX EAX 001 CL CX ECX • Opcode 100010 -> MOV 010 DL DX EDX 011 BL BX EBX • D=1 data goes from R/M to REG 100 AH SP ESP 101 CH BP EBP 110 DH SI ESI • W=1 data is word-sized 111 BH DI EDI • MOD=11, register addressing • REG=101 destination, R/M=100 source • MOV BP, SP
  112. Displacement addressing • If MOD is 00, 01, or 10 R/M has an entirely different meaning MOD FUNCTION R/M Code Function 00 No displacement 000 DS:BX+SI 01 8-bit sign-extended displacement 10 16-bit displacement 001 DS:BX+DI 11 R/M is a register (register addressing mode) 010 SS:BP+SI Examples: 011 SS:BP+DI If MOD=00 and R/M=101 mode is [DI] 100 DS:SI If MOD=01 and R/M=101 mode is 101 DS:DI [DI+33h] 110 SS:BP If MODE=10 and R/M=101 modes is 111 DS:BX [DI+2233h]
  113. Code W=0 W=1 W=1 Example 000 AL AX EAX 001 CL CX ECX 010 DL DX EDX 011 BL BX EBX 100 AH SP ESP • Instruction 8A15h 101 CH BP EBP 110 DH SI ESI • 1000 1010 0001 0101 111 BH DI EDI • Opcode 100010 -> MOV R/M Code Function • D=1, data flows from R/M to REG 000 DS:BX+SI • W=0, 8-bit argument 001 DS:BX+DI • MOD=00 (no displacement) 010 SS:BP+SI 011 SS:BP+DI • REG=010 (DL) 100 DS:SI • REG=101 ([DI] addressing mode) 101 DS:DI • MOV DL, [DI] 110 SS:BP 111 DS:BX
  114. Direct Addressing Mode • MOD is always 00 • R/M is always 110 • REG encodes the register to/from we take data as usual • Third byte contains the lower-order bytes of the displacement, fourth byte contains the high order byte of the displacement
  115. Direct Addressing • Example: 8816 00 10 • 1000 1000 0001 0110 0000 0000 0001 0000 Code W=0 W=1 W=1 • Opcode 100010 -> MOV 000 AL AX EAX 001 CL CX ECX 010 DL DX EDX • W=0 (byte-sized data) 011 BL BX EBX 100 AH SP ESP • D=0 data flows from REG 101 CH BP EBP 110 DH SI ESI • MOD 00, REG=010 (DL), R/M=110 111 BH DI EDI • Low-order byte of displacement 00 • High-order byte of displacement 10 • MOV [1000h], DL
  116. Segment MOV instructions • Different opcode 100011 • Segments are selected by setting the REG field Example MOV BX, CS REG Code Segment reg. Opcode 10001100 000 ES MOD=11 (register addressing) 001 CS 010 SS REG=001 (CS) 011 DS R/M=011 (BX) 100 FS 101 GS 8CCB
  117. Mã máy REG xác định thanh ghi cho toán h ạng th ứ nh ất
  118. Mã máy MOD và R/M cùng nhau xác định toán h ạng th ứ hai
  119. Mã máy MOD và R/M cùng nhau xác định toán h ạng th ứ hai
  120. Ví d Mã hoá lệnh MOV BL,AL • Opcode đối v ới MOV là 100010 • Ta mã hoá AL sao cho AL là toán h ạng ngu ồn: – D = 0 (AL là toán hạng ngu ồn) • W bit = 0 (8-bit) • MOD = 11 (register mode) • REG = 000 (mã c ủa AL) • R/M = 011 (mã của BL) Kết qu ả:: 10001000 11000011 = 88 C3
  121. Nhóm lnh S hc • Bên c nh tác d ng, cn chú ý n nh h ưng c a lnh i v i các c tr ng thái • Các lnh s hc th/th ưng: ADD, SUB, • Các l nh s hc khác: CMP. NEG, INC, DEC, • nh h ưng n các c tr ng thái – CF – OF Ph thu c vào quá trình th c hi n phép toán – AF – ZF = 1 nu K t qu bng 0 – SF = 1 nu MSB ca K t qu = 1 – PF = 1 nu byte th p c a k t qu có Parity ch n
  122. Arithmetic Instructions - ADD Khuôn dạng: ADD ích,Ngu n - Tác d ng: ( ích)  (ích)+(Ngu n) - ích: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) - Ngu n: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) 3. Mt giá tr c th
  123. nh h ưng ca ADD – ZF = 1 nu K t qu bng 0 – SF = 1 nu MSB ca K t qu = 1 – PF = 1 nu byte th p c a k t qu có Parity ch n • CF ưc l p n u tràn không d u (có nh t MSB) • OF ưc l p n u tràn có du: - Có nh t MSB, Không có nh vào MSB - Có nh vào MSB, Không có nh t MSB • AF ưc l p n u có nh t nibble th p vào nibble cao (t bit 3 vào bit 4)
  124. Các c trên thanh ghi c • Các bit nh t nh trên thanh ghi c u khi n ho t ng ho c ph n ánh tr ng thái ca vi x lý – Các c u khi n (TF, IF, DF) • Quy t nh cách áp ng c a vi x lý trong các tình hu ng nh t nh – Các c tr ng thái (CF, PF, AF, ZF, SF, OF) •B nh h ưng b i các phép toán nh t nh • Ph c v cho các l nh cóu ki n
  125. Các c u khi n • DF - Direction flag (C hưng) – DF = 1: hu ng xu ng – DF = 0: hưng lên • IF – Interrupt flag (C ng t) – IF = 1: cho phép ng t ngoài – IF = 0: cm ng t ngoài (i v i ng t che ưc) • TF - Trace flag – TF = 1: vi x lý th c hi n t ng l nh m t
  126. Các c tr ng thái • Carry • Zero – carry or borrow at – result is 0 MSB in add or subtract • Sign – last bit shifted out – result is negative • Parity • Overflow – low byte of result has – signed overflow even parity occurred during add or • Auxiliary subtract – carry or borrow at bit 3
  127. (Signed) Overflow • Can only occur when adding numbers of the same sign (subtracting with different signs) • Detected when carry into MSB is not equal to carry out of MSB – Easily detected because this implies the result has a different sign than the sign of the operands • Programs can ignore the Flags!
  128. Signed Overflow Example 10010110 00110110 + 10100011 + 01100011 00111001 10011001 Carry in = 0, Carry out = 1 Carry in = 1, Carry out = 0 Neg+Neg=Pos Pos+Pos=Neg Signed overflow occurred Signed overflow occurred OF = 1 (set) OF = 1 (set)
  129. Examples of No Signed Overflow 10010110 10010110 + 01100011 + 11110011 11111001 10001001 Carry in = 0, Carry out = 0 Carry in = 1, Carry out = 1 Neg+Pos=Neg Neg+Neg=Neg No Signed overflow occurred No Signed overflow occurred OF = 0 (clear) OF = 0 (clear)
  130. Unsigned Overflow • The carry flag is used 10010110 to indicate if an + 11110011 unsigned operation 10001001 overflowed • The processor only Carry out = 1 adds or subtracts - it Unsigned overflow occurred does not care if the CF = 1 (set) data is signed or unsigned!
  131. DEBUG's Register Display -R 000 SP=0010 BP=0000 SI=0000 DI=0000 00F IP=004F NV UP DI PL NZ NA PO NC • The state of the Flags are shown in line 2 • OV/NV: (no)oVerflow DN/UP: direction • EI/DI: En(Dis)abled Interrupts • NG/PL: sign ZR/NZ: (not)Zero • AC/NA: (no)Auxiliary PE/PO: Even/Odd • CY/NC: (no)Carry (set/clear)
  132. Arithmetic Instructions - SUB Khuôn dạng: SUB ích,Ngu n - Tác d ng: ( ích)  (ích)-(Ngu n) - ích: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) - Ngu n: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) 3. Mt giá tr c th
  133. nh h ưng ca SUB – ZF = 1 nu K t qu bng 0 – SF = 1 nu MSB ca K t qu = 1 – PF = 1 nu byte th p c a k t qu có Parity ch n • CF ưc l p n u tràn không d u (có mưn vào MSB) • OF ưc l p n u tràn có du: - Cóưn t MSB, Không cóưn t MSB - Cóưn t MSB, Không cóưn vào MSB • AF ưc l p n u cóưn t nibble cao vào nibble th p (t bit 4 vào bit 3)
  134. Arithmetic Instructions - CMP Khuôn dạng: CMP ích,Ngu n - Tác d ng: (ích)-(Ngu n) - ích: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) - Ngu n: có th là: 1. Mt thanh ghi 8 ho c 16 bit ca VXL 2. Mt v trí nh (1 ho c 2 ô nh liên ti p nhau) 3. Mt giá tr c th
  135. Arithmetic Instructions – INC, DEC, NEG • INC T/h • Trong ó: T/h có th là các thanh ghi ho c v trí nh • Tác d ng: (T/h)  (T/h)+1 • DEC T/h • Trong ó: T/h có th là các thanh ghi ho c v trí nh • Tác d ng: (T/h)  (T/h)-1 •Lưu ý: Các l nh INC và DEC không nh h ưng n c CF •Lnh NEG T/h: o d u c a T/h (Ly bù 2) • Lnh NEG s lp c OF nu giá tr ca T/h là giá tr âm nh t trong d i giá tr ca các s có du t ơ ng ng
  136. Nhóm lnh Logic •Cn chú ý n nh h ưng c a l nh i v i các c tr ng thái • Các lnh logic th/th ưng: NOT, AND, OR, XOR NOT A: ~A AND A,B: A &= B OR A,B : A |= B XOR A,B: A ^= B • NOT không nh hu ng n các c tr ng thái. • Các l nh khác: – CF = 0 – OF = 0 – ZF = 1 nu K t qu bng 0 – SF = 1 nu MSB ca K t qu = 1 – PF = 1 nu byte th p c a k t qu có Parity ch n – AF không xác nh
  137. Mt s ví d AL 1100 1010 AL 0011 0101 NOT AL BL 0110 1101 AL 0011 0101 OR AL, BL AL 0111 1101 AL 0011 0101 BL 0110 1101 AL 0011 0101 AND AL, BL BL 0000 1111 AL 0010 0101 OR AL, BL AL 0011 1111 AL 0011 0101 BL 0000 1111 AL 0011 0101 AND AL, BL BL 0110 1101 AL 0000 0101 XOR AL, BL AL 0101 1000
  138. Mt s ng d ng • Bài toán Xoá bit : Xoá mt bit nào ó ca mt toán h ng mà không làm nh h ưng n các bit còn l i c a toán h ng ó • Bài toán Ki m tra bit : Xác nh m t bit nào ó ca m t toán h ng là bng 0 hay 1 (thông qua giá tr ca mt c tr ng thái) • Bài toán L p bit : Lp m t bit nào ó ca mt toán h ng mà không làm nh h ưng n các bit còn l i c a toán h ng ó
  139. Nhóm l nh logic • Các l nh logic khác: Lnh TEST, Các l nh d ch (Shift) và Các l nh quay (Rotate) •Lnh TEST ch khác l nh AND là không gi li kt qu ca phép toán • Các l nh d ch và Các l nh quay u có hai khuôn dng: Khuôn dng 1: Mnemonic Toán h ng,1 Khuôn d ng 2: ư án h ng,CL • Tác d ng c a m t câu l nh theo khuôn dang 2 gi ng nh ư tác d ng liên ti p c a N câu l nh t ư ng ng theo khuôn d ng 1, vi N là giá tr ca thanh ghi CL
  140. Các l nh D ch trái: SHL, SAL CF Register 0
  141. ShiftShift rightright SHRSHR Register CF 0
  142. Shift right SAR Register CF
  143. Rotate through Carry L/R (Quay trái/ph i thông qua carry) RCL RCR
  144. RotateRotate left/rightleft/right ((QuayQuay trtr ááii//phph ii khôngkhông quaqua carrycarry )) ROL ROR
  145. Nhóm l nh r nhánh • Làm thay i tr t t th c hi n l nh bình th ưng ca vi x lý • Lnh nh y không iu ki n: JMP • Các l nh nh y cóu ki n: Jxxx • Lnh l p: LOOP và các bi n th ca nó • Các l nh cón Ch ơ ng trình con: - CALL (gi ch ơ ng trình con) - RET (tr v ch ơ ng trình gi) • Các l nh cón Ch ơ ng trình con ph c v ng t - INT (gi ch ơ ng trình con ph c v ng t - Gi ng t) - IRET (quay v ch ơ ng trình gi ng t)
  146. Lnh nh y không iu ki n • JMP nhãn – Nh y g n: E9 xx xx (3 byte) – Nh y ng n: EB xx (2 byte) – Nh y xa: EA xx xx xx xx (5 byte) • Nhãn: tên do ng I lp trình t t ra theo qui tc t tên ca Assembler và có th t vào tr c m t câu l nh b t k trong ch ơ ng trình cùng v i d u : nhãn: Câu l nh c n th c hi n • Nhãn s c d ch thành a ch • Kho ng cách nh y: Kho ng cách i s (có du) t lnh nh y n l nh c n th c hi n
  147. C ch th c hi n l nh nh y • Các lnh nh y ng n và gn ch làm thay i giá tr ca thanh ghi IP –Lnh nh y ng n cng kho ng cách nh y 8-bit có du vào giá tr hi n th i c a IP –Lnh nh y gn cng kho ng cách nh y 16-bit có du vào giá tr hi n th i c a IP •Lnh nh y xa làm thay i c CS và IP – Gán cho CS và IP các giá tr mi
  148. Mã máy c a l nh nh y 1106:0100 EB2A JMP 012C • 012C-0102=002A 1106:0102 EBFC JMP 0100 • 0100-0104=FFFC 1106:0104 E97F00 JMP 0186 • 0186-0106=0080 (too far for short!) • 0186-0107=007F 1106:0107 E9F5FE JMP FFFF • FFFF-010A=FEF5
  149. Các l nh nh y cóu ki n • Jxxx nhãn – Có gn 40 menmonic khác nhau • Các l nh nh y iu ki n n: ph thu c vào giá tr ca 1 c. • JNZ/JNE - Nh y n u c ZF = 0, ngh a là kt qu ca phép toán tr ưc ó khác không • JC - Nh y n u CF = 1, ngh a là câu l nh tr ưc ó lp c carry • JZ/JE • JNC
  150. Các l nh nh y cóu ki n •Tt c các l nh nh y cóu ki n ph i là nh y ng n – kho ng cách nh y: -128 to +127 bytes •T hp v i l nh nh y không iu ki n có th vưt qua gi i h n này. • Các l nh nh y iu ki n kép: ph thu c vào giá tr ca nhi u c • JB/JNAE • JNL/JGE
  151. ng d ng c a các l nh nh y cóu ki n •Kt h p v i JMP xây d ng các c u trúc l p trình c b n: -Cu trúc iu ki n -Cu trúc l p • Các l nh nh y th ưng theo sau các l nh làm thay i giá tr ca các c tr ng thái: – CMP – TEST
  152. Cu trúc iu ki n mov ax,n cmp ax,7 jz nhan1 lnh 1 jmp nhan2 nhan1:lnh 2 nhan2:lnh 3
  153. Cu trúc l p mov ax,n nhan1: cmp ax,0 jz nhan2 lnhi sub ax,2 jmp nhan1 nhan2: lnhk
  154. Cu trúc iu ki n - AND char n; int w,x; ;if(n>='A'&&w==x) mov ah,n if (n>='A' && w==x) cmp ah,'A' whatever(); jl nogo mov ax,w cmp ax,x jne no_go ;then-part call whatever nogo:
  155. Cu trúc iu ki n - OR char n,k; unsigned int w; ;if(n k || w<=10) cmp ah,k whatever(); jne then_ cmp w,10 ja end_if then_: call whatever end_if:
  156. Lnh LOOP • LOOP nhan – Gi m CX i 1 mov cx,9 –Nu (CX) <> 0 thì nhan: lnh 1 JMP nhan. Nu không thì ti p t c th c hi n lnh 2 lnh theo tr t t bình lnh 3 th ưng loop nhan
  157. LOOPZ/E và LOOPNZ/E • Các bi n th ca •Lưu ý: LOOP gi m LOOP CX nh ưng không nh • Giá tr ca c ZF có hu ng n các c th làm k t thúc s m • LOOPZ == LOOPE vòng l p • Loop while ZF/equal • LOOPNZ==LOOPNE && CX!=0 • Các lnh trong vòng • Loop while (NZ/ not lp có th tác ng n equal) && CX!=0 c ZF (CMP ?)
  158. Ch ư ng trình con • Ch ư ng trình con trong ngôn ng Assembly ưc g i là Th tc (Procedure) •Mt th tc có th ưc th c hi n nhi u l n • Cón stack: - lưu gi a ch quay v - lưu gi giá tr ca các thanh ghi c a vi x lý
  159. Stack ? •Cu trúc d li u LIFO RWM - PUSH : ghi d li u vào stack, - POP: c d li u t stack • (SS:SP) tr n nh c a stack • (SS:BP) truy c p stack ng u nhiên (không theo LIFO)
  160. Stack Initialization • The .stack directive hides an array allocation statement that looks like this – The_Stack DB Stack_Size dup (?) • On program load – SS is set to a segment address containing this array (usually The_Stack starts at offset 0) – SP is set to the offset of The_Stack+Stack_Size which is one byte past the end of the stack array • This is the condition for an empty stack
  161. Initial Stack Configuration .stack 12 ;Reserve space for the stack • Loader determines actual segment address for the start of the stack – This is an empty stack Stack Size: 000C SS:0340SS:0340 SP:000CSP:000C
  162. How Does The Stack Work? • The stack grows backwards through memory towards the start of the stack segment Stack Size: 000C SS:0340SS:0340 SP:0008SP:0008 • Push decrements stack pointer Pop increments stack pointer
  163. PUSH • PUSH ngu n – Push ngu n vào stack • PUSHF – Push thanh ghi c vào stack •Lnh PUSH tr ưc h t s gi m SP i 2 ri lưu giá tr ca ngu n vào v tr nh ưc tr bi (SS:SP)
  164. Ví d PUSH Stack Size: 000C 3C 09 A4 40 2C FF A2 43 07 06 4C 2A 09 46 SS:0340SS:0340 SP:0008SP:0008 PUSH AX AX:AX: 0123 0123 3C 09 A4 40 2C FF A2 23 01 06 4C 2A 09 46 SS:0340SS:0340 SP:0006SP:0006
  165. POP • POP ích – Pop d li u t nh stack vào ich • POPF – Pop d li u t nh stack vào thanh ghi c •Lnh POP tr ưc ht copy d li u ưc tr bi (SS:SP) n ích r i t ng SP lên 2
  166. Ví d POP 3C 09 A4 40 2C FF A2 23 01 06 4C 2A 09 46 SS:0340SS:0340 SP:0006SP:0006 POP ES 3C 09 A4 40 2C FF A2 23 01 06 4C 2A 09 46 SS:0340SS:0340 SP:0008SP:0008 ES:ES: 0123 0123
  167. Tràn stack! Stack Size: 000C SS:0340SS:0340 SP:FFFESP:FFFE • Stack Overflow • Stack Underflow Stack Size: 000C SS:0340SS:0340 SP:000DSP:000D
  168. Th tc Tên_Th ủ_tục PROC ki ểu ;thân c a th tc RET ;quay v ình g i Tên_Th ủ_tục ENDP • ki u là NEAR ho c FAR – ng m nh là NEAR •Mt th tc có th có nhi u l nh RET
  169. Lnh CALL và RET •Gi m t th tc (NEAR) CALL Tên_Th _tc – push IP vào stack – copy a ch ca Tên_Th _tc vào IP • Tr v t mt th tc (NEAR) RET – pop giá tr nh stack vào IP
  170. Th tc Far •Gi th tc (FAR) CALL Tên_th _tc – ln lưt push CS và IP vào stack – copy a ch ca Tên_th _tc vào CS và IP • Tr v t th tc (FAR) RET – pop giá tr tnh stack ln l ưt vào IP và CS
  171. Gi ng t •Gi ng t là mt l i g i th tc c biêt – FAR – Thanh ghi c ph i ưc b o toàn • INT S ng t – Thanh ghi c ưc push, TF và IF b xoá – CS và rI IP ưc push – a ch ca mt ch ư ng trình con ph c v ng t (Vector ng t) tư ng ng vi S ng t ưc copy vào CS và IP
  172. Tr v t ng t • IRET • Tác d ng c a lênh: – Giá tr nh c a stack ưc pop vào IP – Giá tr nh ca stack ưc pop vào CS – Giá tr nh c a stack ưc pop vào thanh ghi c • Ch ư ng trình b ng t ti p t c th c hi n d ưng nh ư không có chuy n gì xy ra
  173. Xu t ký t ra màn hình PC • Ng t 21h – Ng t này h tr rt nhi u d ch v trên PC – Nh n d ng d ch v bng s dch v (s hàm). S dch v cn ưc n p voà thanh ghi AH – Tu theo t ng d ch v , có th cn thêm m t s i s khác ưc n p vào các thanh ghi xác nh • AH = 2, DL = Mã ASCII ca ký t cn xu t – Ký t ưc hi n th ti v trí hi n th I c a con tr
  174. Xu t xâu ký t ra màn hình PC •Dch v 09h ca ng t 21h – DX = a ch Offset ca xâu (trong on d li u) – DS = a ch segment ca xâu – Xâu ký t ph i k t thúc b ng ký t '$' • np a ch offset ca xâu vào DX, có th : – LEA DX, Tênxâu – MOV DX, OFFSET Tên xâu
  175. Nh p 1 ký t t bàn phím PC •Dch v 01h ca ng t 21h • Khi NSD gõ m t ký t t bàn phím: – Ký t s hi n trên màn hình – AL s ch a mã ASCII ca ký t ó • AL=0 nu ký t ưc nh p là ký t u khi n
  176. Nhóm lnh thao tác string • Chúng ta hi u: string là mt m ng byte ho c t nm trong b nh • Các thao tác string: – Sao chép – Tìm ki m –Lưu tr – So sánh
  177. Các c im • Ngu n: (DS:SI), ích: (ES:DI) – DS, ES ch a a ch Segment ca string – SI, DI ch a a ch Offset ca string •C hưng DF (0 = Up, 1 = Down) – DF = 0 - Tng a ch (trái qua ph i) – DF = 1 - Gi m a ch (ph I qua trái)
  178. Chuy n (Sao chép) • MOVSB, MOVSW – Chuy n 1 byte ho c 1 word t v trí nh này sang v trí nh khác – Tác d ng c a l nh: • Sao chép byte/word t (DS:SI) n (ES:DI) •Tng/Gi m SI và DI 1 ho c 2 giá tr –Nu CX ch a m t giá tr khác không: • REP MOVSB ho c REP MOVSW s t ng sao chép (CX) ln và CX s v không
  179. Ví d:Sao chép m ng ; Sao chép 10 byte từ mảng a sang mảng b, gi ả sử (DS) = (ES) mov cx, 10 mov di, offset b mov si, offset a cld ;xoá c DF rep movsb
  180. Ví d: Tnh ti n các ô nh mov cx, 7 mov di, offset a+9 mov si, offset a+6 std ;lp c DF rep movsb SI DI a
  181. Ví d pattern db "!@#*" db 96 dup (?) mov cx,96 mov si, offset pattern mov di, offset pattern+4 cld rep movsb DI SI ! @ # * a
  182. Lưu tr string STOSB, STOSW • Th ưng ưc s dng • Copy AL ho c AX có ti n t REP và s vào m t m ng byte ln l p trong CX ho c word – ích (ES:DI) •Tng ho c Gi m DI – ph thu c DF
  183. Ví d: arr dw 200 dup (?) mov ax,50A0h mov di,offset arr mov cx,200 cld DI AX 50 A0 rep stosw A0 50 A0 50 arr
  184. Np String • LODSB, LODSW – Byte ho c word ti (DS:SI) ưc copy vào AL ho c AX – SI tng ho c gi m 1 ho c 2 giá tr ph thu c DF • Th ưng ưc dùng v i STOSx trong m t vòng l p x lý t ng ph n t trong m t mng
  185. Ví d: mov di, offset b mov si, offset a mov cx,30 cld lp: lodsb and al,0DFh stosb loop lp
  186. Quét String SCASB, SCASW • So sánh AL ho c AX vI byte ho c word tI (ES:DI) và tng t ng ho c gi m DI •Lnh này nh h ưng n các c tr ng thái – Tu theo k t qu so sánh – Dùng trong m t vòng l p REPs • REPZ, REPE, REPNZ, REPNE
  187. Ví d arr db 'abcdefghijklmnopqrstuvwxyz' mov di, offset arr mov cx,26 cld mov al,target repne scasb jne nomatch
  188. So sánh String CMPSB, CMPSW • So sánh byte ho c word ti (DS:SI) vi byte ho c word tI (ES:DI), tác ng n các c vàc gi m SI và DI • Th ưng dùng so sánh hai m ng v i nhau
  189. Ví d mov si, offset str1 mov di, offset str2 cld mov cx, 12 repe cmpsb jl str1smaller jg str2smaller ;the strings are equal - so far ;if sizes different, shorter string is less
  190. Nhóm l nh h n h p - Các l nh L p/Xoá tr c ti p các c : STC, CLC STD, CLD STI, CLI -Lnh NOP (No Operation): Không làm gì!!! -Lnh NOP th ưng ưc dùng trong các vòng l p t o tr (delay)bng ph n m m - Các l nh Nh p/Xu t d li u i v i các c ng I/O IN OUT
  191. Lnh IN -Nu a ch ca c ng Nh c bng FFh: IN Acc, a ch cng - Trong ó: Acc có th là AL ho c AX - Nh p d li u t cng vào Acc -Nu a ch ca c ng L n h n FFh: MOV DX, a ch cng IN Acc, DX - ó: Acc có th là AL ho c AX - Nh p d li u t cng vào Acc
  192. Lnh OUT -Nu a ch ca c ng Nh c bng FFh: OUT a ch cng, Acc - Trong ó: Acc có th là AL ho c AX - Xu t d li u t Acc ra c ng -Nu a ch ca c ng L n h n FFh: MOV DX, a ch cng OUT DX, Acc - ó: Acc có th là AL ho c AX - Xu t d li u t Acc ra c ng
  193. Tóm t t ch ư ng - Tính t ư ng thích v Cu trúc thanh ghi c a các vi x lý h x86 - Tính t ư ng thích v Tp l nh c a các vi x lý h x86
  194. KK thuthu tt ViVi xx lýlý oaoa
  195. ưư oo oo aa oo aa uu aa oo
  196. MMụụcc tiêutiêu vv àà bibi ệệnn phph áápp thithi ếếtt kk ếế  uu aooaoo yaya uu uyuy oo uyuy  aa oo oo oo aa
  197. 4.14.1 PhânPhân lolo ạạii bb ộộ nhnh ớớ bbáánn dd ẫẫnn B nh bán d n (Semiconductor memory ) SAM RAM (Sequential Access Memory) (Random Access Memory) ROM (Read Only Mem ory ) RWM (Read Write memory) PROM EPROM SRAM DRAM EEPROM Flash ROM
  198. 4.24.2 CCáácc chipchip EPROMEPROM A0 D0 A1 D1 A2 D2 A3 D3 u A4 D4 a A5 D5 A6 D6 A7 Dm-1 A8 A p-1 u OE PGM CE Vpp u
  199. DungDung ngng cc aa 11 chipchip nhnh  ưư eưeư ưuưu ưư uu  uu ưư aa ưư ưư uu uu ưư aa ưuưu ưư yeye uu  uu aa  oo aa aa
  200. HoHo tt ngng ghighi dd lili uu vv ààoo EPROMEPROM  uu oo ưư oo  ưư uyuy  ưư ưư oo  uu uu ưư oo uu ưaưa oo aa uu ưư uu ưaưa oo
  201. HoHo tt ngng cc dd lili uu tt mmtt chipchip EPROMEPROM uu oo aa oo   u a a o a   u u u u
  202. HH EPROMEPROM thôngthông dd ngng 27x27x uu aa uu ưư
  203. EPROM 2716 2732 1 24 A7 Vcc 2 23 A6 A8 3 22  A5 A9 4 21 aa A4 Vpp A11 5 20 __ __ A3 OE OE / Vpp 6 19 A2 A10 __ 7 18 A1 CE 8 17 A0 D7 9 16 D0 D6 10 15 D1 D5 11 14 D2 D4 12 13 GND D3
  204. EPROMEPROM 27642764 a u u
  205. EPROMEPROM 27642764
  206. LLpp trtr ììnhnh chocho 27642764  ưư oo • o o  oo aa  • • u  uưauưa oo uu  aa ưaưa oo aa
  207. 4.34.3 CCáácc chipchip SRAMSRAM A0 D0 A1 D1 A2 D2 A3 D3 A4 D4 u a A5 D5 A6 D6 A7 Dm-1 A8 A p-1 u OE CS u WE
  208. cc dd lili uu tt mmtt chipchip SRAMSRAM uu oo aa oo   uu aa oo  uu uu uu uu
  209. GhiGhi dd lili uu vv ààoo mm tt chipchip SRAMSRAM uu oo oo aa oo   uu aa oo  uu oo uu  uu uu uu ưư oo
  210. 4.44.4 BusBus hh thth ngng cc aa 80888088  uu aa ưư aa ưư uu  uu uu ưư uu ưư uu  uu uu ưư uu oooo uyuy ưư ưư ưư uu aa uu uu  uu aa uaua
  211. 80x8680x86 MicroprocessorsMicroprocessors Product 8008 808 808 808 808 8028 80386 80486 Pent. Pent. 0 5 6 8 6 Pro eaoue eooy oae ueo ueo ao ueo uo yaeoy uaeoy oe oe oe oe oe eaaau eaaau eu aaye
  212. 8088/80868088/8086 MicroprocessorMicroprocessor   aauaau uu uu oo uu uu oo aa uu uu oo aa eaaeeaae
  213. 8088/80868088/8086 MicroprocessorMicroprocessor  uu aa aa  u o o  ua o
  214. SSơơ chânchân cc aa 80888088
  215. SSơơ chânchân 8088/80868088/8086 (Min(Min Mode)Mode)
  216. Minimum/MaximumMinimum/Maximum ModeMode  ưư  uoeuoe u u u u u ư  auoeauoe u u ư oa o o
  217. SSơơ chânchân cc aa 80888088 MN / MX AD0 AD1 READY AD2 CLK AD3 RESET AD4 AD5 TEST AD6 AD7 HLDA A8 HOLD A9 NMI A10 A11 A12 A13 A14 8088 A15 A16 / S3 A17 / S4 A18 / S5 A19 / S6 SSO DEN DT / R IO / M RD WR ALE INTR INTA
  218. Tín hi u các chân c a 8088 MN / MX AD0 AD1 READY AD2 CLK AD3 RESET AD4 Các chân a ch /D li u AD5 TEST AD6 AD7 HLDA A8 HOLD A9 NMI A10 A11 A12 Các chân a ch A13 A14 8088 A15 A16 / S3 A17 / S4 Các chân a ch /Tr ng thái A18 / S5 A19 / S6 SSO DEN DT / R IO / M RD WR ALE Cho phép ch t a ch INTR INTA
  219. CCáácc chânchân aa chch /D/D lili uu   uu ueue uu yy yy uu aa uu uu uu oo uu uu ee aaeaae  
  220. CCáácc chânchân aa chch vvàà CCáácc chânchân aa chch //TrTr ngng thth ááii  aa  uu yuyu uu aa  aa  
  221. Processor Timing Diagram of 8088 (Minimum Mode) for Memory or I/O Read (with 74245) T1 T2 T3 T4 CLOCK __ DT/R ALE D7 - D0 D7 - D0 (from memory) from memory to 74LS245 D7 - D0 from garbage AD7 - AD0 A7 - A0 74LS245 A15 - A8 A15 - A8 A19/S6 - A16/S3 A19 - A16 S6 - S3 A19 - A0 A19 - A0 from 74LS373 from 74LS373 to memory __ IO/M if I/O ACCESS this is HIGH, if MEMORY ACCESS this is LOW ___ RD ___ DEN
  222. MôMô tt chânchân   uaeuae  yeye yeye aoao aa
  223. MôMô tt chânchân   oaaeoaae eueu  uu oo eưeư
  224. MôMô tt chânchân   eueueeueue  uu oo ee ưư  uu 
  225. MôMô tt chânchân   oo  uu oo 
  226. MôMô tt chânchân   o uy  au ee o
  227. MôMô tt chânchân   aaeaae
  228. MôMô tt chânchân   
  229. MôMô tt chânchân   uoeuoe  auoeauoe
  230. MôMô tt chânchân –– MaxMax   ueueauueueau  aa ooeao yeo ooeoueue eyeueue ueueye oueue
  231. MôMô tt chânchân –– MaxMax   aua eu aoee eao eo oe a oeae eaeoy e eoy oe ae
  232. MôMô tt chânchân –– MaxMax   ooeooooeoo yeuyeu  aeoyuaeoyu eoaeoa aeyuoaeyuo  eaueau aoeeaoee oaoa oooeueoooeue
  233. MôMô tt chânchân –– MaxMax   eueaeuea  eoaeoa  aooooaaooooa uu  oayoay eaeyeaey aeae  oeeoee oeoe
  234. MôMô tt chânchân –– MinMin   euaoeeeuaoee 
  235. MôMô tt chânchân –– MinMin   eaea aeae  uu aa uu aa uu aa
  236. MôMô tt chânchân   aa uu  uu yy aa uu
  237. 74LS373 D0 Q0 D1 Q1 D2 Q2 D3 Q3 D4 Q4 D5 74LS373 Q5 D6 Q6 D7 Q7 OE LE
  238. 74LS373
  239. DDùùngng 74LS37374LS373 ttááchch vv àà chch tt aa chch
  240. MôMô tt chânchân –– MinMin   aaaeaaae  uu aa
  241. MôMô tt chânchân –– MinMin   uu ưư aa uu uu  uu uu aa  uu uu oo
  242. MôMô tt chânchân –– MinMin   uyuy ayay uyuy uyuy
  243. MôMô tt chânchân –– MinMin   uu uu uưuư oo oo   uu uaua
  244. MôMô tt chânchân –– MinMin   ooeeooee  yuyu uu oo u ư u
  245. MôMô tt chânchân –– MinMin   uu yuyu uu uu  uu uu
  246. MôMô tt chânchân –– MinMin    auau uu
  247. CCáácc tt íínn hihi uu iiuu khikhi nn  oo oo aa uu uu uu uu uu  a a ee ae
  248. TToo rara cc áácc ttíínn hiêhiê uu khikhi nn (Min(Min Mode)Mode)
  249. TToo rara cc áácc tt íínn hiêhiê uu khikhi nn (Min(Min Mode)Mode)
  250. 80888088 BusBus –– MinMin ModeMode
  251. 74LS24574LS245 A0 B0 A1 B1 A2 B2 A3 B3 A4 B4 A5 74LS245 B5 A6 B6 A7 B7 E DIR
  252. Bus h th ng c a h 8088 Mode Minimum A7 - A0 B7 - B0 D7 - D0 DEN E Bus d li u DT / R DIR 74LS245 Bus a ch AD7 - AD0 D7 - D0 Q7 - Q0 A7 - A0 A15 - A8 GND OE A19 - A16 LE 74LS373 A15 - A8 D7 - D0 Q7 - Q0 GND OE MEMORY 8088 LE 74LS373 A19/S6 - A16/ D7 - D4 Q7 - Q4 S3 D3 - D0 Q3 - Q0 GND OE ALE LE 74LS373 RD RD MEMR IO / M WR WR MEMW
  253. Minimum Mode 8088 D7 - D0 D7 - D0 A19 - A0 A19 - A0 MEMORY 8088 Minimum B nh c ch n khi nào? Mode MEMR RD MEMW WR
  254. Minimum Mode 8088 220 ô nh ớ (1MB) D7 - D0 D7 - D0 A19 - A0 A19 - A0 MEMORY 8088 Minimum Mode MEMR RD MEMW WR CS
  255. KhôngKhông giangian aa chch bb nhnh 1M1M A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 98769876 54325432 1010 0000 (HEX)(HEX) 0000000000 00000000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111 Ví d: Mt a ch bt k 34FD0h 0011 0100 11111 1101 0000
  256. B nh y 1MB AX 3F1C FFFFF 36 BX 0023 FFFFE 25 CX 0000 FFFFD 19 DX FCA1 : : A19 A19 : : : : CS XXXX 20023 13 A0 A0 SS XXXX 20022 7D DS 2000 20021 12 ES XXXX 20020 29 : : D7 D7 BP XXXX : : : : SP XXXX 10008 8A D0 D0 10007 F4 SI XXXX 10006 07 DI XXXX 10005 88 10004 42 MEMR RD IP XXXX 10003 39 10002 27 10001 98 10000 45 : : MEMW WR : : 00001 95 CS 00000 23
  257. NNuu chch ccnn bb nhnh ccóó dungdung ngng nhnh ơơ 1MB1MB thth ìì gigi ii quyquy tt nhnh thth nnààoo??  uu oo  uu uu uu aa oo oo auau 
  258. 512K512K uu tiêntiên cc aa khôngkhông giangian aa chch bb nhnh ((CCáácc aa chch ccóó bitbit caocao nhnh tt A19A19 == 0)0) A18A18 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 99876876 54325432 1010 0000 (HEX)(HEX) 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 00111111 11111111 11111111 11111111 11111111
  259. 512K512K titi pp theotheo cc aa khôngkhông giangian aa chch bb nhnh ((CCáácc aa chch ccóó bitbit caocao nhnh tt A19A19 == 1)1) A18A18 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 99876876 54325432 1010 0000 (HEX)(HEX) 8000080000 11000000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111
  260. B nh 512KB AX 3F1C BX 0023 Làm gì vi A19? CX 0000 A19 DX FCA1 A18 A18 7FFFF 36 : : 7FFFE 25 CS XXXX A0 A0 7FFFD 19 SS XXXX : : DS 2000 D7 D7 : : ES XXXX : : 20023 13 D0 D0 20022 7D BP XXXX 20021 12 SP XXXX MEMR RD 20020 29 : : SI XXXX MEMW WR : : DI XXXX 00001 95 CS 00000 23 IP XXXX
  261. iu gì xy ra nu 8088 c ô nh A0023h? AX 3F1C BX 0023 CX 0000 A19 DX FCA1 A18 A18 7FFFF 36 : : 7FFFE 25 CS XXXX A0 A0 7FFFD 19 SS XXXX : : DS A000 D7 D7 : : ES XXXX : : 20023 13 D0 D0 20022 7D BP XXXX 20021 12 SP XXXX MEMR RD 20020 29 : : SI XXXX MEMW WR : : DI XXXX 00001 95 CS 00000 23 IP XXXX MOV AH, [BX]
  262. iu g ì xy ra n u 8088 c ô nh A0023h? A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 99876876 54325432 1010 0000 (HEX)(HEX) A0023A0023 11010010 00000000 00000000 00100010 00110011 A19 không được nối đến bộ nh ớ nên nếu 8088 phát logic “1” trên A19 thì bộ nh ớ cũng không nh ận bi ết được.
  263. iu g ì xy ra n u 8088 c ô nh 20023h? A18A18 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 99876876 54325432 1010 0000 (HEX)(HEX) 2002320023 00010010 00000000 00000000 00100010 00110011 Với b ộ nh ớ tình hình không có gì khác!
  264. Nu B nh gm 2 kh i 512KB nh th này? AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX 7FFFF 12 DI XXXX A18 7FFFE 98 : 7FFFD 2C IP XXXX A0 : : 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  265. CCóó vvnn !!!!!!  uu uu aa uu uu  ưư uyuy uu uu uu oo oo ưư ưư
  266. B nh gm hai kh i nh 512KB AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX 7FFFF 12 DI XXXX A18 7FFFE 98 : 7FFFD 2C IP XXXX A0 : : 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  267. KhôngKhông giangian aa chch bb nhnh 1M1M A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA đđếếnn 11111111 11111111 11981198 76547654 32103210 A0 A0 98769876 54325432 1010 0000 (HEX)(HEX) 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 01110111 11111111 11111111 11111111 11111111 8000080000 10001000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111
  268. Interfacing two 512KB Memory to the 8088 Microprocessor AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX When the µP outputs CS 00000 23 SP XXXX an address between SI XXXX 8000000000 to FFFFF7FFFF , 7FFFF 12 DI XXXX A18 7FFFE 98 this memory is : 7FFFD 2C IP XXXX A0 : : selected 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  269. Interfacing two 512KB Memory to the 8088 Microprocessor AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX 7FFFF 12 DI XXXX A18 7FFFE 98 : 7FFFD 2C IP XXXX A0 : : 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  270. Interfacing two 512KB Memory to the 8088 Microprocessor AX 3F1C A19 A19 7FFFF 36 BX 0023 A18 A18 A18 7FFFE 25 CX 0000 : : : 7FFFD 19 DX FCA1 A0 A0 A0 : : 20023 13 D7 D7 D7 CS XXXX 20022 7D : : : SS XXXX 20021 12 D0 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD RD : : MEMW WR WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX 7FFFF 12 DI XXXX A18 7FFFE 98 : 7FFFD 2C IP XXXX A0 : : 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  271. What if we remove the lower memory? AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX 7FFFF 12 DI XXXX A18 7FFFE 98 : 7FFFD 2C IP XXXX A0 : : 20023 33 D7 20022 45 : 20021 92 D0 20020 A3 RD : : WR 00001 D4 CS 00000 97
  272. What if we remove the lower memory? AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX When the µP outputs CS 00000 23 SP XXXX an address between SI XXXX 8000000000 to FFFFF7FFFF , no DI XXXX thismemory memory chip is is IP XXXX selected !
  273. FullFull andand PartialPartial DecodingDecoding  ueoueo eaoeeaoe ueuueu aeeaee aeoeeeeoyeeoaeoeeeeoyeeo eoeeoeoeeo  aaeoaaeo eoeoeeoeoe ueuueu aeeaee aeoeeeeoyeeoaeoeeeeoyeeo eoeeoeoeeo yeoeoeuoyeoeoeuo oo oeaeeoeaee
  274. Full Decoding AX 3F1C A19 7FFFF 36 BX 0023 A18 A18 7FFFE 25 CX 0000 : : 7FFFD 19 DX FCA1 A0 A0 : : 20023 13 D7 D7 CS XXXX 20022 7D : : SS XXXX 20021 12 D0 D0 DS 2000 20020 29 ES XXXX MEMR RD : : MEMW WR 00001 95 BP XXXX CS 00000 23 SP XXXX SI XXXX DI XXXX IP XXXX
  275. FullFull DecodingDecoding A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000 8000080000 10001000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111 A19 should be a logic “1” for the memory chip to be enabled
  276. FullFull DecodingDecoding A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 01110111 11111111 11111111 11111111 11111111 Therefore if the microprocessor outputs an address between 00000 to 7FFFF, whose A19 is a logic “0”, the memory chip will not be selected
  277. Partial Decoding AX 3F1C BX 0023 CX 0000 A19 DX FCA1 A18 A18 7FFFF 36 : : 7FFFE 25 CS XXXX A0 A0 7FFFD 19 SS XXXX : : DS 2000 D7 D7 : : ES XXXX : : 20023 13 D0 D0 20022 7D BP XXXX 20021 12 SP XXXX MEMR RD 20020 29 : : SI XXXX MEMW WR : : DI XXXX 00001 95 CS 00000 23 IP XXXX
  278. PartialPartial DecodingDecoding A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 01110111 11111111 11111111 11111111 11111111 8000080000 10001000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111 The value of A19 is INSIGNIFICANT to the memory chip, therefore A19 has no bearing whether the memory chip will be enabled or not
  279. PartialPartial DecodingDecoding A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 01110111 11111111 11111111 11111111 11111111 8000080000 10001000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111 ACTUAL ADDRESS
  280. PartialPartial DecodingDecoding A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000 0000000000 00000000 00000000 00000000 00000000 00000000 7FFFF7FFFF 01110111 11111111 11111111 11111111 11111111 8000080000 10001000 00000000 00000000 00000000 00000000 FFFFFFFFFF 11111111 11111111 11111111 11111111 11111111 ACTUAL ADDRESS
  281. Interfacing two 512K Memory Chips to the 8088 Microprocessor A19 A18 A18 : : A0 A0 D7 D7 512KB : : #2 D0 D0 MEMR RD MEMW WR 8088 CS Minimum Mode A18 : A0 D7 512KB : #1 D0 RD WR CS
  282. Interfacing one 512K Memory Chips to the 8088 Microprocessor A19 A18 A18 : : A0 A0 D7 D7 : : 512KB D0 D0 MEMR RD MEMW WR 8088 CS Minimum Mode
  283. Interfacing one 512K Memory Chips to the 8088 Microprocessor (version 2) A19 A18 A18 : : A0 A0 D7 D7 : : 512KB D0 D0 MEMR RD MEMW WR 8088 CS Minimum Mode
  284. Interfacing one 512K Memory Chips to the 8088 Microprocessor (version 3) A19 A18 A18 : : A0 A0 D7 D7 : : 512KB D0 D0 MEMR RD MEMW WR 8088 CS Minimum Mode
  285. Interfacing four 256K A17 : Memory Chips to A0 Memory Chips to D7 256KB : the 8088 Microprocessor D0 #4 RD WR A19 CS A18 A17 A17 : : A0 A0 D7 D7 256KB : : D0 D0 #3 MEMR RD MEMW WR 8088 CS Minimum Mode A17 : A0 D7 256KB : D0 #2 RD WR CS A17 : A0 D7 256KB : D0 #1 RD WR CS
  286. Interfacing four 256K A17 : A0 Memory Chips to D7 256KB : the 8088 Microprocessor D0 #4 RD WR A19 CS A18 A17 A17 : : A0 A0 D7 D7 256KB : : D0 D0 #3 MEMR RD MEMW WR 8088 CS Minimum Mode A17 : A0 D7 256KB : D0 #2 RD WR CS A17 : A0 D7 256KB : D0 #1 RD WR CS
  287. MemoryMemory chip#__chip#__ isis mappedmapped to:to: A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000
  288. Interfacing four 256K A17 : A0 Memory Chips to D7 256KB : the 8088 Microprocessor D0 #4 RD WR A19 CS A18 A17 A17 : : A0 A0 D7 D7 256KB : : D0 D0 #3 MEMR RD MEMW WR 8088 CS Minimum Mode A17 : A0 D7 256KB : D0 #2 RD WR CS A17 : A0 D7 256KB : D0 #1 RD WR CS
  289. Interfacing four 256K A17 : A0 Memory Chips to D7 Memory Chips to 256KB : the 8088 Microprocessor D0 #4 RD WR A19 CS A18 A17 A17 : : A0 A0 D7 D7 256KB : : D0 D0 #3 MEMR RD MEMW WR 8088 CS Minimum Mode A17 : A0 D7 256KB : D0 #2 RD WR CS A17 : A0 D7 256KB : D0 #1 RD WR CS
  290. Interfacing four 256K A17 : A0 Memory Chips to D7 Memory Chips to 256KB : the 8088 Microprocessor D0 #4 RD WR A19 I1 O3 CS A18 I0 A17 A17 : : A0 A0 D7 D7 256KB : : D0 D0 #3 MEMR RD MEMW WR 8088 O2 CS Minimum Mode A17 : A0 D7 256KB : D0 #2 RD WR O1 CS A17 : A0 D7 256KB : D0 #1 RD WR O0 CS
  291. A12 : Interfacing several A0 A19 D7 8KB A18 : 8K Memory Chips A17 D0 #? A16 RD µ A15 WR to the 8088 P A14 CS A13 A12 : A0 D7 : : D0 MEMR 8088 MEMW : Minimum Mode A12 : A0 D7 8KB : D0 #2 RD WR CS A12 : A0 D7 8KB : D0 #1 RD WR CS
  292. A12 : Interfacing 128 A0 A19 D7 8KB A18 : 8K Memory Chips A17 D0 #128 A16 RD µ A15 WR to the 8088 P A14 CS A13 A12 : A0 D7 : : D0 MEMR 8088 MEMW : Minimum Mode A12 : A0 D7 8KB : D0 #2 RD WR CS A12 : A0 D7 8KB : D0 #1 RD WR CS
  293. A12 : Interfacing 128 A0 A19 D7 8KB A18 : 8K Memory Chips A17 D0 #128 A16 RD to the 8088 µP A15 WR to the 8088 P A14 CS A13 A12 : A0 D7 : : D0 MEMR 8088 MEMW : Minimum Mode A12 : A0 D7 8KB : D0 #2 RD WR CS A12 : A0 D7 8KB : D0 #1 RD WR CS
  294. MemoryMemory chip#__chip#__ isis mappedmapped to:to: A19A19 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA toto A0A0 11111111 11111111 11981198 76547654 32103210 (HEX)(HEX) 98769876 54325432 1010 0000
  295. A12 : Interfacing 128 A0 A19 D7 8KB A18 : 8K Memory Chips A17 D0 #128 A16 RD to the 8088 µP A15 WR to the 8088 P A14 CS A13 A12 : A0 D7 : : D0 MEMR 8088 MEMW : Minimum Mode A12 : A0 D7 8KB : D0 #2 RD WR CS A12 : A0 D7 8KB : D0 #1 RD WR CS
  296. Bài gi ng K thu t Vi x lý Ngành in t -Vi n thông i h c Bách khoa à Nng ca H Vi t Vi t, Khoa TVT Tài li u tham kh o [1] K thu t vi x lý, Vn Th Minh, NXB Giáo d c, 1997 [2] K thu t vi x lý và Lp trình Assembly cho h vi x lý, Xuân Ti n, NXB Khoa h c & k thu t, 2001
  297. Chương 5 Thiết kế các cổng I/O 5.1 I/O ưc phân vùng nh và I/O tách bi t - I/O ưc phân vùng nh (Memory Mapped I/O) - I/O tách bi t (Isolated I/O) 5.2 Các chip MSI dùng làm c ng I/O -Cng ra -Cng vào 5.3 Chip 8255 - chân, S kh i ch c n ng - Các mode ho t ng - Gi i mã a ch -Lp trình cho 8255
  298. 5.1 Cn phân bi t 2 ki u thi t k • I/O ưc phân vùng nh (Memory mapped I/O): - 1 cng ưc xem nh ư m t ô nh - 1 cng cóa ch 20-bit -ưc truy c p khi IO/M = 0 - không c n m ch gi i mã a ch riêng • I/O tách bi t (isolated I/O) - 1 cng ưc xem úng là 1 cng - 1 cng cóa ch 16-bit, 12-bit, 8-bit -ưc truy c p khi IO/M = 1 - cn mch gi i mã a ch I/O riêng
  299. 5.2 Các chip MSI ưng dùng làm c ng I/O • 74LS373 • 74LS374 • 74LS244 • 74LS245 • Khi s ưng c ng ít và cnh • Cách m c m ch s quy t nh cho chip là cng ra hay cng vào vàa ch ca nó
  300. S dng 74LS245 làm c ng ra A19 A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR 5V IOR IOW : mov al, 55 mov dx, F000 out dx, al A A A A A A A A A A A A A A A AIOW 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 : 5 4 3 2 1 0
  301. S dng 74LS373 làm c ng ra A19 A18 : A0 D7 D0 Q0 D6 D1 Q1 D5 D2 Q2 D4 D3 Q3 D3 D4 Q4 D2 D5 74LS373 Q5 8088 D1 D6 Q6 Minimum D0 D7 Q7 Mode LE OE IOR IOW : mov al, 55 mov dx, F000 A A A A A A A A A A A A A A A AIOW out dx, al 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 :
  302. S dng 74LS245 làm c ng vào A19 5V A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR IOW : mov dx, F000 in al, dx : A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  303. Cng ra
  304. Cng vào
  305. 5.3 Chip LSI ưng dùng làm c ng I/O • PPI 8255 • Khi s ưng c ng I/O nhi u và không c nh • Cách m c m ch s quy t nh a ch cho các c ng còn vai trò c a c ng s ưc quy t nh b i ph n m m
  306. 8255 PPI
  307. S kh i ch c n ng c a 8255
  308. Các mode làm vi c • Mode 0 - PA, PB, PCH (CU) và PCL (CL) - Có th là Input ho c Output - Vi c Nh p ho c Xu t d li u làc l p • Mode 1 - PA, PB - Có th là Input ho c Output - Vi c Nh p ho c Xu t d li u là ph thu c vào mt s bít ca PC (các tín hi u handshaking ) • Mode 2 - PA - PA va là Input va là Output - Vi c Nh p/Xu t d li u v i PA là ph thu c vào mt s bít ca PC (các tín hi u handshaking )
  309. Nhóm làm vi c • Nhóm A: PA và PCH • Nhóm B: PB và PCL • nh c u hình làm vi c cho 1 chip 8255: Gi 1 Tu khi n nh c u hình n thanh ghi iu khi n c a chip ó •Lp/xoá mt bit ca PC: Gi 1 Tu khi n L p/Xoá bit n thanh ghi iu khi n ca chip ó
  310. T iu khi n nh c u hình làm vi c cho m t chip 8255
  311. T iu khi n l p/xoá bit cho m t chip 8255
  312. The 8255 Programmable Peripheral Interface • Intel has developed several peripheral controller chips designed to support the 80x86 processor family. The intent is to provide a complete I/O interface in one chip. • 8255 PPI provides three 8 bit input ports in one 40 pin package making it more economical than 74LS373 and 74LS244 • The chip interfaces directly to the data bus of the processor, allowing its functions to be programmed; that is in one application a port may appear as an output, but in another, by reprogramming it as an input. This is in contrast with the 74LS373 and 74LS244 which are hard wired and fixed. 8255 Pins • PA0 - PA7: input, output, or bidirectional port • PB0 - PB7: input or output • PC0 - PC7: This 8 bit port can be all input or output. It can also be split into two parts, CU (PC4 - PC7) and CL (PC0 - PC3). Each can be used for input and output. • RD or WR – IOR and IOW of the system are connected to these two pins • RESET • A0, A1, and CS – CS selects the entire chip whereas A0 and A1 select the specific port (A, B, or C) or Control Register.
  313. Gi i mã a ch cho 8255
  314. Mode 0 - Simple input/output • Simple I/O mode: any of the ports A, B, CL, and CU can be programmed as input or output. • Example: Configure port A as input, B as output, and all the bits of port C as output assuming a base address of 50h • Control word should be 1001 0000b = 90h MOV AL, 90h OUT 53h,AL IN AL, 50h OUT 51h, AL OUT 52h, AL Mode 1: I/O with Handshaking Capability • Handshaking refers to the process of communicating back and forth between two intelligent devices • Example. Process of communicating with a printer – a byte of data is presented to the data bus of the printer – the printer is informed of the presence of a byte of data to be printed by activating its strobe signal – whenever the printer receives the data it informs the sender by activating an output signal called ACK – the ACK signal initiates the process of providing another byte of data to the printer • 8255 in mode 1 is equipped with resources to handle handshaking signals
  315. Mode 1 Strobed Output Signals • OBFa (output buffer full for port A) – indicates that the CPU has written a byte of data into port A – must be connected to the STROBE of the receiving equipment • ACKa (acknowledge for port A) – through ACK, 8255 knows that data at port A has been picked up by the receiving device – 8255 then makes OBFa high to indicate that the data is old now. OBFa will not go low until the CPU writes a new byte of data to port A. • INTRa (interrupt request for port A) – it is the rising edge of ACK that activates INTRa by making it high. INTRa is used to get the attention of the microprocessor. – it is important that INTRa is high only if INTEa, OBFa, ACKa are all high – it is reset to zero when the CPU writes a byte to port A