B - PowerPoint PPT Presentation

1 / 403
About This Presentation
Title:

B

Description:

The Evolution of Intel Microprocessors – PowerPoint PPT presentation

Number of Views:100
Avg rating:3.0/5.0
Slides: 404
Provided by: lindas147
Category:
Tags: assembler

less

Transcript and Presenter's Notes

Title: B


1
Bài gi?ng K? thu?t Vi x? lý Ngành Ði?n t?-Vi?n
thôngÐ?i h?c Bách khoa Ðà N?ngc?a H? Vi?t Vi?t,
Khoa CNTT-ÐTVT
  • Tài li?u tham kh?o
  • 1 K? thu?t vi x? lý, Van Th? Minh, NXB Giáo
    d?c, 1997
  • 2 K? thu?t vi x? lý và L?p trình Assembly cho
    h? vi x? lý, Ð? Xuân Ti?n, NXB Khoa h?c k?
    thu?t, 2001

2
Chuong 1
  • 1.1 Các h? th?ng s?
  • - H? th?p phân
  • - H? nh? phân
  • - H? th?p l?c phân
  • 1.2 Các h? th?ng mã hoá
  • - ASCII
  • - BCD
  • 1.3 Các linh ki?n di?n t? s? co b?n
  • - Các c?ng logic AND, OR, XOR,NOT
  • - Các b? gi?i mã

3
1.1 Các h? th?ng s?
  • H? d?m th?p phân (Decimal)
  • Còn g?i là h? d?m co s? mu?i(Vì có quá ít ngu?i
    có chín ngón tay ho?c mu?i m?t ngón chân?)
  • Dùng mu?i ký hi?u 1,2,3,4,5,6,7,8,9,0
  • Ví d?1.1 Ba nghìn Chín tram B?y muoi Tám
    3978 3x103 9x102 7x101 8x100
  • 3000 900 70 8

4
1.1 Các h? th?ng s?
  • H? d?m nh? phân (Binary)
  • Còn g?i là H? d?m co s? hai
  • S? d?ng hai ký hi?u (bit) 0 và 1(Các h? th?ng
    di?n t? s? ch? s? d?ng hai m?c di?n áp?)
  • Kích c?, LSB, MSB c?a s? nh? phân
  • S? nh? phân không d?u (Unsigned)
  • S? nh? phân có d?u (S? bù hai)

5
S? nh? phân
  • M?i ký hi?u 0 ho?c 1 du?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í d? 1.1 1010101010101010
  • là m?t s? nh? phân 16-bit

MSB
LSB
6
S? nh? phân không d?u
  • Ch? bi?u di?n du?c các giá tr? không âm (gt 0)
  • V?i n-bit có th? bi?u di?n các giá tr? t? 0 d?n
    2n 1
  • Ví d? 1.3 Giá tr? V c?a s? nh? phân không d?u
    1101 du?c tính V(1101) 1x23 1x22 0x21
    1x20
  • 8 4 0 1 13

7
S? nh? phân không d?u
  • T?ng quát N?u s? nh? phân N n-bit
  • N b( n-1) b( n-2) . b1 b0thì giá tr? V
    c?a nó là V b(n -1) x 2(n-1)b (n-2) x2
    (n-2) b1 x 21 b0 x 20
  • Các s? nh? phân không d?u 4-bit bi?u di?n du?c
    các giá tr? t? ? d?n ?

8
16 giá tr? t? 0 d?n 15
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
S? nh? phân không d?u
  • D?i giá tri c?a các s? không d?u 8-bit là 0,255
    (unsigned char trong C)
  • D?i giá tri c?a các s? không d?u 16-bit là
    0,65535 (unsigned int trong C)

10
Chuy?n d?i th?p phân sang nh? phân
  • Ví d? 1.4
  • Chuy?n 25 sang nh? phân không d?u. Dùng
    phuong pháp chia 2 liên ti?p
  • Chia 2 Thuong s? Du 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
S? nh? phân có d?u
  • Bi?u di?n du?c c? các giá tr? âm
  • Còn g?i là S? bù hai
  • V?i n-bit có th? bi?u di?n các giá tr? t?
    2(n-1) d?n 2(n-1) 1
  • Ví d? 1.3 Giá tr? V c?a s? nh? phân có d?u 1101
    du?c tính V(1101) 1x23 1x22 0x21
    1x20
  • 8 4 0 1 3

12
S? nh? phân có d?u
  • T?ng quát N?u s? nh? phân N n-bit
  • N b( n-1) b( n-2) . b1 b0thì giá tr? V
    c?a nó là V b(n -1) x 2(n-1)b (n-2) x2
    (n-2) b1 x 21 b0 x 20
  • Các s? nh? phân có d?u 4-bit bi?u di?n du?c các
    giá tr? t? ? d?n ?

13
16 giá tr? t? - 8 d?n 7
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
S? nh? phân có d?u
  • D?i giá tri c?a các s? có d?u 8-bit là
    -128,127 (char trong C)
  • D?i giá tri c?a các s? có d?u 16-bit là
    -32768,32767 (int trong C)

15
Tìm d?i s? (L?y bù 2)
  • T?ng c?a m?t s? v?i d?i s? c?a nó 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
Chuy?n s? th?p phân sang nh? phân có d?u
  • Voí s? duongGi?ng nhu chuy?n th?p phân sang nh?
    phân không d?u r?i thêm bit 0 vào sát bên trái
  • Ví d? Chuy?n 25 sang nh? phân có d?uK?t qu?
    011011
  • V?i s? âm Chuy?n d?i s? sang nh? phân có d?u r?i
    l?y bù 2

17
Chuy?n s? th?p phân sang nh? phân có d?u
  • Ví d? 1.6 Chuy?n 26 sang nh? phân
  • 1. chuy?n d?i s? 26 11010
  • 2. Ðua 0 vào sát trái 011010
  • 3. Bù 1 100101
  • 4. C?ng 1 1
  • -------------
  • -26 100110

18
S? th?p l?c phân
  • Quen g?i là s? Hexa (Hexadecimal)
  • Còn g?i là h? d?m co s? mu?i sáu
  • S? d?ng 16 ký hi?u d? bi?u di?n0,1,2,3,4,5,6,7,8
    ,9,A,B,C,D,E,F
  • M?i ký hi?u tuong ?ng v?i 4-bit
  • M?c dí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
M?i ký hi?u tuong ?ng v?i 4-bit
Hexa Binary Hexa Binary
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111
20
Chuy?n d?i Hexa nh? phâ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 tuong ?ng
    v?i nó
  • 2 F 8
  • 0010 1111 1000 A
    B B A
  • 1010 1011 1011 1010
  • K?t qu? 2F8h 001011111000b ABBAh
    1010101110111010b

21
Chuy?n d?i Hexa nh? phân
  • Ví d? 1.8
  • Chuy?n s? nh? phân 1100101011111110 sang hexa
  • - Tru?c h?t theo hu?ng t? LSB v? MSB chia s?
    nh? phân dó thành các nhóm 4-bit
  • - Sau dó thay th? m?i nhóm 4-bit b?ng ký hi?u
    hexa tuong ?ng v?i nó
  • 1100 1010 1111
    1110 C A F
    E
  • K?t qu? 1100101011111110b CAFEh

22
1.2 Các h? th?ng mã hoá
  • ASCII American Standard Code for Information
    Interchange.
  • Dùng d? bi?u di?n các ký t? (characters) G?m ký
    t? hi?n th? du?c và ký t? di?u khi?n
  • M?i ký t? du?c bi?u di?n b?ng 8-bit g?i là mã
    ASCII c?a ký t? dó
  • Các ch? cái in và thu?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? d?c bi?t _at_ / vân vân
  • Các ký t? di?u khi?n carriage return (CR) , line
    feed (LF), beep, vân vân

