Tải bản đầy đủ (.doc) (28 trang)

BÀI TẬP LỚN MÔN: VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (531.49 KB, 28 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA: ĐIỆN TỬ
o0o
BÀI TẬP LỚN
MÔN: VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH
• Giáo viên hướng dẫn:
Dương Thị Hằng
• Nhóm sv thực hiện:
Nhóm 16: Ngô Xuân Vui
Lê Thị Mưa
Nguyễn Duy Mạnh


1
LỜI NÓI ĐẦU
Khoa học ngày càng phát triển mạnh mẽ, nhu cầu sử dụng những công nghệ ngày càng cao,
yêu cầu độ chính xác và năng suất hoạt động cao. Từ yêu cầu đó, con người cần phải sản xuất và
phát minh ra những công cụ, sản phẩm ứng dụng và phát triển ngành công ngệ lập trình.
Đi tiên phong thế hệ vi xử lý lập trình theo nhu cầu mong muốn con người, nhà sản xuất chip
vi xử lý Intel đã phát triển và chế tạo thành công chip 4004 vào năm 1971. Là bộ vi xử lý 4 bit đầu
tiên mở đầu cho kỷ nguyên thế hệ vi xử lý trong máy tính.
Một mốc son quan trọng nhất mà Intel đạt được đó là hãng đã sản xuất ra bộ vi xử lý mang
tên 8086 có độ rộng dữ liệu lên đến 16 bit với 29000 bóng bán dẫn được tích hợp bên trong. đây là
bộ vi xử lý mở đầu cho họ vi xử lý x86.
Bộ vi xử lý 8086 đã mang lại sự bùng nổ công nghệ với sự có mặt trong hầu hết các máy tính
ở thời ký này. Để hiểu rõ hơn về cấu tạo và cách ghép nối giữa bộ vi xử lý với các thiết bị ngoại vi,
chúng em xin trình bày một số ví dụ cụ thể trong bài báo cáo này.
Nhóm sv thực hiện:
Họ và tên Mã sinh viên
Lê Thị Mưa 1231050097


Ngô Xuân Vui 1231050160
Nguyễn Duy Mạnh 1231050117

2
Nhận xét và đóng góp ý kiến của giáo viên:






























Chúng em xin chân thành cảm ơn!
3
PHỤ LỤC:
BỘ CÔNG THƯƠNG
LỜI NÓI ĐẦU
PHỤ LỤC:
A.NỘI DUNG THỰC HIỆN
I.NỘI DUNG
II. MỤC ĐÍCH
B. CƠ SỞ LÝ THUYẾT
I.VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH
1.Khái niệm
a.Các bộ phậncủa cấu trúc máy tính :
b.phần cứng và phần mền
2.Cấu tạo và chức năng của 8086
a.Sơ đồ khối của 8086
b.Sơ đồ chân của 8086
C.CÁC THIẾT BỊ NGOẠI VI
I. IC 8255A
1. Sơ đồ chân và chức năng của mỗi chân
2.Chế độ hoạt động
II.IC GIẢI MÃ ĐỊA CHỈ 74273
III.IC GIẢI MÃ ĐỊA CHỈ 74LS139
IV.CẤU TẠO LED 7 THANH
D.MỘT SỐ VÍ DỤ
I.PHẦN LẬP TRÌNH HỢP NGỮ

1.Sơ đồ thuật toán
2.Code chương trình
II.PHẦN GHÉP NỐI BỘ NHỚ
1.Giải mã địa chỉ
2.Cơ chế chọn địa chỉ
III.GHÉP NỐI 8086 VỚI 8255
1.Ghép nối phần cứng
2.Sơ đồ thuật toán
3.Code chương trình
E.KẾT LUẬN
\
4
A. NỘI DUNG THỰC HIỆN
I. NỘI DUNG
- Thực hiện mố số ví dụ cụ thể để chúng ta hiểu rõ hơn về cấu trúc, tập lệnh và chức năng các
chân của bộ vi xử lý 8086.
- Một số ví dụ cụ thể như sau:
1. Ví dụ 1 Viết chương trình thực hiện nhập liên tiếp một dãy các ký tự khi nào gặp enter thì
kết thúc. Hiển thị dãy ký tự theo chiều ngược lại.
2. Ví dụ 2: Xây dựng mạch giải mã địa chỉ cho bộ nhớ gồm các vi mạch nhớ được bố trí như
sau:
ROM(32K x 8 bit) 00000H (Địa chỉ đầu của ROM)
Khoảng trống
RAM(64K x 8 bit)

RAM (32K x 8 bit)

FFFFFH (Địa chỉ đầu cuối RAM)
3. Ví dụ 3: Ghép 1 Led 7 đoạn Anodes chung (7SEG) với cổng PB, một nút bấm (Button) với
cổng PC. Viết chương trình điều khiển để bấm Button thì Led sáng nhấp nháy số 4, bình

thường LED sáng số 8
II. MỤC ĐÍCH
- Giúp mọi người biết và hiểu rõ hơn về cách ghép nối giưa vi xử lý 8086 và 8255
- Giúp mọi người biết và hiểu rõ hơn cách ghép nối bộ nhớ từ các vi mạch nhớ khác nhau tùy
theo yêu cầu đề bài.
- Hiểu rõ hơn về cấu trúc lập trình cũng như tập lệnh của bộ vi xử lý 8086.
5
B. CƠ SỞ LÝ THUYẾT
I. VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH.
1. Khái niệm
Vi xử lý là một bộ phận trung tâm của máy tính, nó có nhiệm vụ xử lý thông tin, vào ra dữ liệu,
điều khiển các thiết bị ngoại vi,… Một máy tính có cấu trúc bao gồm: chip vi xử lý trung tâm
(CPU), bộ nhớ ROM, RAM và các thiết bị ngoại vi có nhiệm vụ giao tiếp giữa máy tính với con
người.
Sơ đồ khối cấu trúc máy tinh như sau:
a. Các bộ phậncủa cấu trúc máy tính :
• Bộ vi xử lý (CPU- Central Processin Unit)
Với vai trò là bộ xử lý trung tâm, là đầu não của một máy tính, bộ vi xử lý phải thực thi
nhiều nhiệm vụ từ việc vào/ra dữ liệu, xử lý thông tin, tính toán số liệu, điều khiển các thiết bị
ngoại vi,….
• Bộ nhớ
- Bộ nhớ được chia thành RAM và ROM:
+ RAM (Random Access Memory): là bộ nhớ có thể ghi/đọc, có nghĩa là ta có thể đọc thông tin
từ bộ nhớ, xóa thông tin cũ trong bộ nhớ hoặc ghi thông tin mới vào bộ nhớ;
+ ROM (Read Only Memory) :dùng để chứa các chương trình điều khiển hệ thống như chương
trình để kiểm tra các thiết bị mỗi khi bật nguồn, chương trình khởi động máy… Nội dung bên trong
ROM không bị mất đi khi bị mất nguồn.
• Mạch ghép nối vào/ra
Mạch ghép nối vào/ra có nhiệm vụ tạo ra khả năng giao tiếp giữa hệ vi xử lý với thế giới bên ngoài.
Bao gồm các thiết bị như : thiết bị vào (bàn phím, chuột, máy quét….).thiết bị ra(màn hình, máy in,

… )
• Bus hệ thống
Gồm có:
+ Bus điều khiển:là các đương dây mang các tín hiệu điều khiển hoạt động hoặc phản ánh trạng
thái của các khối như /RD, /WR, /INT…
+ Bus dữ liệu là các đường dây mang số liệu mà vi xử lý đang trao đổi với thiết bị nhớ hoặc
thiết bị ra/vào.
+ Bus địa chỉ : mang thông tin về địa chỉ của ô nhớ hay một thiết bị vào/ra.
b. phần cứng và phần mền
• Phần cứng
Phần cứng (hardware) là thuật ngữ dùng để chỉ toàn bộ những thiết bị cơ khí, điện tử tạo nên
máy tính như các ổ đĩa, màn hình,…
6
• Phần mềm
Phần mềm (software) là thuật ngữ dùng để chỉ các chương trình máy tính, nó được thực thi
trên phần cứng bằng cách điều khiển sự hoạt động của phần cứng.
Các phần mền được chia thành các loại sau:
Hệ điều hành như DOS, Windows,….
Trình tiện ích như NC, NU, BKAV,…
Chương trình ứng dụng như MS Word, Protel,……
Ngôn ngữ lập trình pascal, C, C++, Java,….
2. Cấu tạo và chức năng của 8086
a. Sơ đồ khối của 8086
- Bên trong bộ vi xử lý 8086 bao gồm 2 khối chính:
+ Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh
+ giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đẩm bảo việc trao đổi thông tin giữa
8086 với các linh kiện bên ngoài.
• Khối thực hiện lệnh (EU)
Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh. EU bao gồm:
- Bộ xử lý số học và logic(ALU - Arithmatic Logiccal Unit) là nơi thưc hiện các lệnh số học và

lệnh logic.
- Các thanh ghi đa năng:
+ Thanh ghi AX: đây là thanh ghi chứa, kết quả của các thao tác thường được chứa ở đây. Nếu
kết quả là 8 bit thì thanh ghi AL sẽ được sử dụng
+ Thanh ghi BX: đây là thanh ghi cơ sở, thương được chứa địa chỉ cơ sở của một bảng khi sử
dụng lệnh XLAT.
+ Thanh ghi CX: đây là thanh ghi đếm, nó thường được chứa số lần lặp lại trong trường hợp
dùng lênh LOOP, còn CL thì thường được chứa số lần quay hay dịch bít của các thanh ghi.
+ Thanh ghi DX: đây là thanh ghi dữ liệu, nó thường được sử dụng cùng với thanh ghi AX để
thực hiện các phép nhân hay chia của các số 16 bit. DX còn được sử dụng để chứa địa chỉ
các cổng trong các lệnh vào/ra dữ liệu trực tiếp.
- Thanh ghi cờ F là thanh ghi gồm 16 bit nhưng chỉ sử dụng 9bit còn lại không sử dụng
7
Các bit cờ chia thành hai loại:
* Các cờ trạng thái: có 6 cờ trạng thái là C, P, A, Z, S và O. Các cờ trạng thái này được
thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic.
+ C (Carry): cờ nhớ;
+ P (Parity): cờ chẵn lẻ;
+ A (Auxiliary): cờ nhớ phụ;
+ Z (Zero): cờ rỗng,
+ S (Sign): cờ dấu;
+ O (Overflow): cờ tràn,
* Các cờ điều khiển: có 3 cờ T, I, D. Các cờ này được thiết lập bằng 1 hoặc xóa bằng 0 thông
qua các lệnh để điều khiển chế độ làm việc của bộ vi xử lý.
+ T (Trap): cờ bẫy,
+ I (Interrupt): cờ ngắt;
+ D (Direction): cờ hướng
- Có 3 đoạn ghi con trỏ (IP, BP, SP) và 2 đoạn ghi chỉ số (SI, DI). Các đoạn ghi này ngầm định
được sử dụng làm các đoạn ghi lệch cho các đoạn tương ứng:
+ IP (Instruction Pointer), BP (Base Pointer ), SP (Stack Ponter), SI (Source Index): DI

(Destinaton Index).
- Khối điều khiển (CU- Control unit). Có nhiệm vụ tạo ra các tín hiệu điều khiển các bộ phận bên
trong và bên ngoài CPU
.Khối giao tiếp bus (BIU)
Khối giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đảm bảo việc trao đổi thông tin
giữa 8086 với các linh kiện bên ngoài. BIU gồm :
- Một bộ cộng để tạo địa chỉ vật lý 20 bit từ các thanh ghi 16 bit.
- Bốn thanh ghi đoạn 16 bit gồm CS, DS, SS và ES để giúp 8086 truy cập tới các đoạn trên bộ
nhớ.
+ Thanh ghi đoạn mã CS (Code Segment),.
+ Thanh ghi đoạn dữ liệu DS (Data Segment).
+ Thanh ghi đoạn dữ liệu phụ ES (Extra Segment).
+ Thanh ghi đoạn ngăn xếp SS (Stack Segment). .
- Mạch logic điều khiển có nhiệm vụ đảm bảo giao tiếp giữa 8086 với thiết bị bên ngoài.
- Hàng đợi lệnh có độ dài 6 byte là nơi chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý.
8
b. Sơ đồ chân của 8086
Vi xử lý 8086 được thiết kế để hoạt động một trong hai chế độ, tùy thuộc vào mức điện áp đặt ở
chân số 33 (chân MN/MX):
- Chế độ tối thiểu (chế độ MIN) đươc thiết lập nếu điện áp ở chân số 33 ở mức 5V
Chế độ tối đa (chế độ MAX) được thiết lập nếu điện áp ở chân số 33 ở mức 0V
Vi xử lý 8086 có 20 đường địa chỉ từ A0 đến A19 tong đó 16 đường dây địa chỉ thấp từ A0 đến A15
được ghép kênh dữ liệu từ D0 đến D15 trên các chân từ AD0 đến AD15 ; còn 4 đường dây địa chỉ cao
nhất từ A16 đến A19 được ghép kênh với tín hiệu trạng thái từ S3 đến S6 trên các chân A16/S3 đến
A19/S6.
- Vi xử lý 8086 có 16 đường dây dữ liệu từ

D
o
đến D

15
được ghép kênh với 16 đường địa chỉ thấp
từ D
0
đến D
15
. Khi hoạt động ở chu kỳ bus dữ liệu thì các đường dây này mang thông tin về dữ
liệu, là dữ liệu đọc ra hay vào bộ nhớ.
-
Bốn đường dây địa chỉ cao nhất từ A
16
đến A
19
của 8086 cũng được ghép kênh , nhưng trong
trường hợp này nó được ghép kênh với các tín hiệu trạng thái từ S
3
đến S
6
. Các bít trang thái
này được đưa ra cùng thời điểm với các dữ liệu được truyền trên các chân AD
0
đén AD
15.
-
READY: Tín hiệu báo cho CPU biết tình trạng sẵn sàng của thiết bị ngoại vi hay bộ nhớ. Khi
READY = 1 thì CPU thực hiện đọc/ghi dữ liệu. Khi các thiết bị ngoại vi hay bộ nhớ có tốc độ
chậm, chúng có thể đưa tín hiệu READY = 0 để báo cho CPU biết mà chờ chúng
- ALE: [I] Address Latch Enable. Xung cho phép chốt địa chỉ. Khi ALE = 1 có nghĩa là trên các
chân ghép kênh AD có địa chỉ của thiết bị vào/ra hoặc ônhớ. Khi CPU chấp nhận treo chân này
không ở trạng thái trở kháng cao mà ALE = 0.

- : [O] Data bus Enable. Kích hoạt các bộ đệm bus dữ liệu.
- : Chọn bộ nhớ (= 0) hoặc thiếtbị vào/ra (= 1) làm việc với CPU. Khi đó trên bus địa chỉ sẽ
có địa chỉ tương ứng của các thiết bị đó. Chân này ở trạng thái trở kháng cao khi CPU chấp
nhận treo.
- :[O] Data Transmit/Receive. Tín hiệu này cho biết bus dữ liệu đang vận chuyển dữ liệu
vào CPU hay ra khỏi CPU. Tín hiệu này cũng dùng để điều khiển các bộ đệm 2 chiều của bus
dữ liệu.
- : Dùng để báo rằng đang truy cập năng cao hay băng thấp của bộ nhớ
- :[O] Read signal. Xung cho phép đọc. Khi RD = 0 thì bus dữ liệu nhận dữ liệu từ bộ nhớ
hoặc thiết bị ngoại vi.
9
- INTR: [I] Interrupt request. Khi có yêu cầu ngắt (INTR = 1) mà cờ cho phép ngắt IF = 1 thì
CPU kết thúc lệnh đang làm dở, sau đó đi vào chu kỳ chấp nhận ngắt và đưa ra bên ngoài tín
hiệu INTA = 0.
- :[I] Tín hiệu tại chân này được kiểm tra bởi lệnh WAIT. Khi CPU thực hiện lệnh WAIT
mà lúc đó tín hiệu TEST = 1 thì nó sẽ chờ cho đến khi tín hiệu TEST = 0 thì mới thực hiện lệnh
tiếp theo.
- NMI: [I] None-Maskable Interrupt. Tín hiệu yêu cầu ngắt không che được.
- RESET: Dùng để thiết lập lại phần cứng cho CPU. Chuyển RESET xuống mức logic 0 dùng để
khởi tạo các thanh ghi nội của vi xử lý và khởi tạo chương trình con phục vụ thiết lập hệ thống.
c: Các hàm ngắt và tập lệnh của 8086
• Tập lệnh của 8086
+ Lệnh XCHG: toán hạng đích và nguồn được đổi lẫn cho nhau
XHCG đích, nguồn
+ Lệnh XLAT: XLAT nhãn_nguồn
+ Lệnh ADD, SUB: ADD đích,nguồn - cộng nguồn vào đích
+ Lệnh ADC: cờ nhớ được cộng vào toán hạng đích và nguồn
ADC đích,nguồn
+ Lệnh DIV: thực hiện phép chia không dấu, toán hạng nguồn có thể là
một ô nhớ hay đoạn ghi. Nếu toán hạng nguồn là 8 bit thì thương số nằm

trong AL, số dư nằm trong AH; nếu toán hạng nguồn là 16 bit, thì thương
số nằm trong AX còn số dư nằm trong DX
DIV nguồn;
+ Lệnh IDIV (integer divide): thực hiện phép chia có dấu.
IDIV ngu n;ồ
+ Lệnh IMUL: thực hiện phép nhân có dấu.
IMUL ngu n;ồ
+ Lệnh INT : dùng để gọi các hàm của DOS và BIOS ;
Cú pháp : int 21h
+ Lệnh MOV: chuyển dữ liệu từ toán hạng nguồn vào toán hạng đích
MOV ích, ngu nđ ồ
+ Lệnh OUT: xuất dữ liệu từ đoạn chứa ra cổng
OUT c ng,ộ đoạn_ch aứ
+ Lệnh IN: đọc dữ liệu từ cổng vào đoạn ghi.
IN đoạn ghi, c ngổ
+ Lệnh NEG (NEGate): toán hạng đích bị trừ đi từ số toàn chữ số 1
(0FFH với kiểu byte và 0FFFFH với kiểu từ).
NEG ích;đ
+ Lệnh SBB (SuBtract with Borrow): Trừ có nhớ. Trừ toán hạng đích cho
toán hạng nguồn và nếu CF=1 thì trừ kết quả nhận được cho 1.
SBB ích, ngu nđ ồ ;
+ Lệnh MUL(Multiply): thực hiện phép nhân không dấu. Nhân nội dung
của đoạn AL với toán hạng nguồn. Nếu nguồn kiểu byte thì tích chứa
trong AX, nếu nguồn là kiểu từ thi tích chứa trong DX:AX
MUL ngu nồ ;
10
+ Lệnh JNZ: nếu KQ của lệnh trước đó khác 0 thi thực hiện lệnh nhảy
đến nhãn_đích, ngược lại thì thực hiện lệnh kế tiếp sau đó.
JNZ nhan_dich;
+ Lệnh JA, JG: nhảy nếu lớn hơn

+ Lệnh JB, JL : nhảy nếu nhỏ hơn.
+ Lệnh JNA, JNG: nhảy nếu không lớn hơn.
+ Lệnh JE: nhảy nếu bằng.
+ Lệnh JC : nhảy nếu cờ CF=1.
+ Lệnh nhảy không điều kiện (JuMP) : nhảy đến nhãn_nguồn khi gặp
lệnh này.
JMP nhan_nguon ;
+ Lệnh CMP (CoMPare) : so sánh 2 toán hạng bằng cách trừ 2 toán hạng
cho nhau mà không lưu lại kết quả.
CMP dich, nguon ;
+ Lệnh lặp : lặp lại nhãn_nguồn khi gặp lệnh này.
LOOP nhan_nguon ;
+ Các lệnh AND, OR, XOR và TEST
AND dich,nguon ;AND đích với nguồn, kết quả lưu ở
đích
OR dich,nguon ;OR đích với nguồn, kết quả lưu ở đích
XOR dich,nguon ;XOR đích với nguồn, kết quả lưu ở
đích
TEST dich,nguon ;AND đích với nguồn, kết quả không
lưu lại
+ Lệnh dịch: SHL/SAL dich,1 ;dich sang trai 1 bit
SHL/SAL dich,CL ; dich sang trai nhieu
bit
SHR dich,1 ; dich sang phai 1 bit
SHR dich,CLL ; dich sang phai nhieu bit
+ Lệnh quay: ROL/ROR dich,1 ; quay đích sang trái/phải 1 bit
ROL/ROR dich,CL ; quay đích sang trái/phải n bit,
với CL=n
RCL/RCR dich,1 ; quay đích sang trái/phải 1 bit
RCL/RCR dich,CL ; quay đích sang trái/phải n bit,

với CL=n
+ Lệnh HLT (HaLT): đưa bộ vi xử lý vào trạng thái dừng để chờ ngắt
ngoài. Dạng lệnh: HLT
+ Lệnh LOCK: khóa bus trong môi trường có nhiều bộ vi xử lý.
+ Lệnh NOP: không thực hiện một thao tác nào.
+ Lệnh STI: IF được thiết lập 1.
+ Lệnh WAIT: Bộ vi xử lý ở trạng thái chờ cho đến khi ngắt ngoài
+ Lệnh PUSH: cất dữ liệu vào ngăn xếp, giảm SP đi 2.
PUSH nguon;
+ Lệnh PUSHF: chuyển đoạn ghi cờ vào ngăn xếp.
PUSHF;
11
+ Lệnh POP: lấy dữ liệu ra khỏi ngăn xếp và đưa vào toán hạng đích.
POP dich;
+ Lệnh POPF: chuyển nội dung của 2 byte từ đinh ngăn xếp vào đoạn
ghi cờ, sau đó tăng con trỏ ngăn xếp lên 2.
POPF;
+ Lệnh CALL: gọi thủ tục.
CALL nhan;
+ Lệnh RET: trả lại điều khiển khi thủ tục được thực hiện xong.
RET;
• Các hàm ngắt 21h của 8086
- Hàm 1: là hàm chờ đọc vào 1 ký tự từ thiết bị vào ra chuẩn(bàn phím).
Kết quả được lưu vào trong AL.
cú pháp: MOV AH,1
INT 21H
- Hàm 2 : là hàm hiển thị nội dung thanh ghi DL lên màn hình hoặc thi
hành các chức năng điều khiển.
Cú pháp: MOV AH,2
MOV DL,’A’

Int 21H
- Hàm 4CH : là hàm kết thúc chương trình hiện tại và trả điều khiển về cho
chương trình gọi nó.
Cú pháp : MOV AH,4CH
INT 21H
- Hàm 9 : Là hàm hiển thị ra màn hình một chuỗi kí tự
Cú pháp : MOV AX,@DATA
MOV DS,AX ;khoi tao thanh ghi
doan du lieu DS
MOV AH,9
LEA DX,’chuoi ki tu’
INT 21H
• Cấu trúc chương trình lập trình cho 8086
model small ;khai bao kieu bo nho la small
.stack 100h ;khai bao kich thuoc ngan xep la
100h
.data ;khai bao doan du lieu
;khai báo các biến, các hằng ở đây
.code ;khai bao doan ma
Main proc
;
các lệnh chương trình chính
Main endp
;các hàm và thủ tục
End main
12
C. CÁC THIẾT BỊ NGOẠI VI
I. IC 8255A
1. Sơ đồ chân và chức năng của mỗi chân
- Trên thị trường và nghiên cứu chúng ta chỉ nghiên cứu loại đóng gói

dạng DIP 40 chân của IC 8255A:
- Các chân 14, 15, 16, 17, 13, 12, 11, 10: tương ứng theo thứ tự từ PC0
đến PC7. Đây là cổng giao tiếp dữ liệu 8 bít PC, khi cần thiết, nó có thể tách
thành 2 phần PC cao từ bít PC7 đến PC4 và PC thấp từ bít PC0 đến PC3
- Các chân 4, 3, 2, 1, 40, 39, 38, 37: tương ứng với cổng PA từ PA0 đến
PA7. Đây là cổng giao tiếp dữ liệu 8 bit vào/ ra PA. Tùy theo thanh ghi điều
khiển được cài đặt mà cổng này có thể xuất dữ liệu ra hoặc nhận dữ liệu vào
- Các chân từ 18 đến 25: tương ứng với cổng PB từ PB0 đến PB7 .
Tương tự như cổng PA, cổng PB cũng có thể đưa dữ liệu 8 bít ra hoặc vào
bằng cách thiết lập giá trị của thanh ghi điều khiển.
- Các chân từ 27 đến 34 : tương ứng theo thứ tự từ D7 đến D0 - Bus dữ
liêu(2 chiều). Bus dữ liệu 2 chiều này được nối tới các tín hiệu tương ứng
của Vi xử lý để trao đổi dữ liệu vào/ra do chip 8086 xử lý
- Chân 35: là chân Reset - khởi tạo trạng thái ban đầu của IC 8255. Nếu
đặt mức này lên mức 1 thì IC bị RESET lại từ đầu. để mạch có thể chạy
được, chúng ta phải đặt chân này về mức 0V – GND.
- Chân 6: chân /CS - Tín hiệu chọn vi mạch. Đây là tín hiệu tích cực ở
mức thấp 0v, vì vây chúng ta phải đặt chân này ở mức thấp để chọn IC 8255
hoạt động. nhờ vậy, chân này được sử dụng để kết hợp với mạch giải mã địa
chỉ để Vi xử lý điều khiển nó hoạt động đúng yêu cầu.
- Chân 5: chân /RD (Read)- là chân tín hiệu cho phép đọc.
- Chân 36: chân /WR(Write) – là chân tín hiệu cho phép ghi.
- Chân 9 và 8: tương ứng với chân tín hiệu địa chỉ A0 – A1, 2 chân này
được nối với 2 bít được tách ra từ bộ tách địa chỉ của 8086, 2 chân này dùng
để giải mã cho các cổng của 8255 với quy luật sau:
+ A1A0 là 00: mã hóa cho cổng PA
+ A1A0 là 01: mã hóa cho cổng PB
+ A1A0 là 10: mã hóa cho cổng PC
+ A1A0 là 11: mã hóa cho thanh ghi điều khiển
13

Chính vì vậy, để chọn đúng vị trí cổng chúng ta phải đưa 2 bít bất kì được
tách ra từ bộ tách tín hiệu địa chỉ sao cho 2 chân này cũng được mã hóa đúng
như quy luật của A1, A0 trên 8255
2. Chế độ hoạt động
Tùy thuộc vào đoạn ghi điều khiển khi khởi tạo mà vi mạch có thể hoạt
động ở các chế độ 0, 1, 2 khác nhau, chiều của các cổng A, B, C có thể ra
hoặc vào.
Thanh ghi điều khiển gồm có 8 bit, mỗi bít có các chức năng khác nhau:
1 A6 A5 A4 A3 A2 A1 A0
+ Bit A6 và A5 dùng để chọn chế độ nhóm A
• Nếu A6 A5 là 00 thì chọn chế độ 0
• Nếu A6 A5 là 01 thì chọn chế độ 1
• Các trường hợp khác sẽ không xác định
+ Bít A4: chọn chiều cho cổng A4,
• Nếu A4=0: cổng A4 sẽ xuất dữ liệu ra.
• Nếu A4=1: cổng A4 sẽ nhận dự liệu bên ngoài vào
+ Bít A3: chọn chiều ra/vào cho 4 bit cao của cổng PC
• Nếu A3=0 thì cho phép cổng PC cao xuất dữ liệu ra
• Nếu A3=1 thì cho phép cổng PC cao nhận dữ liệu
+ Bít A2: chọn chế độ nhóm B
• Nếu A2=0 thì chọn chế độ 0
• Nếu A2=1 thì chọn chế độ 1
+ Bít A1: chọn chiều ra/vào cho cổng PB
• Nếu A1=0 thì cho phép cổng PB xuất dữ liệu ra
• Nếu A1=1 thì cho phép cổng PB nhận dữ liệu
+ Bít A0: chọn chiều ra/vào cho 4 bit thấp của cổng PC
• Nếu A0=0 thì cho phép cổng PC thấp xuất dữ liệu ra
• Nếu A0=1 thì cho phép cổng PC thấp nhận dữ liệu
VD: để chọn chế độ nhóm A là chế độ 0, nhóm B là chế độ 0, cổng PA,
PB xuất dữ liệu, cổng PC nhận dữ liệu , ta cài đặt thanh ghi điều khiển như

sau:
Mov al, 100010001B
Out DK, al
Chế độ 0:
+ các cổng A, B, C được sử dụng độc lập với nhau.
+ Cổng A, B, C có thể vào hoặc ra tùy vào đoạn ghi điều khiển
- Chế độ 1: chế độ này được gọi là chế độ vào/ra đột cửa hay đối thoại với
các bit của cổng C. Các cổng A, B, C được chia thành 2 nhóm:
+ Nhóm A gồm cổng A để trao đổi dữ liệu và cổng C cao để đối thoại với
Vi Xử Lý và thiết bị ngoài.
+ Nhóm B gồm cổng B để trao đổi dữ liệu và cổng C thấp để đối thoại với Vi
Xử Lý và thiếu bị ngoài
II. IC GIẢI MÃ ĐỊA CHỈ 74273
Cấu tạo bên trong và chức năng các chân:
14
IC 74273 là IC số được tích hợp bỏi 8 con flip-flop loại D lắp theo
kiểu đồng bộ xung đồng hồ và chân clear. IC gồm có 20 chân trong đó:
+ Chân 20 nối với Vcc nằm ở dải 4,75 đến 5,25 Volt
+ Chân 10 nối với Mass
+ Chân 1 là chân Clear (MR)
+ Chân 11 là chân xung đồng hồ (CP)
+ Các chân 3, 4, 7, 8, 13, 14, 17, 18 là chân tín hiệu vào nối với các
dây tín hiệu đa hợp của Vi Xử Lý.
+ Các chân 2, 5, 6, 9, 12, 15, 16, 19 là các chân tín hiệu địa chỉ được
tách ra.
- Do nó được tích hợp bởi 8 con FF_D nên mỗi IC chỉ có thể tách được 8
đương địa chỉ đa hợp cua 8086. Vì vậy mạch cần 2 con IC 74273 để tách
hết 16 đường địa chỉ của 8086.
- Tùy theo đề bài yêu cầu mà các đầu ra này được sử dụng với mục đích
khác nhau, các chân này được nối với mạch giải mã địa chỉ đưa vào chân

CS của 8255 và dành ra 2 bit để mã hóa cho các cổng của 8255, 2 chân
này được nối vào chân A1, A0 của 8255
III. IC GIẢI MÃ ĐỊA CHỈ 74LS139
sơ đồ cấu tạo bên trong và chức năng các chân của IC 74LS139
15

- IC 74LS139 là IC giải mã 2 bít với các đầu ra tích cực ở mức âm. IC này
được đóng gới dạng DIP 16 chân. Bên trong IC này được tích hợp 2 bộ
giải mã 2 bit với chức năng các chân như sau:
o Chân 1 (1G) và 15(2G): là 2 chân chọn chip của 2 bộ giải
mã tích cực ở mức thấp, nghĩa là, để cho phép bộ giải mã
nào hoạt động thì chân G tương ứng của bộ đó đặt ở mức
0V.
o Chân 2, 3 và 14, 13: là 2 chân tín hiệu cần giải mã vào
tương ứng của 2 bộ giải mã.
o Chân 4, 5, 6, 7: là các chân tín hiệu ra Y0, Y1, Y2, Y3 của
bộ giải mã thứ nhất
o Chân 12, 11, 10, 9: là các chân tín hiệu ra của bộ giải mã
thứ hai
o Chân 8 (GND) và chân 16 (Vcc): là 2 chân nguồn nuôi
chip.
- Cơ chế mã hóa như sau: nếu 2 chân tín hiệu đầu vào B,A được đặt mưc
logic tương ứng là:
o 00: thì chân Y0 ở mức logic thấp(0v), các chân ra còn lại
ở mức cao.
o 01: thì chân Y1 ở mức logic thấp(0v), các chân ra còn lại
ở mức cao.
o 10: thì chân Y2 ở mức logic thấp(0v), các chân ra còn lại
ở mức cao.
o 11: thì chân Y3 ở mức logic thấp(0v), các chân ra còn lại

ở mức cao
IV. CẤU TẠO LED 7 THANH
- LED 7 đoạn là loại LED được tích hợp bởi 8 LED đơn sắc sắp xếp thành
hình số 8 và 1 dấu chấm phía dưới.
Có 2 loại LED 7 đoạn:
+ Chung Anode: các LED tích hợp bên trong được mắc nối chung cực
Anot (CA).
+ Chung Cathode: các LED tích hợp bên trong mắc nối chung cực
Katot (CC).
16

Chung cathode chung Anode LED 7 đoạn loại
CA
Hoat động:
- Đối với loai LED mắc theo kiểu Anot chung thì chúng ta cấp nguồn Vcc
vào chân Anot (chân 8). Để có thể hiển thị các chữ số như mong muốn thì
chúng ta phải nối các chân a, b, c, d, e, f, g với mass tương ứng với chữ số đó.
VD: số 1 thì chúng ta nối chân b(6) và c(4) với mass
Số 2 thi chúng ta nối chân a(7), b(6), g(10), e(1) và d(2) với mass.
- Đối với loai mắc theo kiểu Katot chung thi chúng ta nối chân Katot (8)
với mass. Để có thể hiển thị các chữ số như mong muốn thì chúng ta phải
nối các chân a, b, c, d, e, f, g với Vcc tương ứng với chữ số đó.
VD: số 1 thì chúng ta nối chân b(6) và c(4) với Vcc
Số 2 thi chúng ta nối chân a(7), b(6), g(10), e(1) và d(2) với Vcc
17
D. MỘT SỐ VÍ DỤ
I. PHẦN LẬP TRÌNH HỢP NGỮ
CHỦ ĐỀ: Viết chương trình thực hiện nhập liên tiếp một dãy các ký tự
khi nào gặp enter thì kết thúc. Hiển thị dãy ký tự theo chiều
ngược lại.

1. Sơ đồ thuật toán.
2. Code chương trình
.model small
.stack 100h
.data

tb1 db 10,13,"nhap vao day ki tu: $"
tb2 db 10,13," day vua nhap theo chieu nguoc lai: $"
tb3 db 10,13,"ban chua nhap ki tu nao: $"
18
.code
main proc

mov ax,@data
mov ds,ax
mov ah,9
lea dx,tb1
int 21h
mov cx,0
nhap:
mov ah,1
int 21h
cmp al,0dh
je hienthi
push ax
inc cx
jmp nhap
hienthi:
cmp cx,0
je thongbao


mov ah,9
lea dx,tb2
int 21h
mov ah,2
nguoc:
pop dx
int 21h
loop nguoc

jmp thoat

thongbao:
mov ah,9
lea dx,tb3
int 21h


thoat:
mov ah,4ch
int 21h

end main
II. PHẦN GHÉP NỐI BỘ NHỚ
19
CHỦ ĐỀ: Xây dựng mạch giải mã địa chỉ cho bộ nhớ gồm các vi mạch
nhớ được bố trí như sau:
ROM(32K x 8 bit) 00000H (Địa chỉ đầu của ROM)
Khoảng trống
RAM(64K x 8 bit)


RAM (32K x 8 bit)

FFFFFH (Địa chỉ đầu cuối RAM)
1. Giải mã địa chỉ
Theo giả thiết, từ địa chỉ đầu là 00000H đến địa chỉ cuối là FFFFFH
ta suy ra, bộ nhớ cần thiết kế có dung lượng 1MB. Mặt khác, bộ nhớ có
cấu trúc 1 ROM (32Kx8), 1 RAM (64Kx8) và 1 RAM (32Kx8) , tổng
dung lượng ROM và RAM là 128KB nên khoảng trống cần tìm có dung
lượng 896KB.
Từ giả thiết đó ta thiết lập bảng giải mã địa chỉ cho từng vi mạch nhơ
như sau
Dung
lượng
A
19
A
18
A
17
A
16
A
15
A
1
4
A
1
3

A
12
A
11
A
10
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0 Địa chỉ
ROM
32Kx8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 07FFF

Khoảng
trông
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 08000
1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 E7FFF
RAM1
64Kx8
1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E8000
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 F7FFF
RAM2
32Kx8
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F8000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFFF
- Để có thể chọn được chính xác địa chỉ của từng vi mạch nhớ hoạt động,
chúng ta sẽ dựa vào đặc điểm của dải địa chỉ của từng vi mạch nhớ đó.
Từ bảng giải mã địa chỉ cho từng vi mạch nhớ trên, chúng ta nhận thấy:
o Đối với vi mạch nhớ ROM (32Kx8), có 5 bit cao nhất từ A15
đến A19 đều có mức logic không đổi là 0, vì vậy ta sẽ sử dụng 5
bit này để mã hóa cho nó.
 Ta sẽ đưa 5 bit này qua cổng OR với đầu ra nối với chân Chọn
chip CE của vi mạch nhớ ROM (32Kx8) này.
o Đối với khoảng trống (896 KB) có dải địa chỉ từ 01000H đến
F7FFFH, chúng ta sẽ bỏ qua dải địa chỉ này.
o Đối với 2 vi mạch nhớ RAM 64K và 32K, chúng đều có 3 bít cao
nhất từ A17 đến A19 đều có mức Lgic không đổi là 1, vì vậy ta
sẽ dùng 3 bit này để mã hóa cho 2 vi mạch nhớ RAM, ta đưa 3
20
bit này qua cổng NAND với đầu ra đưa vào chân Chip Enable
của IC giải mã 74HC139. Mặt khác, chúng ta thấy có 2 bit A16
và A15 của mỗi vi mạch nhớ đều nhận một giá trị khác nhau, nên
ta sẽ đưa 2 bit nào vào 2 chân B và A tương ứng để mã hóa cho

từng vi mạch nhớ như sau: nếu 2 bit A16A15 nhận giá trị:
 00: thì bỏ qua vì thuộc dải địa chỉ của khoảng trống
 01 hoặc 10: thì chọn vi mạch nhớ RAM1 64Kx8
 11: thì ta chọn vi mạch nhớ RAM2 32Kx8.
 Sơ đồ ghép nối bộ nhớ như sau:
D0
D7
A0
A15
D0
D7
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
D1
D2
D3
D4
D5

D6
D1
D2
D3
D4
D5
D6
A0
A14
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A0
A14
A1
A2
A3
A4
A5
A6

A7
A8
A9
A10
A11
A12
A13
D0
D7
D1
D2
D3
D4
D5
D6
A0
10
A1
9
A2
8
A3
7
A4
6
A5
5
A6
4
A7

3
A8
25
A9
24
A10
21
A11
23
A12
2
A13
26
A14
27
CE
20
OE
22
VPP
1
D0
11
D1
12
D2
13
D3
15
D4

16
D5
17
D6
18
D7
19
ROM 32K
27C256
A0
10
A1
9
A2
8
A3
7
A4
6
A5
5
A6
4
A7
3
A8
25
A9
24
A10

21
A11
23
A12
2
CE
20
WE
27
OE
22
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
A13
26
A14

1
RAM 32K
62256
A0
10
A1
9
A2
8
A3
7
A4
6
A5
5
A6
4
A7
3
A8
25
A9
24
A10
21
A11
23
A12
2
CE

20
WE
27
OE
22
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
A13
26
A14
1
A15
28
RAM 64K
62257
U1

OR_7
A
2
Y0
4
B
3
Y1
5
Y2
6
E
1
Y3
7
U2:A
74ALS139
A15
A16
A15
A16
A17
A18
A19
U3
NOT
M/IO
U4
NAND_4
A17

A18
A19
M/IO
WR
RD
WR
RD
RD
VPP
2. Cơ chế chọn địa chỉ
Kết hợp giữa bảng gải mã địa chỉ và nhìn vào sơ đồ ghép nối bộ nhớ, ta
thấy nguyên lý chọn tưng vi mạch nhớ như sau:
21
- Nếu 5 bit A19, A18, A17, A16 và A15 nhận mức logic là 0 và các bít còn
lại từ A14 đến A10 lần lượt nhận các giá trị từ 000.0000.0000 đến
111.1111.111 thì đầu ra của cổng OR cũng như chân CE0 sẽ tích cực ở
mức logic 0, và cho phép ROM 32K hoạt động, đồng thời đầu ra của
cổng NAND sẽ tích cực ở mức 1, làm cho IC giải mã 74HC139 không
làm việc, tất cả đầu ra đểu ở mức logic cao, làm vô hiệu hóa các vi mạch
còn lại.
- Tương tự đối với 2 vi mạch RAM, nếu 3 bit đầu A19,A18 và A17 ở mức
1 thì đầu ra của cổng OR ở mức cao làm vô hiệu hóa vi mạch nhớ ROM
32K, đồng thời đầu ra của cổng NAND sẽ ở mức thấp, nó sẽ làm cho
chip giải mã 74HC139 hoạt động. lúc này 2bit A16 và A15 sẽ mã hóa
cho đầu ra tương ứng như sau:
o 00: đầu ra Y0=0; Y1=Y2=Y3=1 – bỏ qua địa chỉ này
o 01: đầu ra Y1=0; Y0=Y2=Y3=1 – CE1=0 - cho phép RAM
64KB hoạt động
o 10: đầu ra Y2=0; Y1=Y0=Y3=1 - CE1=0 - cho phép RAM
64KB hoạt động

o 11: đầu ra Y3=0; Y1=Y2=Y0=1 – CE2=0 – cho phép RAM
32KB hoạt động
 như vậy, ở đầy để mã hóa cho vi mạch nhớ RAM 64KBx8, 2 bit
A16 và A15 sẽ nhận 2 giá trị là 01 và 10. Tương ứng với đầu ra
Y1 hoặc Y2 ở mức logic thâp, vì vậy ta sẽ cho 2 đầu ra nàu vào
cổng OR với đầu ra nối với chân CE1 của RAM 64K.
III. GHÉP NỐI 8086 VỚI 8255
CHỦ ĐỀ : Ghép 1 Led 7 đoạn Anodes chung (7SEG) với cổng PB, một
nút bấm (Button) với cổng PC. Viết chương trình điều khiển để
bấm Button thì Led sáng nhấp nháy số 4, bình thường LED
sáng số 8
1. Ghép nối phần cứng
Sơ đồ tổng quát ghép nối 8086 với 8255 và thiết bị ngoại vi:
22
- Từ yêu cầu mà đề bài đưa ra, chúng ta sẽ kết nối LED 7 thanh với các
chân tín hiệu dữ liệu đưa tới cổng PBcủa 8255, và một nút bấm đưa vào
cổng C, ở đây mình đưa vào chân PC7
- Để hiểu được quá trình hoạt động, chúng ta sẽ tìm hiều chức năng của
các chân:
• Chân ALE của 8086 là chân cho phép chốt địa chỉ, là một xung nâng
lên mức 1 để báo cho mạch ngoài biết có một địa chỉ hợp lệ trên bus. Vì
vây nó sử dụng làm xung clock cho mạch tách tín hiệu địa chỉ. Do IC
tách tín hiệu địa chỉ có xung clock tích cực sườn âm, vì vậy trước khi
đưa vào chân clk của IC 74LS273, ta phải cho qua cổng NOT để đảo tín
hiệu
• Chân M/IO: báo cho mạch điện bên ngoài biết bộ nhớ hoặc thiết bị vào
ra được nối với bus. Múc 0 báo cho các mạch ngoài biết thiết bị vào ra
đang được sử dụng. vì vậy, chân này được nối với mạch giải mã địa chỉ.
• Chân RD và WR: điều khiển việc đọc dữ liệu từ thiết bị ngoại vi vào
VI Xử LÝ hay la lấy dữ liệu từ bộ vi xử lý ra ngoài của 8255A.

• Chân MN/MAX: nối với Vcc để chọn chế độ MN cho vi xử lý.
• Các chân từ D0 – D7 của 8255A được nối với các chân dữ liệu đa hợp
AD0 – AD7 của bộ Vi xử lý . Có tác dụng trao đổi dữ liệu vào ra giữa
8255A và 8086.
• Các chân từ PB0 – PB7 được nối trực tiếp tương ứng với các chân từ a
đến g của LED 7 thanh để đưa dữ liệu hiển thị số
• Mạch giải mã địa chỉ cho 8255A: do yêu cầu đề bài không có vì vậy
chúng ta sẽ chọn địa chỉ cổng PA, PB, PC và thanh ghi điều khiển bất kì.
ở đây mình chọn đia chỉ của các cổng lần lượt là 0h, 2h, 4h và 6h, để
chọn được 2 bít giải mã cho các cổng ta sẽ tìm hiểu bảng giải mã địa chỉ
sau:
Cổng A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Địa chỉ
PA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0h
PB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2h
PC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4h
ĐK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 6h
- Từ bảng giải mã địa chỉ, ta chọn chân A1, A2 đưa vào đầu vào A0, A1 của
IC 8255A, các chân còn lại được đưa trực tiếp vào cổng OR để cho phép
8255 hoạt động bằng cách đưa đầu ra của cổng OR tới đầu vào CS của
8255
2. Sơ đồ thuật toán
Với nội dung mà đề bài đưa ra, chúng ta sẽ lập trình theo sơ đồ thuật
toán sau
23
Bắt
đầu
Kiểm
tra nút
bấm


Đ Sai
3. Code chương trình
data segment

pa equ 0
pb equ 2
pc equ 4
dk equ 6

ends
stack segment
dw 128 dup(0)
ends
code segment
start:

mov al,89h
out dk,al

sangso8:
in al,pc
cmp al,7fh
je nhayso4
mov al,80h
out pb,al
jmp sangso8

nhayso4:
mov al,0ffh
out pb,al

call delay
mov al,99h
out pb,al
call delay
jmp sangso8
delay:
mov cx,15000
k: nop
nop
nop
loop k
ret
ends
end start
24
Hiển thị số 8Nháy số 4
E. KẾT LUẬN
Nhìn chung, bộ vi xử lý 8086 là một bước tiến lớn của hãng sản xuất Intel
trong nền lập trình vi xử lý, là bước mở đầu cho sự phát triển các thế hệ vi xử
lý tiếp theo cùng với những tính năng mạnh mẽ, kết nối với các thiết bị ngoại
dễ dàng cùng với tập lệnh hỗ trợ ngày càng lớn.
Vơi những gì chúng em đã thực hiện và mô phỏng bằng phần mêm
chuyên dụng, chúng ta thấy được những gì mà bộ vi xử lý có thể làm được
và những gì mà bộ vi xử lý 8086 vẫn chưa thể giải quyết được như: mạch kết
nối cồng kềnh, chi phí lắp đặt cao, tốc độ xử lý còn thấp.
Vơi những gì mà nhóm em được tiếp thu và học tập, nhóm em đã hoàn
thành bài tập lớn thành công. Tuy nhiên trong quá trình trình bày không thiếu
những sai sót, mong các thầy cô bỏ qua và đóng góp cho chúng em những ý
kiến hữu ích để mỗi chúng em được hoàn thiện bản thân hơn, cũng như
thành công hơn trong các bài tập lớn tiếp theo.

Được vậy, cũng nhờ sự chỉ dạy nhiệt tình của cô Hằng cũng như các thầy
cô trong khoa điện tử. chúng em xin chân thành cảm ơn cô Hằng và các thầy
cô trong khoa nói riêng, cũng như nhà trường nói chung.
25

×