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:
• Nhóm sv thực hiện:
•1
LỜI NÓI ĐẦU
Công nghệ Vi xử lý là một trong những thành tựu khoa học đánh dấu bước ngoặt
trong lịch sử về sự phát triển của ngành khoa học – công nghệ. Nó đã đóng góp hàng
loạt các ứng dụng và sản phẩm vào đời sống thực tiễn của con người, trên hầu hết tất cả
các lĩnh vực. Đặc biệt trong nền công nghiệp hóa và hiện đại hóa của nước ta.
Với những ưu điểm mà công nghệ Vi xử lý mang lại, chúng ta cần phải khai thác
và phát triển nó rộng rãi hơn, để hiểu và sử dụng công nghệ này vào thực tiễn, nhóm
em xin trình bày một vài ví dụ về lập trình cho xi xử lý và cách kết nối cơ bản của nó
với các thiết bị ngoại vi.
Một trong những thế hệ chíp thành công nhất của hãng phát triển Intel là bộ vi xử
lý 16 bít được mang tên 8086. Nó đã mở đầu cho một thế hệ vi xử lý x86. 8086 có thể
quản lý đươc 1MB bộ nhớ, với tốc đô xử lý lên tới 2,5 triệu lệnh trên một giây.
Sau đây chúng em xin trình bày chi tiết các bước để mọi người có thể hiểu và lợi
dụng những tính năng mà Vi xử lý 8086 mang lại. trong quá trình trình bày, có gì sai sót
mong các thầy cô bỏ qua và góp ý để chúng em được hoàn thiện hơn trong những bài
báo cáo lần sau.
.Chúng em xin chân thành cảm ơn!
• Nhóm sv thực hiện:
2
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
3
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
2. chế độ hoạt động 15
III.CẤU TẠO IC GIẢI MÃ 74273 17
Cấu tạo bên trong và chức năng các chân : 17
C. PHẦN BÀI TẬP 18
1.Ví dụ 1 18
a.Sơ đồ thuật toán 18
b.Code chương trình 18
2.Ví dụ 2 20
3. Ví dụ 3 22
a.Phân tích đề bài và cách chọn cách ghép nối 22
b.mạch ghép nối 24
24
c. Sơ đồ thuật toán 24
d. Code chương trình 24
D.KẾT LUẬN 25
5
A. NỘI DUNG THỰC HIỆN
Xuất phát từ sự tìm hiểu và khai thác các ưu điểm và tính năng mà họ Vi xử lý
8086 mang laị, nhóm chúng em xin trình bày các ví dụ sau:
1. Viết chương trình thực hiện phép toán BX= 0 + 1 + 2 + + n. Với n là số hexa có
hai chữ số được nhập vào từ bàn phím, sau đó hiển thị kết quả.
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(2K x 8 bit) F0000H (Địa chỉ đầu của ROM)
Khoảng trống 14 Kb
ROM(4K x 8 bit)
ROM(4K x 8 bit)
RAM(8K x 8 bit)
RAM(32K x 8 bit)
3. Thiết kế mạch ghép nối giữa bộ vi xử lý 8086 và 8255 với các địa chỉ của cổng
+ 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à một đoạn ghi đặc biệt gọi là đoạn ghi cờ hay đoạn ghi trạng thái.
Mỗi bit của đoạn ghi này được dùng để phản ánh một trạng thái nhất định của kết
quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU. Đoạn ghi
cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ.
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).
Bảng tóm tắt sự kết hợp ngầm định giữa đoạn ghi đoạn và đoạn ghi lệch:
8
Đoạn ghi đoạn Đoạn ghi lệch Địa chỉ
CS IP Địa chỉ lệnh sắp thực hiện
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.
3. Các hàm ngắt và tập lệnh của 8086
a. 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.
10
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
b. Tập lệnh của 8086
- Lệnh XCHG: toán hạng đích và nguồn được đổi lẫn cho nhau
SBB dich, nguon;
- 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 nguon;
- 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 ;
12
- 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
POPF;
Chú ý: quá trình cất dữ liệu và lấy ra từ ngăn xếp thực
hiện theo nguyên tắc:
Vào sau ra trước – nghĩa là thanh ghi nào đươc cất vào
ngăn xếp đầu tiên thì sẽ lấy nó ra sau, còn thanh ghi nào
được đưa vào cất sau thì được lấy ra trước
- 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;
II. CẤU TẠO VÀ CHỨC NĂNG IC 8255A
1. Sơ đồ chân và chức năng của mỗi chân
Sơ đồ chân và chức năng của các chân trên 8255:
- 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 biệt, hai phần này có thể hoạt
động độc lập với nhau nếu cần. tùy thuộc vào thanh ghi điều
khiển được cài đặt mà các cổng này có thể vào/ ra dữ liệu.
- 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ữ
14
liệu ra hoặc nhận dữ liệu vào. Cổng này khác với cổng PC, nó
không thể tách làm 2 độc lập với nhau được.
- 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ữ lieu 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.
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 :
15
1 D6 D5 PA PC cao D2 PB PC thấp
+ Bit D6 và D5 dùng để chọn chế độ nhóm A
• Nếu D6D5 là 00 thì chọn chế độ 0
• Nếu D6D5 là 01 thì chọn chế độ 1
• Các trường hợp khác sẽ không xác định
+ Bít PA: chọn chiều cho cổng PA,
• Nếu PA=0: cổng PA sẽ xuất dữ liệu ra.
• Nếu PA=1: cổng PA sẽ nhận dự liệu bên ngoài vào
+ Bít PC cao: chọn chiều ra/vào cho 4 bit cao của cổng PC
• Nếu PC=0 thì cho phép cổng PC cao xuất dữ liệu ra
• Nếu PC=1 thì cho phép cổng PC ca0 nhận dữ liệu
+ Bít D2: chọn chế độ nhóm B
• Nếu D2=0 thì chọn chế độ 0
• Nếu D2=1 thì chọn chế độ 1
+ Bít PB: chọn chiều ra/vào cho cổng PB
• Nếu PB=0 thì cho phép cổng PB xuất dữ liệu ra
• Nếu PB=1 thì cho phép cổng PB nhận dữ liệu
+ Bít PC thấp: chọn chiều ra/vào cho 4 bit thấp của cổng PC
• Nếu PC=0 thì cho phép cổng PC thấp xuất dữ liệu ra
• Nếu PC=1 thì cho phép cổng PC thấp nhận dữ liệu
VD: để chọn 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:
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
C. PHẦN BÀI TẬP
1.Ví dụ 1.
- Viết chương trình thực hiện phép toán BX= 0 + 1 + 2 + + n.
Với n là số hexa có hai chữ số được nhập vào từ bàn phím, sau
đó hiển thị kết quả.
a. Sơ đồ thuật toán.
b. Code chương trình
.model small
18
.stack 100h
.data
tb1 db 10,13," nhap vao so hexa: $"
tb2 db 10,13," ket qua dang hexa: $"
tb3 db 10,13," nhap sai nhap lai: $"
i dw 0
.code
main proc
mov ax,@data ; khoi tao thanh ghi ds
mov ds,ax
mov ah,9 ; ham hien thi chuoi
lea dx,tb1
int 21h ; dua chuoi tb1 ra man hinh
start:
mov bx,0 ;
mov dh,2 ; dh=2
mov cl,4 ; cl=4
mov dh,4 ; dh=4
mov ah,2 ; ah=2
mov cl,4 ; cl=4
K1:
19
rol bx,cl ; quay bx 4 bit,
mov dl,bl ; dl=bl
and dl,0fh ; lay 4 bit thap nhat cua
dl
add dl,30h ; dl=dl+30h
cmp dl,39h ; so sanh dl voi 39h
jng k2 ; neu dl<=39h
add dl,7h ; neu dl>39 thi tru dl cho
7h
k2:
int 21h ; hien thi dl ra man hinh
dec dh ; giam dh di 1
jnz k1 ; neu dl khac 0 thi lap lai
k1
jmp thoat ; dh=0 thi thoat
baoloi: ; thu tuc bao loi
mov ah,9 ; goi ham hien thi chuoi
lea dx,tb3 ; xuat thong bao 3 ra man
hinh
int 21h
jmp start
thoat: ; ham thoat
mov ah,4ch
int 21h
end main
A
10
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
Địa chỉ
ROM1
2Kx8
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F0000
20
1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 F07FF
Khoảng
trông 14K
- Thiết kế mạch ghép nối giữa bộ vi xử lý 8086 và 8255 với các
địa chỉ của cổng PA, PB, PC, thanh ghi điều khiển lần lượt là
20h, 22h, 24h, 26h. Viết chương trình để 8086 liên tục đọc các
bit ở cổng PC cao (PC4, PC5, PC6, PC7) sao sau đó gửi ra PC
thấp (PC0, PC1, PC2, PC3). Ghép 4 bit cao của PC với chuyển
mạch giữa nguồn và mass để kiểm tra kết quả.
a. Phân tích đề bài và cách chọn cách ghép nối.
- Theo giả thiết, chúng ta sẽ ghép nối 8086 và 8255 với địa chỉ
cổng cổng PA, PB, PC, thanh ghi điều khiển lần lượt là 20h,
22h, 24h, 26h. chúng ta phải chọn ra 2 bit của 8086 để làm 2 bit
chọn cổng cho 8255. Mặt khác, 2 bít để chọn cổng cho 8255
phải tuân theo quy tắc biến đổi của 2 bit A1 và A0 của 8255:
+ Nếu A1A0 có mức logic 00 thì chọn cổng A
+ Nếu A1A0 có mức logic 01 thì chọn cổng B
+ Nếu A1A0 có mức logic 10 thì chọn cổng C
22
+ Nếu A1A0 có mức logic 11 thì chọn thanh ghi điều
khiển
- Để chọn được 2 bit chính xác, ta sẽ dựa vào bảng giải mã địa chỉ
sau:
Cổng
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 1 0 0 0 0 0 20h
PB 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 22h
PC 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 24h
ĐK 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 26h
+ Từ bảng giải mã địa chỉ, ta nhận thấy 2 bít A2,A1 biến đổi
trùng với quy tắc chọn cổng của 8255, vì vậy ta đưa 2 chân
này trực tiếp vào chân A1, A0 tương ứng của 8255 để làm
2 bít chọn cổng hoạt động của nó.
24
Bắt
đầu
AL = PC
Dịch phải AL 4 bit
Xuất AL ra cổng C
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov as, ax ; khoi tao thanh ghi as
mov ds, ax ; khoi tao thanh ghi ds
mov al,88h ; PC cao vao, PC thap xuat
du lieu
out creg,al ; dua vao thanh ghi dieu
khien
;===============
mov cl,4 ; gan cl=4
chuyen:
in al,pc ; lay du lieu tu PC vao al
shr al,cl ; quay phai al 4 bit de dua
4 bit cao xuong 4 bit thap
out pc,al ; xuat gia tri al moi ra pc
cao
jmp chuyen ; lap lai de kiem tra tiep
ends
end start
D. KẾT LUẬN
Sau một số ví dụ mà nhóm em trình bày, đã chứng minh rõ được