23
Mã ASCII
  • V?i b?ng mã du?c s?p x?p theo tr?t t? tang 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 inA..Z n?m liên ti?p nhau, ch? A có
    mã ASCII là 41h
  • Các ch? cái thu?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? thu?ng tuong ?ng ch?
    khác nhau ? bit 5A 01000001 B 01000010 Z
    01011010a 01100001 b 01100010 z 01111010
  • 32 ký t? di?u khi?n du?c x?p d?u b?ng mã (00h d?n
    1Fh)

24
B?ng mã ASCII
25
B?ng mã ASCII
26
Mã BCD
  • BCD (Binary Coded Decimal)
  • Quen g?i là s? BCD
  • Dùng d? mã hoá các s? th?p phân b?ng các ký hi?u
    nh? phân
  • M?i ch? s? th?p phân du?c bi?u di?n b?ng m?t t?
    h?p 4-bit
  • Các t? h?p 4-bit không s? d?ng g?i là các t? h?p
    c?m
  • Nhi?u linh ki?n di?n t? s? d?ng mã này (B? gi?i
    mã BCD-LED b?y do?n 7447)

27
B?ng mã BCD
Th?p phân BCD Th?p phân BCD
0 0000 8 1000
1 0001 9 1001
2 0010 1010
3 0011 1011
4 0100 1100
5 0101 1101
6 0110 1110
7 0111 1111
28
Mã BCD
  • Ð?ng nh?m mã hoá BCD v?i vi?c chuy?n d?i th?p
    phân sang nh? phânVí d? 1.9 Cho s? th?p phân
    15Mã BCD c?a nó là 00010101S? nh? phân
    không d?u
  • 8-bit tuong ?ng là 00001111

29
Bit, Nibble, Byte, Word
  • 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
  • K 210 1024Kb (kilôbit) 1024 bit 128
    byteKB (kilôbyte) 1024 byteKbps (Kilobit per
    second) Kilôbit trên giây
  • M 220 1024 K 1048576Mb (Mêgabit) 1024
    Kb 1048576 bitMB (Mêgabyte) 1024 KB
    1048576 byte
  • G 230 1024 M 1048576 KGb (Gigabit) 1024
    Mb 1048576 KbGB (Gigabyte) 1024 MB
    1048576 KB
  • T ?

30
1.3 Các linh ki?n di?n t? s? co b?n
  • Phân chia linh li?n s? theo m?t d? tích h?p SSI,
    MSI, LSI, VLSISSI (Small Scale Integration) Vi
    m?ch tích h?p c? nh?MSI (Medium Scale
    Integration) Vi m?ch tích h?p c? trungLSI
    (Large Scale Integration) Vi m?ch tích h?p c?
    l?nVLSI (Very Large Scale Integration)Vi m?ch
    tích h?p c? c?c l?n
  • SSI Các c?ng logic and, or, xor, not
  • MSI Các b? gi?i mã, Các ch?t, d?m
  • LSI,VLSI Các b? vi x? lý, vi di?u khi?n, DSPs

31
C?ng logic AND
A B A AND B
1 1 1
1 0 0
0 1 0
0 0 0
C?ng AND có th? có nhi?u hon 2 d?u vào Trên m?t
chip có th? có nhi?u c?ng AND
32
C?ng logic AND IC 7408
33
C?ng logic AND IC 7411
34
C?ng logic OR
A B A OR B
1 1 1
1 0 1
0 1 1
0 0 0
C?ng OR có th? có nhi?u hon 2 d?u vào Trên m?t
chip có th? có nhi?u c?ng OR
35
C?ng logic OR IC 7432
36
C?ng logic XOR
A B A XOR B
1 1 0
1 0 1
0 1 1
0 0 0
C?ng XOR có th? có nhi?u hon 2 d?u vào Trên m?t
chip có th? có nhi?u c?ng XOR
37
C?ng logic NOT
A NOT A
1 0
1 0
0 1
0 1
38
Ð?m 3 tr?ng thái
c z
0 HiZ
1 x
c z
1 HiZ
0 x
39
Chip gi?i mã 74138
40
Chip gi?i mã 74138
41
Flip Flop ki?u D
42
Flip Flop ki?u D
43
Flip Flop ki?u D
44
Flip Flop ki?u D
45
Ch?t 8-bit 74373
46
Ch?t 8-bit 74573
47
IC 74244
48
IC 74244
49
Ð?m 2 chi?u 74245
50
Ð?m 2 chi?u 74245
51
What is a microprocessor?
  • Intels first microprocessor, the 4004, was
    introduced in 1971. It contained 2300
    transistors. Todays Pentium 4 processor, by
    contrast, contains 55 million transistors.
  • One of the most common tasks microprocessors
    perform is to serve as the brains inside
    personal computers, but they deliver
    intelligence to countless other devices as
    well.
  • For example, they may give your telephone
    speed-dial and re-dial options, automatically
    turn down your homes thermostat at night and
    make your car safer and more energy efficient.

52
1971
  • In 1971, Intels first microprocessor was the
    4004. This breakthrough invention powered the
    Busicom calculator and paved the way for
    embedding intelligence in inanimate objects as
    well as the personal computer.

53
1978
  • In 1978, a pivotal sale to IBM's new personal
    computer division made the Intel 8088 the brains
    of IBM's new hit product--the IBM PC.
  • The 8088's success launched Intel into the ranks
    of the Fortune 500 companies, and Fortune
    magazine named the company one of the "Business
    Triumphs of the Seventies."

54
1982
  • Then, in 1982, the 286, also known as the 80286,
    became the first Intel processor that could run
    all the software written for its predecessor.
  • This software compatibility remains a cornerstone
    of Intel's family of microprocessors. Within 6
    years of its release, there were an estimated 15
    million 286-based PCs around the world.

55
1989
  • In 1989, the move to a 486 processor allowed the
    shift from a command-level computer to
    point-and-click computing.
  • The Intel 486 processor was the first to offer a
    built-in math coprocessor, which speeds up
    computing because it offloads complex math
    functions from the central processor.

56
1993
  • In 1993, the jump to the Pentium processor
    allowed computers to more easily incorporate
    "real world" data such as speech, sound,
    handwriting and photographic images.

57
1997
  • In 1997, the 7.5 million-transistor Pentium II
    processor incorporated Intel MMX technology,
    which is designed specifically to process video,
    audio and graphics data efficiently.
  • With this processor, PC users could
  • capture, edit and share digital photos with
    friends and family via the Internet,
  • edit and add text, music or between-scene
    transitions to home movies, and,
  • with a video phone, send video over standard
    phone lines and the Internet.

58
1998
  • In 1998, the Pentium II XeonTM processor was
    designed to meet the performance requirements of
    mid-range and higher servers and workstations.
  • The Pentium II Xeon processors featured technical
    innovations specifically designed for
    workstations and servers that utilized demanding
    business applications such as Internet services,
    corporate data warehousing, digital content
    creation, and electronic and mechanical design
    automations.

59
1999
  • In 1999, the Intel Celeron processor was designed
    for the value PC market segment. It provided
    consumers great performance at an exceptional
    value, and it delivered excellent performance for
    uses such as gaming and educational software.

