Bộ vi xử lý 8088 - Pdf 62

7
8. CHƯƠNG 3 : BỘ VI XỬ LÝ 8088
3.1_CÁC THANH GHI CỦA BỘ VI XỬ LÝ 8088
Bộ vi xử lý 8088 có một số phần tử dùng để ghi nhớ các giá trò trung gian trong quá trình làm
việc,tạo ra các đòa chỉ,làm các phép tính...Các phần tử này gọi là các thanh ghi (Register). 8088 là bộ vi
xử lý 16 bit, các tác vụ của 8088 thường dược thực hiện trên 16 bit dồng thời,các thanh ghi của 8088 đều
là các phần tử nhớ 16 bit.Các thanh ghi hoàn toàn có thể sử dụng như các phần tử nhớ thuộc về RAM.
Điểm khác nhau giữa thanh ghi và các phần tử nhớ thuộc RAM là Thanh ghi là các phần tử thuộc bộ vi xử
lý (về mặt vật lý).
Một số tác vụ đặc biệt như nhân hay chia, kết quả bắt buộc phải đặt trong thanh ghi
Một số thanh ghi chỉ dùng để xác đònh đòa chỉ cho 8088
Các tác vụ trên thanh ghi nhanh hơn nhiều so với các tác vụ trên RAM. Bởi vì để thực hiện các tác
vụ trên RAM,8088 phải đi qua một quá trình như sau :
a) Đọc thông tin từ RAM (thông qua Bus)
b) Thực hiện tác vụ
c) Ghi trả lại thông tin vào RAM (thông qua Bus)
Bộ vi xử lý 8088 có 14 thanh ghi 16 bit,được chia thành nhóm theo chức năng như sau:
3.1.1_Nhóm thanh ghi đa dụng :
AX,BX,CX,DX : Mỗi thanh ghi có thể sử dụng như hai thanh ghi 8 bit với các tên
AH,AL,BH,BL,CH,CL,DH,DL
F E D C B A 9 8 7 6 5 4 3 2 1
AH AL AX
BH BL BX
CH CL CX
DH DL DX
3.1.2_Nhóm thanh ghi con trỏ và chỉ mục :
SP,BP,SI,DI : thường dùng để tạo các đòa chỉ, cũng có thể dùng để lưu chứa các số liệu như nhóm
thanh ghi đa dụng
3.1.3Nhóm thanh ghi phân đoạn :
CS,DS,SS,ES : Chỉ dùng để xác đònh Segment, không cho phép thực hiện các phép tính số học,logic
...

Thanh ghi ES dùng trong các tác vụ về chuỗi hoặc theo yêu cầu riêng.
3.3CÁC XÁC ĐỊNH OFFSET CỦA 8088
Offset của bộ vi xử lý 8088 được xác đònh theo nguyên tắc sau :
Offset là một hằng số
TD : [046Ch]
Offset là giá trò của một trong các thanh ghi chỉ mục BX,SI,DI,BP
TD : [BX]
Offset là giá trò của một tổng được tạo thành từ các hằng số,các thanh ghi chỉ mục ...
Nguyên tắc này có một số hạn chế :
- SI và DI không được cùng có mặt trong tổng
- BX và BP không được cùng có mặt trong tổng
TD : [SI+BX]
[DI+BX+020h]
TD : [SI+BP+041h]
Segment mặc nhiên : khi xác đònh một đòa chỉ, không phải lúc nào ta cũng phải chỉ ra thanh ghi
segment nào sẽ được sử dụng . Nếu không có chỉ đònh cụ thể thanh ghi segment, các offset tạo thành từ
các hằng số và các thanh ghi chỉ mục BX,SI,DI luôn được hiểu là đi kèm với thanh ghi segment DS .
Offset được tạo thành từ BP được hiểu là đi kèm với thanh ghi SS
Nếu chúng ta chỉ đònh rõ ràng thanh ghi segment đi kèm với offset, các giá trò mặc nhiên về
segment sẽ bò vô hiệu hoá .
3.4 BỘ 8088 THỰC HIỆN MỘT CHƯƠNG TRÌNH RA SAO ?
3.4.1Thế nào là một chương trình :
Chương trình là một tập hợp các mã lệnh và các dữ liệu . Mã lệnh (code) : là các lệnh 8088 sẽ thực
hiện Dữ liệu (data) : là các thông tin chương trình sẽ sử dụng đến .Thí dụ : chương trình của bạn sẽ in
9
dòng chữ “Do you like me ?” ra màn hình thì dòng chữ ấy phải có mặt trong chương trình của bạn. Vùng
lưu chứa dòng chữ này trong chương trình được gọi là một vùng dữ liệu (data) . Chương trình của bạn cũng
cần đến một số vùng nhớ để lưu chứa các giá trò trong quá trình chương trình được thực hiện, các vùng
nhớ này cũng được gọi là vùng dữ liệu .
Phải chú ý, bộ 8088 không thể phân biệt đâu là code, đâu là data !

3.4.4Một chương trình nguồn sẽ được biên dòch bằng Assembler 86 :
Code Segment
Assume CS:Code,DS:Code
org 0100h
Main proc near
M1: mov dx,offset chuoi1 ; in chuoi1 ra màn hình
mov ah,9 ;
int 021h ;
mov ah,1 ; Read Keyboard
10
int 021h ;
cmp al,’Y’ ; Kiểm tra ký tự dọc vào
je KT ; nếu là ‘Y’ hay ‘y’ thì nhảy dến KT
cmp al,’y’
je KT
mov ah,02 ; Nếu không, Beep một tiếng rồi quay lại M1
mov dl,7
int 021h ;
jmp M1
KT: mov dx,offset chuoi2 ; In chuoi2
mov ah,9 ;
int 021h ;
int 020h ; Kết thúc chương trình
Main endp
Chuoi1 db 13,’Do you like me ? $’ ; Mã 13 để trở về đầu dòng
Chuoi2 db ‘ Thank you !$’
Code ends
end main


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status