LDAX rp Nạp gián tiếp nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi rp vào thanh ghi A.. STAXrp Lưu trữ gián tiếp nội dung thanh ghi A vào ô nhớ có địa chỉ chứa trong cặp thanh ghi
Trang 1Chương 5: Cấu trúc Vi xử lý 8085A
Cấu tạo Vi xử lý 8085A gồm 3 phần: Đơn vị số học-logic, các thanh ghi và đơn vị điều khiển Các thanh ghi trong 8085A được chia ra như sau:
Bộ đếm chương trình (PC) và con trỏ ngăn xếp (SP): là
hai thanh ghi có độ dài 16 bit nên Vi xử lý có thể truy xuất được một lượng ô nhớ là 216 = 65536 byte hay 64Kbyte
Bộ tích lũy (Accummulator): Có ký hiệu là A, độ dài 8 bit
Đây là thanh ghi quan trọng nhất trong Vi xử lý, hầu hết các quá trình tính toán đều xảy ra trên thanh ghi này
Thanh ghi trạng thái (Status Register): Có tên khác là
thanh ghi cờ (Flag), ký hiệu là F, thanh ghi này có độ dài 8 bit trong đó có 5 bit trạng thái dùng để phản ánh trạng thái của Vi xử lý khi thực hiện xong một lệnh
S Z x A
S - Sign (bit dấu)
S = 1 Khi kết quả là số âm
S = 0 Khi kết quả là số dương
Z - Zero (bit zero)
Z = 1 Khi kết quả bằng 0
Z = 0 Khi kết quả khác 0
AC - Auxiliary Carry (bit số nhớ phụ)
Trang 2AC = 1 Khi phép tính bị tràn trên bit 3.
AC = 0 Khi phép tính không tràn trên bit 3
P - Parity (bit chẵn lẻ)
P = 1 Khi kết quả là số chẵn
P = 0 Khi kết quả là số lẻ
Số chẵn là số có tổng số bit [1] là chẵn, và ngược lại số lẻ là số có tổng số bit [1] là lẻ.
Cy - Carry (bit số nhớ)
Cy = 1 Khi kết quả có số nhớ
Cy = 0 Khi kết quả không số nhớ
Các thanh ghi công dụng chung: Gồm 6 thanh ghi có độ
dài 8 bit được ký hiệu lần lượt là B, C, D, E, H và L Các thanh ghi này có thể kết hợp thành từng cặp 16 bit: BC, DE, HL và
AF, trong đó A, B, D và H là các thanh ghi cao và F, C, E và L là các thanh ghi thấp
II TẬP LỆNH 8085A:
Tập lệnh của 8085A được chia thành các nhóm như sau:
- Nhóm lệnh truyền dữ liệu
- Nhóm lệnh số học - logic
- Nhóm lệnh so sánh
- Nhóm lệnh nhảy
- Nhóm lệnh về ngăn xếp
- Nhóm lệnh về xuất nhập
- Nhóm lệnh điều khiển
Trang 31 Nhóm lệnh truyền dữ liệu:
MOV ds, sr Truyền dữ liệu từ thanh ghi sr đến thanh ghi
ds
MOV ds, M Truyền dữ liệu từ ô nhớ có địa chỉ chứa trong
cặp thanh ghi HL vào thanh ghi ds
MOV M, sr Truyền dữ liệu từ thanh ghi sr vào ô nhớ có
địa chỉ chứa trong cặp thanh ghi HL
MVI ds, data Truyền tức thời dữ liệu 8 bit vào thanh ghi
ds
MVI M, data Truyền tức thời dữ liệu 8 bit vào ô nhớ có
địa chỉ chứa trong cặp thanh ghi HL
LXI rp, dw Nạp tức thời dữ liệu 16 bit vào cặp thanh ghi
rp LDA addr Nạp trực tiếp nội dung ô nhớ có địa chỉ là addr
vào thanh ghi A
LDAX rp Nạp gián tiếp nội dung ô nhớ có địa chỉ
chứa trong cặp thanh ghi rp vào thanh ghi A LHLD addr Nạp trực tiếp nội dung ô nhớ có địa
chỉ là addr vào thanh ghi L, nội dung ô nhớ có địa chỉ addr+1 vào thanh ghi H
STA addr Lưu trữ trực tiếp nội dung thanh ghi A vào ô
nhớ có địa chỉ addr
STAXrp Lưu trữ gián tiếp nội dung thanh ghi A vào ô
nhớ có địa chỉ chứa trong cặp thanh ghi rp SHLD addr Lưu trữ trực tiếp nội dung thanh ghi L
vào ô nhớ có địa chỉ addr, nội dung thanh ghi
H vào ô nhớ có địa chỉ addr+1
Trang 4XCHG Hoán chuyển nội dung giữa cặp thanh ghi
HL với cặp thanh ghi DE
2 Nhóm lệnh số học - logic:
ADD sr Cộng không lưu ý số nhớ nội dung thanh ghi A
với nội dung thanh ghi sr
ADD M Cộng không lưu ý số nhớ nội dung thanh ghi A
với nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL
ADI data Cộng không lưu ý số nhớ nội dung thanh ghi A
với dữ liệu
ADC sr Cộng có lưu ý số nhớ nội dung thanh ghi A với
nội dung thanh ghi sr
ADC M Cộng có lưu ý số nhớ nội dung thanh ghi A với
nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL
ACI data Cộng có lưu ý số nhớ nội dung thanh ghi A với
dữ liệu
SUB sr Trừ không lưu ý số thiếu nội dung thanh ghi A
với nội dung thanh ghi sr
SUB M Trừ không lưu ý số thiếu nội dung thanh ghi A
với nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL
SUI data Trừ không lưu ý số thiếu nội dung thanh ghi A
với dữ liệu
SBB sr Trừ có lưu ý số thiếu nội dung thanh ghi A với
nội dung thanh ghi sr
Trang 5SBB M Trừ có lưu ý số thiếu nội dung thanh ghi A với
nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL
SBI data Trừ có lưu ý số thiếu nội dung thanh ghi A với
dữ liệu
ANA sr AND giữa nội dung thanh ghi A với nội dung
thanh ghi sr
ANA M AND giữa nội dung thanh ghi A với nội dung
ô nhớ có địa chỉ chứa trong cặp thanh ghi HL ANI data AND giữa nội dung thanh ghi A với dữ liệu ORA sr OR giữa nội dung thanh ghi A với nội dung
thanh ghi sr
ORA M OR giữa nội dung thanh ghi A với nội dung ô
nhớ có địa chỉ chứa trong cặp thanh ghi HL ORI data OR giữa nội dung thanh ghi A với dữ liệu
XRA sr EXOR giữa nội dung thanh ghi A với nội dung
thanh ghi sr
XRA M EXOR giữa nội dung thanh ghi A với nội dung
ô nhớ có địa chỉ chứa trong cặp thanh ghi HL XRI data EXOR giữa nội dung thanh ghi A với dữ liệu INR reg Tăng nội dung thanh ghi reg
INR M Tăng nội dung ô nhớ có địa chỉ chứa trong cặp
thanh ghi HL
DCR reg Giảm nội dung thanh ghi reg
DCR M Giảm nội dung ô nhớ có địa chỉ chứa trong
cặp thanh ghi HL
Trang 6INX rp Tăng nội dung cặp thanh ghi rp.
DCX rp Giảm nội dung cặp thanh ghi rp
RRC Đẩy nội dung thanh ghi A về phía phải
RLC Đẩy nội dung thanh ghi A về phía trái
RAR Đẩy nội dung thanh ghi A về phía phải ngang
qua cy
RAL Đẩy nội dung thanh ghi A về phía trái ngang
qua cy
DAD rp Cộng nội dung cặp thanh ghi HL với nội dung
cặp thanh ghi rp DAA Điều chỉnh nội dung bộ tích lũy A
CMA Nghịch đảo nội dung bộ tích lũy A
STC Đặt bit cy là [1]
CMC Nghịch đảo bit cy
3 Nhóm lệnh so sánh:
CMP sr So sánh nội dung thanh ghi A với nội dung
thanh ghi sr
CMP M So sánh nội dung thanh ghi A với nội dung ô
nhớ có địa chỉ chứa trong cặp thanh ghi HL CPI data So sánh nội dung thanh ghi A với dữ liệu
4 Nhóm lệnh nhảy:
JMP addr Nhảy đến địa chỉ addr không điều kiện
Jcondition addr Nhảy đến địa chỉ addr nếu thỏa điều kiện:
Trang 7- JNZ Z = 0
- JZ Z = 1
- JNC Cy = 0
- JP S = 0
CALLaddr Gọi chương trình con tại địa chỉ addr
Ccondition addr Gọi chương trình con tại địa chỉ addr
nếu thỏa điều kiện:
- CNZ Z = 0
- CNC Cy = 0
- CPO P = 0
- CPE P = 1
RET Trở về từ chương trình con không điều kiện
Rcondition Trở về từ chương trình con nếu thỏa điều
kiện:
- RNZ Z = 0
Trang 8- RNC Cy = 0
- RPO P = 0
- RPE P = 1
RST c Gọi chương trình phục vụ ngắt số hiệu c
PCHL Nạp bộ đếm chương trình PC từ cặp thanh ghi
HL
5 Nhóm lệnh về ngăn xếp:
PUSHrp Chuyển dữ liệu của cặp thanh ghi rp vào ngăn
xếp
POP rp Lấy dữ liệu từ ngăn xếp chuyển vào cặp thanh
ghi rp XTHL Hoán chuyển dữ liệu giữa ngăn xếp với
cặp thanh ghi HL
SPHL Chuyển nội dung cặp thanh ghi HL vào thanh
ghi SP
6 Nhóm lệnh xuất nhập:
IN port Nhập dữ liệu từ cổng port vào thanh ghi A OUT port Xuất dữ liệu từ thanh ghi A ra cổng port
7 Nhóm lệnh điều khiển:
Trang 9NOP Lệnh trống.
HLT Lệnh dừng chương trình cho đến khi có lệnh
ngắt hoặc RESET
EI Cho phép yêu cầu ngắt
DI Không cho phép yêu cầu ngắt
8 Nhóm lệnh đặc biệt:
SIM Lệnh này sử dụng các bit trong thanh ghi A để
thực hiện các công việc sau:
SO
D SOE x 7.5R MSE 7.5M 6.5M 5.5M
M 7.5 - M 6.5 - M5.5 = [0]: Cho phép yêu cầu ngắt
= [1]: Ngăn yêu cầu ngắt
MSE = [0]: Các bit từ 0 đến 2 của thanh ghi A
có tác dụng
= [1]: Các bit từ 0 đến 2 của thanh ghi A không tác dụng
RST 7.5 = [0]: Không ảnh hưởng
= [1]: Reset Flip Flop RST 7.5 SOE = [0]: Bit thứ 7 của thanh ghi A không
gửi ra ngõ SOD
= [1]: Bit thứ 7 của thanh ghi A được gửi
ra ngõ SOD
SOD : Chứa dữ liệu cần gửi đến ngõ ra
nối tiếp SOD
Trang 10RIM Kết quả của lệnh RIM sau khi thực hiện được
trả lại trong thanh ghi A cho biết các trạng thái sau:
SI
D 7.5I 6.5I I 6.5 IE 7.5M 6.5M 5.5M
M 7.5 - M 6.5 - M 5.5 = [0]: Yêu cầu ngắt bị ngăn
= [1]: Yêu cầu ngắt được phép
IE = [0]: Vi xử lý không chấp nhận yêu cầu
ngắt
= [1]: Vi xử lý chấp nhận yêu cầu ngắt
I 7.5 -I 6.5 - I 5.5= [0]: Cho biết không có yêu cầu ngắt
= [1]: Cho biết yêu cầu ngắt đang chờ SID : Chứa dữ liệu của ngõ vào nối tiếp
SID