60
1999
  • Also in 1999, the Pentium III processor was
    released and featured 70 new instructions that
    dramatically enhanced the performance of advanced
    imaging, 3-D, streaming audio, and video and
    speech recognition applications.
  • It was designed to significantly enhance Internet
    experiences, allowing users to do such things as
    browse through realistic online museums and
    stores and download high-quality video.

61
2000
  • In 2000, users of the newly released Pentium 4
    processor could create professional-quality
    movies, deliver TV-like video via the Internet,
    communicate with real-time video and voice,
    render 3D graphics in real time, quickly encode
    music for MP3 players, and simultaneously run
    several multimedia applications while still
    connected to the Internet.
  • As a comparison, Intel's first microprocessor,
    the 4004, ran at 108 kilohertz, compared to the
    Pentium 4 processor's initial speed of 1.5
    gigahertz. If automobile speed had increased
    similarly over the same period, you could now
    drive from San Francisco to New York in about 13
    seconds.

62
History of Intel Microprocessor
63
  • Bách Khoa Online hutonline.net
  • Tìm ki?m download ebook bookilook.com

64
Bài gi?ng K? thu?t Vi x? lý Ngành Ði?n t?-Vi?n
thôngÐ?i h?c Bách khoa Ðà N?ngc?a H? Vi?t Vi?t,
Khoa CNTT-ÐTVT
  • Tài li?u tham kh?o
  • 1 K? thu?t vi x? lý, Van Th? Minh, NXB Giáo
    d?c, 1997
  • 2 K? thu?t vi x? lý và L?p trình Assembly cho
    h? vi x? lý, Ð? Xuân Ti?n, NXB Khoa h?c k?
    thu?t, 2001

65
Chuong 2 Vi x? lý và H? th?ng vi x? lý
  • 2.1 B? vi x? 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.2 Các h? vi x? lý
  • - H? x86 c?a Intel- Lu?t Moore
  • - H? 68x c?a Motorola
  • 2.3 H? th?ng vi x? 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ý?

66
2.1 B? vi x? lý
  • M?t b? vi x? lý là m?t m?ch tích h?p ch?a hàng
    ngàn, th?m chí hàng tri?u transistor (LSI, VLSI)
    du?c k?t n?i v?i nhau
  • Các transistor ?y cùng nhau làm vi?c d? luu tr?
    và x? lý d? li?u cho phép b? vi x? lý có th? th?c
    hi?n r?t nhi?u ch?c nang h?u ích
  • Ch?c nang c? th? c?a m?t b? vi x? lý du?c xác
    d?nh b?ng ph?n m?m (có th? l?p trình du?c)

67
B? vi x? lý
  • B? vi x? lý d?u tiên c?a Intel,4004, du?c gi?i
    thi?u vào nam 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ý thu?ng du?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.

68
Các thành ph?n c?a b? vi x? lý
69
ALU và Control Unit
  • ALU
  • Th?c hi?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 d?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
    di?u khi?n và d?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.

70
Các thanh ghi (Registers)
  • Thanh ghi là noi mà b? vi x? lý có th? luu tr?
    du?c m?t s? 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 d? luu tr? d? li?u
    t?m th?i trong quá trình th?c hi?n chuong trình
  • Các thanh ghi có th? du?c truy c?p b?ng các câu
    l?nh ngôn ng? máy thu?ng du?c g?i là các thanh
    ghi ngu?i s? d?ng có th? nhìn th?y du?c (có th?
    truy c?p du?c)
  • Các thanh ghi di?u khi?n và các thanh ghi tr?ng
    thái du?c CU dùng d? di?u khi?n vi?c th?c hi?n
    chuong trình. Ða s? các thanh ghi này ngu?i s?
    d?ng không th? nhìn th?y du?c

71
2.2 Các h? vi x? lý
  • Hi?n nay, có r?t nhi?u nhà s?n xu?t ra các chip
    vi x? lýIntel, AMD, Motorola, Cyrix
  • Thông thu?ng, m?t h? vi x? lý là các chip vi x?
    lý du?c s?n xu?t b?i m?t nhà s?n xu?t nào dó.
  • Trong ph?m vi m?t h? vi x? lý, theo th?i gian và
    theo công ngh? ch? t?o có các d?i (th? h?) vi x?
    lý khác nhau phân bi?t theo Ð? dài T? c?a chúng
    (bit) và t?c d? (Hz).
  • Ð? dài T? (Word Length) c?a m?t chip vi x? lý là
    kích c? t?i da c?a các toán h?ng nh? phân mà nó
    có th? th?c hi?n các phép toán trên dó.

72
T?c d? c?a h? vi x? lý x86 c?a Intel
73
H? vi x? lý x86 c?a Intel
  • Model Nam s?n xu?t S? lu?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

74
H? vi x? lý x86 c?a Intel 70s
75
H? vi x? lý x86 c?a Intel 80s
76
H? vi x? lý x86 c?a Intel 90s
77
(No Transcript)
78
2.3 H? th?ng vi x? lý
79
Lu?t Moore
Dr. Gordon E. Moore, Chairman Emeritus of Intel
Corporation, d? doán r?ng C? m?t nam ru?i thì s?
lu?ng transistor du?c tích h?p trên chip vi x? lý
tang g?p dôi
80
2.3 H? th?ng vi x? lý
So d? kh?i ch?c nang c?a m?t h? th?ng vi x? lý
81
H? th?ng vi x? lý
  • G?m 3 kh?i ch?c nang Vi x? lý, B? nh?, Các c?ng
    I/O
  • B? nh? du?c th?c hi?n b?ng các chip nh? bán d?n
    ROM ho?c RWM, là noi luu tr? chuong trình và d?
    li?u. Ð?i v?i vi x? lý, b? nh? là m?t t?p h?p các
    ô nh? phân bi?t theo d?a ch? c?a chúng.
  • Các c?ng I/O du?c th?c hi?n b?ng các chip MSI
    ho?c LSI, là ph?n m?ch giao ti?p gi?a vi x? lý
    v?i các thi?t b? I/O. B? vi x? lý cung phân bi?t
    các c?ng I/O theo d?a ch? c?a chúng.

82
H? th?ng vi x? lý
  • 3 kh?i ch?c nang Vi x? lý, B? nh?, Các c?ng I/O
    c?a m?t h? th?ng vi x? lý trao d?i tín hi?u v?i
    nhau thông qua Bus h? th?ng.
  • Bus h? th?ng là m?t t?p h?p các du?ng truy?n d?n
    dùng chung, bao g?m Bus d?a ch? (A-Bus), Bus d?
    li?u (D-Bus) và Bus di?u khi?n (C-Bus)
  • Các tín hi?u d?a ch? di chuy?n trên A-Bus theo
    hu?ng t? vi x? lý d?n B? nh? và các c?ng I/O. S?
    lu?ng du?ng truy?n d?n c?a A-Bus (g?i là Ð? r?ng
    c?a A-Bus) tính b?ng bit, ph?n ánh kh? nang qu?n
    lý b? nh? c?a chip vi x? lý.

83
H? th?ng vi x? lý
  • Các tín hi?u d? li?u di chuy?n trên D-Bus theo c?
    2 hu?ng t? vi x? lý d?n B? nh? và các c?ng I/O và
    ngu?c l?i (m?i lúc m?t hu?ng). S? lu?ng du?ng
    truy?n d?n c?a D-Bus (g?i là Ð? r?ng c?a D-Bus)
    tính b?ng bit, ph?n ánh m?t ph?n t?c d? trao d?i
    d? li?u c?a chip vi x? lý v?I các kh?i ch?c nang
    khác.
  • Ða s? các tín hi?u trên C-Bus là các tín hi?u
    di?u khi?n riêng l?, có tín hi?u xu?t phát t? vi
    x? lý, có tín hi?u di vào vi x? lý. Vi x? lý s?
    d?ng các tín hi?u này d? di?u khi?n ho?t d?ng và
    nh?n bi?t tr?ng thái c?a các kh?i ch?c nang khác.

84
Thi?t k? ph?n c?ng c?a h? th?ng vi x? lý
  • Thi?t k? b? nh? cho h? th?ng vi x? lý Ghép n?i
    các chip nh? bán d?n s?n có v?i bus h? th?ng sao
    cho khi b? vi x? lý truy c?p b? nh? thì không x?y
    ra xung d?t gi?a các chip nh? v?i nhau và không
    xung d?t v?i các chip dùng làm c?ng I/O
  • Tuong t?, Thi?t k? các c?ng I/O cho h? th?ng vi
    x? lý Ghép n?i các chip MSI ho?c LSI thu?ng dùng
    làm c?ng I/O v?i bus h? th?ng sao cho khi b? vi
    x? lý truy c?p các thi?t b? I/O thì không x?y ra
    xung d?t gi?a các chip dó v?i nhau và không xung
    d?t v?i các chip dùng làm b? nh?

85
Thi?t k? ph?n m?m c?a h? th?ng vi x? lý
  • Vi?t chuong trình di?u khi?n ho?t d?ng c?a h?
    th?ng ph?n c?ng theo ch?c nang mong mu?n (thu?ng
    dùng ngôn ng? Assembly c?a chip vi x? lý dùng
    trong h? th?ng)
  • D?ch chuong trình dã vi?t sang ngôn ng? máy s?
    d?ng các chuong trình d?ch thích h?p
  • N?p chuong trình ngôn ng? máy vào b? nh? c?a h?
    th?ng vi x? lý
  • Ki?m tra ho?t d?ng c?a h? th?ng và th?c hi?n các
    hi?u ch?nh n?u c?n thi?t
  • Có th? nh? s? tr? giúp c?a các chuong trình mô
    ph?ng trên máy tính

86
  • Bách Khoa Online hutonline.net
  • Tìm ki?m download ebook bookilook.com

87
Bay gi?ng K? thu?t Vi x? lý Ngành Ði?n t?-Vi?n
thôngÐ?i h?c Bách khoa Ðà N?ngc?a H? Vi?t Vi?t,
Khoa CNTT-ÐTVT
  • Tài li?u tham kh?o
  • 1 K? thu?t vi x? lý, Van Th? Minh, NXB Giáo
    d?c, 1997
  • 2 K? thu?t vi x? lý và L?p trình Assembly cho
    h? vi x? lý, Ð? Xuân Ti?n, NXB Khoa h?c k?
    thu?t, 2001

88
Chuong 3 Vi x? lý 8088-Intel
  • 3.1 Ki?n trúc và ho?t d?ng c?a 8088- Nguyên lý
    ho?t d?ng- So d? kh?i ch?c nang
  • 3.2 C?u trúc thanh ghi c?a 8088
  • 3.3 Phuong pháp qu?n lý b? nh?
  • 3.4 Mô t? t?p l?nh Assembly

89
L?y - Gi?i mã - Th?c hi?n l?nh
Nguyên lý ho?t d?ng c?a m?t b? vi x? lý
Tìm và copy các byte l?nh t? b? nh?
Gi?i mã l?nh
T?o ra các tín hi?u di?u khi?n d? th?c hi?n l?nh
90
Chu k? l?nh và Chu k? máy
  • Chu k? l?nh T?ng th?i gian tìm l?nh, gi?i mã
    l?nh và th?c hi?n 1 l?nh
  • Nói chung, Chu k? l?nh c?a các l?nh khác nhau là
    khác nhau
  • Chu k? l?nh bao gi? cung b?ng m?t s? nguyên l?n
    chu k? máy
  • Chu k? máy b?ng ngh?ch d?o c?a t?n s? ho?t d?ng
    (t?c d? d?ng h?) c?a b? vi x? lý

91
3.1 Ki?n trúc và Ho?t d?ng c?a 8088
92
Ðon v? giao ti?p Bus - BIU
  • Phát các tín hi?u d?a ch? d?n b? nh? và các c?ng
    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

93
Ðon v? th?c hi?n - EU
  • Bao g?m CU và ALU
  • CU Gi?i mã l?nh d? t?o ra các tín hi?u di?u
    khi?n nh?m th?c hi?n l?nh dã du?c gi?i mã
  • ALU th?c hi?n các thao tác khác nhau d?i v?i các
    toán h?ng c?a l?nh

94
T? ch?c c?a microprocessor
95
X? lý l?nh c?a các vi x? lý tru?c 8086/8088
  • M?t th? t?c don gi?n g?m 3 bu?c
  • L?y l?nh t? b? nh?
  • Gi?i mã l?nh
  • Th?c hi?n l?nh
  • L?y các toán h?ng t? b? nh? (n?u có)
  • Luu tr? k?t qu?

Microprocessor
...
Fetch 1
Decode 1
Execute 1
Fetch 2
Decode 2
Execute 2
Bus
Busy
Idle
Busy
...
Busy
Idle
Busy
96
Co ch? Pipelining
97
3.2 C?u trúc thanh ghi c?a 8088
8088 có 14 thanh ghi 16-bit
98
C?u trúc thanh ghi c?a h? x86
General Purpose
Special Registers
AH
AL
Index Registers
Accumulator
AX
Instr Pointer
IP
EAX
EIP
Stack Pointer
SP
BH
BL
Flags
Base
FLAG
ESP
BX
EFLAG
Base Pointer
BP
EBX
EBP
CH
CL
Count
Segment Registers
Dest Index
DI
CX
EDI
ECX
Code Segment
CS
Source Index
SI
DH
DL
Data
Data Segment
DS
ESI
DX
EDX
Extra Segment
ES
Stack Segment
SS
FS
GS
99
C?u trúc thanh ghi 8086/8088
0
7
0
7
AL BL CL DL
AH BH CH DH
Accumulator
AX BX CX DX
Base
Counter
Data
0
15

Instruction Pointer

Stack Pointer
Base Pointer

Source Index
Destination Index
100
Các thanh ghi da nang
0
7
0
7
AL BL CL DL
AX BX CX DX
AH BH CH DH
Accumulator
Base
Counter
Data
  • Có th? truy c?p nhu các thanh ghi 8-bit
  • Luu tr? t?m th?i d? li?u d? truy c?p nhanh hon
  • và tránh kh?i ph?i truy c?p b? nh?
  • - Có công d?ng d?c bi?t d?i v?i m?t s? câu l?nh

101
Các thanh ghi segment
  • Luu tr? d?a ch? segment c?a m?t ô nh? c?n truy
    c?p
  • K?t h?p v?i các thanh ghi offset nh?t d?nh

102
Các thanh ghi offset
Instruction Pointer
Stack Pointer
Base Pointer
Source Index
Destination Index
  • Luu tr? d?a ch? offset c?a m?t ô nh? c?n truy
    c?p
  • K?t h?p v?i các thanh ghi segment nh?t d?nh

103
Thanh ghi c?
0
15
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 d?u du?c s? d?ng -
M?i bit du?c s? d?ng du?c g?i là m?t c? - Các c?
d?u có tên và có th? du?c L?p/Xoá riêng l? - Bao
g?m các c? tr?ng thái và các c? di?u khi?n
104
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
80386, 80486DX
80286
80486SX
105
3.3 Phuong pháp qu?n lý b? nh?
- B? nh? du?c xem là m?t t?p h?p các ô nh? - M?i
ô nh? du?c nh?n d?ng b?ng m?t Ð?a ch? v?t lý duy
nh?t 20-bit - Trong ho?t d?ng truy c?p m?t ô nh?,
Ð?a ch? v?t lý c?a nó du?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
106
M?i liên h? gi?a ÐCVL và ÐCLG
ABus
0
19
Ð?a ch? v?t lý
0
0
15
15
0000
Thanh ghi offset.
Thanh ghi Segment
107
3.4 Mô t? t?p l?nh Assembly c?a 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? h?c
  • 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

108
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 d?i
  • Ðich s? có giá tr? nhu giá tr? c?a Ngu?n
  • Các l?nh chuy?n s? li?u không ?nh hu?ng d?n các
    c? tr?ng thái trên thanh ghi c?
  • M?t s? l?nh tiêu bi?u MOV, XCHG

109
Data Transfer Instructions - MOVKhuôn d?ng MOV
Ðích,Ngu?n
  • Tác d?ng (Ðích) ? (Ngu?n)
  • Ðích có th? là
  • 1. M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • 2. M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p
    nhau)
  • Ngu?n có th? là
  • M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p nhau)
  • 3. M?t giá tr? c? th?

110
M?t s? luu ý d?i v?i MOV
  • Ðích và Ngu?n ph?i có cùng kích c?
  • Ðích và Ngu?n không th? d?ng th?i thu?c b? nh?
  • N?u Ðích là m?t thanh ghi segment c?a VXL thì
    Ngu?n không th? là m?t giá tr? c? th? (nói cách
    khác, không th? n?p giá tr? tr?c ti?p cho m?t
    thanh ghi segment b?ng l?nh MOV)

111
Data Transfer Instructions - XCHGKhuôn d?ng
XCHG T/h1,T/h2
  • Tác d?ng (T/h1) ? (T/h2)
  • T/h1 có th? là
  • 1. M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • 2. M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p
    nhau)
  • T/h2 có th? là
  • M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p nhau)

112
M?t s? luu ý d?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? d?ng th?i thu?c b? nh?
  • T/h1 và T/h2 không th? là các thanh ghi segment

113
Các mode d?a ch?
  • Khi th?c hi?n l?nh, VXL s? th?c hi?n nh?ng thao
    tác nh?t d?nh trên s? li?u, các s? li?u này du?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à m?t
    ph?n c?a câu l?nh (? d?ng mã máy), có th? n?m ?
    m?t thanh ghi c?a VXL ho?c ? B? nh?
  • Cách xác d?nh toán h?ng trong các câu l?nh du?c
    g?i là các mode (d?nh) d?a ch?

114
Các mode d?a ch?
  • Mode d?a ch? thanh ghi MOV AX,BX
  • Mode d?a ch? t?c thì MOV AL,55h
  • Các mode d?a ch? b? nh? Các cách th?c xác d?nh
    d?a ch? vât lý c?a toán h?ng n?m trong b?
    nh? Mode d?a ch? tr?c ti?p Các mode d?a ch?
    gián ti?p

115
Mode d?a ch? tr?c ti?p (Direct Addressing Mode)
116
Mode d?a ch? gián ti?p thanh ghi(Register
Indirect Addressing Mode)
117
Mode d?a ch? co s?-ch? s?(Based-Indexed
Addressing Mode)
118
Nh? các mode d?a ch? b? nh? nhu th? nào?
  • T?t c? b?t d?u trong b?ng sau dây
  • L?y ra 0 ho?c 1 ph?n t? t? m?i c?t
  • (Không l?y 2 ph?n t? t? m?t c?t)
  • Ph?i l?y ít nh?t 1 ph?n t? t? b?ng

119
Các ví d?
120
Các ví d?
121
Các ví d?
122
Mã máy
M?t l?nh có th? dài t?1 d?n 6 byte Byte 1
g?m Opcode (6 bit) xác d?nh phép toán c?n
th?c hi?n Bit D xác d?nh toán h?ng ? REG c?a
Byte 2 là ngu?n hay dích 1 Ðích 0 Ngu?n
Bit W xác d?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?mMode
field (MOD), Register field (REG) Register/memory
field (R/M field)
123
Anatomy of an instruction
  • Opcode contains the type of instruction we
    execute plus two special bits, D and W
  • The mode byte is used only in instructions that
    use register addressing modes and encodes the
    source and destination for instructions with two
    operands
  • D stands for direction and defines the data flow
    of the instruction
  • D0, data flows from REG to R/M
  • D1, data flows from R/M to REG
  • W stands for the size of data
  • W0, byte-sized data
  • W1, word (in real mode) or double-word sized (in
    protected mode)

124
Anatomy of an instruction
  • MOD field specifies the addressing mode
  • 00 no displacement
  • 01 8-bit displacement, sign extended
  • 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

OPCODE
MOD
R/M
REG
125
Registers in the REG and R/M fields
Code
W0 (Byte)
W1 (Word)
W1 (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
126
Example
  • Consider the instruction 8BECh
  • 1000 1011 1110 1100 binary
  • Opcode 100010 -gt MOV
  • D1 data goes from R/M to REG
  • W1 data is word-sized
  • MOD11, register addressing
  • REG101 destination, R/M100 source
  • MOV BP, SP

Code
W0
W1
W1
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
127
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
DSBXSI
01
8-bit sign-extended displacement
001
DSBXDI
10
16-bit displacement
11
R/M is a register (register addressing mode)
010
SSBPSI
Examples If MOD00 and R/M101 mode is DI If
MOD01 and R/M101 mode is DI33h If MODE10
and R/M101 modes is DI2233h
011
SSBPDI
100
DSSI
101
DSDI
110
SSBP
111
DSBX
128
Example
  • Instruction 8A15h
  • 1000 1010 0001 0101
  • Opcode 100010 -gt MOV
  • D1, data flows from R/M to REG
  • W0, 8-bit argument
  • MOD00 (no displacement)
  • REG010 (DL)
  • REG101 (DI addressing mode)
  • MOV DL, DI

129
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

130
Direct Addressing
  • Example 8816 00 10
  • 1000 1000 0001 0110 0000 0000 0001 0000
  • Opcode 100010 -gt MOV
  • W0 (byte-sized data)
  • D0 data flows from REG
  • MOD 00, REG010 (DL), R/M110
  • Low-order byte of displacement 00
  • High-order byte of displacement 10
  • MOV 1000h, DL

131
Segment MOV instructions
  • Different opcode 100011
  • Segments are selected by setting the REG field

Example MOV BX, CS Opcode 10001100 MOD11
(register addressing) REG001 (CS) R/M011
(BX) 8CCB
132
Mã máy
REG xác d?nh thanh ghi cho toán h?ng th? nh?t
133
Mã máy
MOD và R/M cùng nhau xác d?nh toán h?ng th? hai
134
Mã máy
MOD và R/M cùng nhau xác d?nh toán h?ng th? hai
135
Ví d?
Mã hoá l?nh MOV BL,AL Opcode d?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
136
Nhóm l?nh S? h?c
  • Bên c?nh tác d?ng, c?n chú ý d?n ?nh hu?ng c?a
    l?nh d?i v?i các c? tr?ng thái
  • Các l?nh s? h?c th/thu?ng ADD, SUB,
  • Các l?nh s? h?c khác CMP. NEG, INC, DEC,
  • ?nh hu?ng d?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 n?u K?t qu? b?ng 0
  • SF 1 n?u MSB c?a K?t qu? 1
  • PF 1 n?u byte th?p c?a k?t qu? có Parity ch?n

137
Arithmetic Instructions - ADDKhuôn d?ng ADD
Ðích,Ngu?n
  • Tác d?ng (Ðích) ? (Ðích)(Ngu?n)
  • Ðích có th? là
  • 1. M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • 2. M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p
    nhau)
  • Ngu?n có th? là
  • M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p nhau)
  • 3. M?t giá tr? c? th?

138
?nh hu?ng c?a ADD
  • ZF 1 n?u K?t qu? b?ng 0
  • SF 1 n?u MSB c?a K?t qu? 1
  • PF 1 n?u byte th?p c?a k?t qu? có Parity ch?n
  • CF du?c l?p n?u tràn không d?u (có nh? t? MSB)
  • OF du?c l?p n?u tràn có d?u- Có nh? t? MSB,
    Không có nh? vào MSB- Có nh? vào MSB, Không có
    nh? t? MSB
  • AF du?c l?p n?u có nh? t? nibble th?p vào nibble
    cao (t? bit 3 vào bit 4)

139
Các c? trên thanh ghi c?
  • Các bit nh?t d?nh trên thanh ghi c? di?u khi?n
    ho?t d?ng ho?c ph?n ánh tr?ng thái c?a vi x? lý
  • Các c? di?u khi?n (TF, IF, DF)
  • Quy?t d?nh cách dáp ?ng c?a vi x? lý trong các
    tình hu?ng nh?t d?nh
  • Các c? tr?ng thái (CF, PF, AF, ZF, SF, OF)
  • B? ?nh hu?ng b?i các phép toán nh?t d?nh
  • Ph?c v? cho các l?nh có di?u ki?n

140
Các c? di?u khi?n
  • DF - Direction flag (C? hu?ng)
  • DF 1 hu?ng xu?ng
  • DF 0 hu?ng lên
  • IF Interrupt flag (C? ng?t)
  • IF 1 cho phép ng?t ngoài
  • IF 0 c?m ng?t ngoài (d?i v?i ng?t che du?c)
  • TF - Trace flag
  • TF 1 vi x? lý th?c hi?n t?ng l?nh m?t

141
Các c? tr?ng thái
  • Carry
  • carry or borrow at MSB in add or subtract
  • last bit shifted out
  • Parity
  • low byte of result has even parity
  • Auxiliary
  • carry or borrow at bit 3
  • Zero
  • result is 0
  • Sign
  • result is negative
  • Overflow
  • signed overflow occurred during add or subtract

142
(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!

143
Signed Overflow Example
  • 10010110
  • 10100011
  • 00111001
  • Carry in 0, Carry out 1
  • NegNegPos
  • Signed overflow occurred
  • OF 1 (set)
  • 00110110
  • 01100011
  • 10011001
  • Carry in 1, Carry out 0
  • PosPosNeg
  • Signed overflow occurred
  • OF 1 (set)

144
Examples of No Signed Overflow
  • 10010110
  • 01100011
  • 11111001
  • Carry in 0, Carry out 0
  • NegPosNeg
  • No Signed overflow occurred
  • OF 0 (clear)
  • 10010110
  • 11110011
  • 10001001
  • Carry in 1, Carry out 1
  • NegNegNeg
  • No Signed overflow occurred
  • OF 0 (clear)

145
Unsigned Overflow
  • The carry flag is used to indicate if an unsigned
    operation overflowed
  • The processor only adds or subtracts - it does
    not care if the data is signed or unsigned!
  • 10010110
  • 11110011
  • 10001001
  • Carry out 1
  • Unsigned overflow occurred
  • CF 1 (set)

146
DEBUG's Register Display
  • -R
  • 000 SP0010 BP0000 SI0000 DI0000
  • 00F IP004F 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)

147
Arithmetic Instructions - SUBKhuôn d?ng SUB
Ðích,Ngu?n
  • Tác d?ng (Ðích) ? (Ðích)-(Ngu?n)
  • Ðích có th? là
  • 1. M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • 2. M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p
    nhau)
  • Ngu?n có th? là
  • M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p nhau)
  • 3. M?t giá tr? c? th?

148
?nh hu?ng c?a SUB
  • ZF 1 n?u K?t qu? b?ng 0
  • SF 1 n?u MSB c?a K?t qu? 1
  • PF 1 n?u byte th?p c?a k?t qu? có Parity ch?n
  • CF du?c l?p n?u tràn không d?u (có mu?n vào MSB)
  • OF du?c l?p n?u tràn có d?u- Có mu?n t? MSB,
    Không có mu?n t? MSB- Có mu?n t? MSB, Không có
    mu?n vào MSB
  • AF du?c l?p n?u có mu?n t? nibble cao vào nibble
    th?p (t? bit 4 vào bit 3)

149
Arithmetic Instructions - CMPKhuôn d?ng CMP
Ðích,Ngu?n
  • Tác d?ng (Ðích)-(Ngu?n)
  • Ðích có th? là
  • 1. M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • 2. M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p
    nhau)
  • Ngu?n có th? là
  • M?t thanh ghi 8 ho?c 16 bit c?a VXL
  • M?t v? trí nh? (1 ho?c 2 ô nh? liên ti?p nhau)
  • 3. M?t giá tr? c? th?

150
Arithmetic Instructions INC, DEC, NEG
  • INC T/h
  • Trong dó 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 dó T/h có th? là các thanh ghi ho?c v? trí
    nh?
  • Tác d?ng (T/h) ? (T/h)-1
  • Luu ý Các l?nh INC và DEC không ?nh hu?ng d?n c?
    CF
  • L?nh NEG T/h Ð?o d?u c?a T/h (L?y bù 2)
  • L?nh NEG s? l?p c? OF n?u giá tr? c?a T/h là giá
    tr? âm nh?t trong d?i giá tr? c?a các s? có d?u
    tuong ?ng

151
Nhóm l?nh Logic
  • C?n chú ý d?n ?nh hu?ng c?a l?nh d?i v?i các c?
    tr?ng thái
  • Các l?nh logic th/thu?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 d?n các c? tr?ng thái.
  • Các l?nh khác
  • CF 0
  • OF 0
  • ZF 1 n?u K?t qu? b?ng 0
  • SF 1 n?u MSB c?a K?t qu? 1
  • PF 1 n?u byte th?p c?a k?t qu? có Parity ch?n
  • AF không xác d?nh

152
M?t s? ví d?
1100 1010
AL
AL
0011 0101
NOT AL
BL
0110 1101
0011 0101
AL
OR AL, BL
0111 1101
AL
AL
0011 0101
BL
0110 1101
AL
0011 0101
AND AL, BL
BL
0000 1111
0010 0101
AL
OR AL, BL
0011 1111
AL
AL
0011 0101
AL
0011 0101
BL
0000 1111
BL
0110 1101
AND AL, BL
XOR AL, BL
0000 0101
AL
0101 1000
AL
153
M?t s? ?ng d?ng
  • Bài toán Xoá bit Xoá m?t bit nào dó c?a m?t toán
    h?ng mà không làm ?nh hu?ng d?n các bit còn l?i
    c?a toán h?ng dó
  • Bài toán Ki?m tra bit Xác d?nh m?t bit nào dó
    c?a m?t toán h?ng là b?ng 0 hay 1 (thông qua giá
    tr? c?a m?t c? tr?ng thái)
  • Bài toán L?p bit L?p m?t bit nào dó c?a m?t toán
    h?ng mà không làm ?nh hu?ng d?n các bit còn l?i
    c?a toán h?ng dó

154
Nhóm l?nh logic
  • Các l?nh logic khác L?nh TEST, Các l?nh d?ch
    (Shift) và Các l?nh quay (Rotate)
  • L?nh TEST ch? khác l?nh AND là không gi? l?i k?t
    qu? c?a phép toán
  • Các l?nh d?ch và Các l?nh quay d?u có hai khuôn
    d?ngKhuôn d?ng 1 Mnemonic Toán h?ng,1Khuôn
    d?ng 2 Mnemonic Toán h?ng,CL
  • Tác d?ng c?a m?t câu l?nh theo khuôn dang 2 gi?ng
    nhu tác d?ng liên ti?p c?a N câu l?nh tuong ?ng
    theo khuôn d?ng 1, v?i N là giá tr? c?a thanh ghi
    CL

155
Các l?nh D?ch trái SHL, SAL
156
Shift right SHR
157
Shift right SAR
158
Rotate through Carry L/R(Quay trái/ph?i thông
qua carry)
159
Rotate left/right (Quay trái/ph?i không qua
carry)
ROL
160
Nhóm l?nh r? nhánh
  • Làm thay d?i tr?t t? th?c hi?n l?nh bình thu?ng
    c?a vi x? lý
  • L?nh nh?y không di?u ki?n JMP
  • Các l?nh nh?y có di?u ki?n Jxxx
  • L?nh l?p LOOP và các bi?n th? c?a nó
  • Các l?nh có liên quan d?n Chuong trình con-
    CALL (g?i chuong trình con)- RET (tr? v? chuong
    trình g?i)
  • Các l?nh có liên quan d?n Chuong trình con ph?c
    v? ng?t- INT (g?i chuong trình con ph?c v? ng?t
    - G?i ng?t)- IRET (quay v? chuong trình g?i ng?t)

161
L?nh nh?y không di?u 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 ngu?I l?p trình t? d?t ra theo qui
    t?c d?t tên c?a Assembler và có th? d?t vào
    tru?c m?t câu l?nh b?t k? trong chuong trình cùng
    v?i d?u nhãn Câu l?nh c?n th?c hi?n
  • Nhãn s? du?c d?ch thành d?a ch?
  • Kho?ng cách nh?y Kho?ng cách d?i s? (có d?u) t?
    l?nh nh?y d?n l?nh c?n th?c hi?n

162
Co ch? th?c hi?n l?nh nh?y
  • Các l?nh nh?y ng?n và g?n ch? làm thay d?i giá
    tr? c?a thanh ghi IP
  • L?nh nh?y ng?n c?ng kho?ng cách nh?y 8-bit có d?u
    vào giá tr? hi?n th?i c?a IP
  • L?nh nh?y g?n c?ng kho?ng cách nh?y 16-bit có d?u
    vào giá tr? hi?n th?i c?a IP
  • L?nh nh?y xa làm thay d?i c? CS và IP
  • Gán cho CS và IP các giá tr? m?i

163
Mã máy c?a l?nh nh?y
  • 11060100 EB2A JMP 012C
  • 012C-0102002A
  • 11060102 EBFC JMP 0100
  • 0100-0104FFFC
  • 11060104 E97F00 JMP 0186
  • 0186-01060080 (too far for short!)
  • 0186-0107007F
  • 11060107 E9F5FE JMP FFFF
  • FFFF-010AFEF5

164
Các l?nh nh?y có di?u ki?n
  • Jxxx nhãn
  • Có g?n 40 menmonic khác nhau
  • Các l?nh nh?y di?u ki?n don ph? thu?c vào giá
    tr? c?a 1 c?.
  • JNZ/JNE - Nh?y n?u c? ZF 0, nghia là k?t qu?
    c?a phép toán tru?c dó khác không
  • JC - Nh?y n?u CF 1, nghia là câu l?nh tru?c dó
    l?p c? carry
  • JZ/JE
  • JNC

165
Các l?nh nh?y có di?u ki?n
  • T?t c? các l?nh nh?y có di?u ki?n ph?i là nh?y
    ng?n
  • kho?ng cách nh?y -128 to 127 bytes
  • T? h?p v?i l?nh nh?y không di?u ki?n d? có th?
    vu?t qua gi?i h?n này.
  • Các l?nh nh?y di?u ki?n kép ph? thu?c vào giá
    tr? c?a nhi?u c?
  • JB/JNAE
  • JNL/JGE

166
?ng d?ng c?a các l?nh nh?y có di?u ki?n
  • K?t h?p v?i JMP d? xây d?ng các c?u trúc l?p
    trình co b?n- C?u trúc di?u ki?n- C?u trúc
    l?p
  • Các l?nh nh?y thu?ng theo sau các l?nh làm thay
    d?i giá tr? c?a các c? tr?ng thái
  • CMP
  • TEST

167
C?u trúc di?u ki?n
  • mov ax,n
  • cmp ax,7
  • jz nhan1
  • l?nh 1
  • jmp nhan2
  • nhan1l?nh 2
  • nhan2l?nh 3

168
C?u trúc l?p
  • mov ax,n
  • nhan1 cmp ax,0
  • jz nhan2
  • l?nhi
  • sub ax,2
  • jmp nhan1
  • nhan2 l?nhk

169
C?u trúc di?u ki?n - AND
  • char n int w,x
  • if (ngt'A' wx)
  • whatever()
  • if(ngt'A'wx)
  • mov ah,n
  • cmp ah,'A'
  • jl nogo
  • mov ax,w
  • cmp ax,x
  • jne no_go
  • then-part
  • call whatever
  • nogo

170
C?u trúc di?u ki?n - OR
  • char n,k unsigned int w
  • if (nltgtk wlt10)
  • whatever()
  • if(nltgtkwlt10)
  • mov ah,n
  • cmp ah,k
  • jne then_
  • cmp w,10
  • ja end_if
  • then_
  • call whatever
  • end_if

171
L?nh LOOP
  • LOOP nhan
  • Gi?m CX di 1
  • N?u (CX) ltgt 0 thì JMP nhan. N?u không thì ti?p
    t?c th?c hi?n l?nh theo tr?t t? bình thu?ng
  • mov cx,9
  • nhan l?nh 1
  • l?nh 2
  • l?nh 3
  • loop nhan

172
LOOPZ/E và LOOPNZ/E
  • Các bi?n th? c?a LOOP
  • Giá tr? c?a c? ZF có th? làm k?t thúc s?m vòng
    l?p
  • Loop while ZF/equal CX!0
  • Loop while (NZ/ not equal) CX!0
  • Luu ý LOOP gi?m CX nhung không ?nh hu?ng d?n các
    c?
  • LOOPZ LOOPE
  • LOOPNZLOOPNE
  • Các l?nh trong vòng l?p có th? tác d?ng d?n c? ZF
    (CMP ?)

173
Chuong trình con
  • Chuong trình con trong ngôn ng? Assembly du?c g?i
    là Th? t?c (Procedure)
  • M?t th? t?c có th? du?c th?c hi?n nhi?u l?n
  • Có liên quan d?n stack- luu gi? Ð?a ch? quay
    v?- luu gi? giá tr? c?a các thanh ghi c?a vi x?

174
Stack ?
  • C?u trúc d? li?u LIFO ? RWM
  • - PUSH ghi d? li?u vào stack, - POP d?c d?
    li?u t? stack
  • (SSSP) tr? d?n d?nh c?a stack
  • (SSBP) truy c?p stack ng?u nhiên (không theo
    LIFO)

175
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_StackStack_Size
    which is one byte past the end of the stack array
  • This is the condition for an empty stack

176
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

177
How Does The Stack Work?
  • The stack grows backwards through memory towards
    the start of the stack segment
  • Push decrements stack pointerPop increments
    stack pointer

178
PUSH
  • PUSH ngu?n
  • Push ngu?n vào stack
  • PUSHF
  • Push thanh ghi c? vào stack
  • L?nh PUSH tru?c h?t s? gi?m SP di 2 r?i luu giá
    tr? c?a ngu?n vào v? tr? nh? du?c tr? b?i (SSSP)

179
Ví d? PUSH
  • PUSH AX

AX 0123
3C
09
A4
40
2C
FF
A2
23
2A
09
46
01
06
4C
SP0006
SS0340
180
POP
  • POP dích
  • Pop d? li?u t? d?nh stack vào dích
  • POPF
  • Pop d? li?u t? d?nh stack vào thanh ghi c?
  • L?nh POP tru?c h?t copy d? li?u du?c tr? b?i
    (SSSP) d?n dích r?i tang SP lên 2

181
Ví d? POP
3C
09
A4
40
2C
FF
A2
23
2A
09
46
01
06
4C
SP0006
SS0340
  • POP ES

3C
09
A4
40
2C
FF
A2
23
2A
09
46
01
06
4C
SP0008
SS0340
ES 0123
182
Tràn stack!
Stack Size 000C
SPFFFE
SS0340
  • Stack Overflow
  • Stack Underflow

Stack Size 000C
SP000D
SS0340
183
Th? t?c
  • Tên_Th?_t?c PROC ki?u
  • thân c?a th? t?c
  • RET quay v? chuong trình g?i
  • Tên_Th?_t?c ENDP
  • ki?u là NEAR ho?c FAR
  • ng?m d?nh là NEAR
  • M?t th? t?c có th? có nhi?u l?nh RET

184
L?nh CALL và RET
  • G?i m?t th? t?c (NEAR)
  • CALL Tên_Th?_t?c
  • push IP vào stack
  • copy d?a ch? c?a Tên_Th?_t?c vào IP
  • Tr? v? t? m?t th? t?c (NEAR)
  • RET
  • pop giá tr? ? d?nh stack vào IP

185
Th? t?c Far
  • G?i th? t?c (FAR)
  • CALL Tên_th?_t?c
  • l?n lu?t push CS và IP vào stack
  • copy d?a ch? c?a Tên_th?_t?c vào CS và IP
  • Tr? v? t? th? t?c (FAR)
  • RET
  • pop giá tr? t? d?nh stack l?n lu?t vào IP và CS

186
G?i ng?t
  • G?i ng?t là m?t l?i g?i th? t?c d?c biêt
  • FAR
  • Thanh ghi c? ph?i du?c b?o toàn
  • INT S? ng?t
  • Thanh ghi c? du?c push, TF và IF b? xoá
  • CS và r?I IP du?c push
  • Ð?a ch? c?a m?t chuong trình con ph?c v? ng?t
    (Vector ng?t) tuong ?ng v?i S? ng?t du?c copy vào
    CS và IP

187
Tr? v? t? ng?t
  • IRET
  • Tác d?ng c?a lênh
  • Giá tr? ? d?nh c?a stack du?c pop vào IP
  • Giá tr? ? d?nh c?a stack du?c pop vào CS
  • Giá tr? ? d?nh c?a stack du?c pop vào thanh ghi
    c?
  • Chuong trình b? ng?t ti?p t?c th?c hi?n du?ng nhu
    không có chuy?n gì x?y ra

188
Xu?t ký t? ra màn hình PC
  • Ng?t 21h
  • Ng?t này h? tr? r?t nhi?u d?ch v? trên PC
  • Nh?n d?ng d?ch v? b?ng s? d?ch v? (s? hàm). S?
    d?ch v? c?n du?c n?p voà thanh ghi AH
  • Tu? theo t?ng d?ch v?, có th? c?n thêm m?t s?
    d?i s? khác du?c n?p vào các thanh ghi xác d?nh
  • AH 2, DL Mã ASCII c?a ký t? c?n xu?t
  • Ký t? du?c hi?n th? t?i v? trí hi?n th?I c?a con
    tr?

189
Xu?t xâu ký t? ra màn hình PC
  • D?ch v? 09h c?a ng?t 21h
  • DX Ð?a ch? Offset c?a xâu (trong do?n d? li?u)
  • DS Ð?a ch? segment c?a xâu
  • Xâu ký t? ph?i k?t thúc b?ng ký t? ''
  • Ð? n?p d?a ch? offset c?a xâu vào DX, có th?
  • LEA DX, Tênxâu
  • MOV DX, OFFSET Tên xâu

190
Nh?p 1 ký t? t? bàn phím PC
  • D?ch v? 01h c?a 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 c?a ký t? dó
  • AL0 n?u ký t? du?c nh?p là ký t? di?u khi?n

191
Nhóm l?nh thao tác string
  • Chúng ta hi?u string là m?t m?ng byte ho?c t?
    n?m trong b? nh?
  • Các thao tác string
  • Sao chép
  • Tìm ki?m
  • Luu tr?
  • So sánh

192
Các d?c di?m
  • Ngu?n (DSSI), Ðích (ESDI)
  • DS, ES ch?a Ð?a ch? Segment c?a string
  • SI, DI ch?a Ð?a ch? Offset c?a string
  • C? hu?ng DF (0 Up, 1 Down)
  • DF 0 - Tang d?a ch? (trái qua ph?i)
  • DF 1 - Gi?m d?a ch? (ph?I qua trái)

193
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? (DSSI) d?n (ESDI)
  • Tang/Gi?m SI và DI 1 ho?c 2 giá tr?
  • N?u CX ch?a m?t giá tr? khác không
  • REP MOVSB ho?c REP MOVSW s? t? d?ng sao chép (CX)
    l?n và CX s? v? không

194
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

195
Ví d? T?nh ti?n các ô nh?
  • mov cx, 7
  • mov di, offset a9
  • mov si, offset a6
  • std l?p c? DF
  • rep movsb

SI
DI
a
196
Ví d?
  • pattern db "!_at_"
  • db 96 dup (?)
  • mov cx,96
  • mov si, offset pattern
  • mov di, offset pattern4
  • cld
  • rep movsb

DI
SI
!
_at_


a
197
Luu tr? string
  • STOSB, STOSW
  • Copy AL ho?c AX vào m?t m?ng byte ho?c word
  • Ðích (ESDI)
  • Tang ho?c Gi?m DI
  • ph? thu?c DF
  • Thu?ng du?c s? d?ng có ti?n t? REP và s? l?n l?p
    trong CX

198
Ví d?
  • arr dw 200 dup (?)
  • mov ax,50A0h
  • mov di,offset arr
  • mov cx,200
  • cld
  • rep stosw

DI
50
A0
AX
A0
50
A0
50
arr
199
N?p String
  • LODSB, LODSW
  • Byte ho?c word t?i (DSSI) du?c copy vào AL ho?c
    AX
  • SI tang ho?c gi?m 1 ho?c 2 giá tr? ph? thu?c DF
  • Thu?ng du?c dùng v?i STOSx trong m?t vòng l?p d?
    x? lý t?ng ph?n t? trong m?t m?ng

200
Ví d?
  • mov di, offset b
  • mov si, offset a
  • mov cx,30
  • cld
  • lp
  • lodsb
  • and al,0DFh
  • stosb
  • loop lp

201
Quét String
  • SCASB, SCASW
  • So sánh AL ho?c AX v?i byte ho?c word t?I
    (ESD
Write a Comment
User Comments (0)
About PowerShow.com