I) Phụ lục I bảng mã Hex Ascii Hex Ascii Hex Ascii 61 a 41 A 62 b 42 B 63 c 43 C 64 d 44 D 65 e 45 E 66 f 46 F 67 g 47 G 68 h 48 H 69 i 49 I 6A j 4A J 6B k 4B K 6C l 4C L 6D m 4D M 6E n 4E N 6F o 4F O 70 p 50 P 71 q 51 Q 72 r 52 R 73 s 53 S 74 t 54 T 75 u 55 U 76 v 56 V 77 w 57 W 78 x 58 X 79 y 59 Y 7A z 5A Z Hex Ascii Hex Ascii 30 0 35 5 31 1 36 6 32 2 37 7 33 3 38 8 34 4 39 9 II) Phụ lục II tóm tắt các lệnh, kiến thức về bộ vi xử lý (micro proccessor) 8 bit Intel Nhóm chuyển đổi dữ liệu. 1) IN PORT Nhập số liệu vào với: IN là mã kênh 1 byte và PORT là địa chỉ 8 bit của cổng vào.
Trang 1Đề cơng ôn tập
môn vi xử lý.
I) Phụ lục I bảng mã
Hex - Ascii
Hex Ascii Hex Ascii
Hex Ascii Hex Ascii
II) Phụ lục II tóm tắt các
lệnh, kiến thức về bộ vi xử
lý (micro proccessor)
8 bit Intel
Nhóm chuyển đổi dữ liệu.
1) IN PORT Nhập số liệu
vào với: IN là mã kênh 1
byte và PORT là địa chỉ 8 bit
của cổng vào
(Acc) < - (Port)
Ví dụ: Port_0 = 01h
In Port_0
2) OUT PORT Đa thông
tin ra với: OUT là mã kênh 1
byte và PORT là địa chỉ 8 bit
của cổng ra
(Port) < - (Acc)
Ví dụ: Port_1 = 0Bh
Out Port_1
3) STA Addr16 Nội dung
thanh chứa đợc chuyển vào ngăn chứa 16bit
(Addr16) < - (Acc)
4) LDA Addr16 Ngăn nhớ
có địa chỉ là nội dung của 2 byte kế tiếp
5) SHLD Addr16 Cất giữ
nội dung của thanh HL vào hai ngăn nhớ địa chỉ bắt đầu
từ addr16
(Addr16) < - (L) (Addr16+1) < - (H)
6) LHLD Addr16 Hai byte
liên tục đợc trả trở lại thanh
HL từ Addr16
(L) < - (Addr16) (H) < - (Addr16+1) Chú ý: (5&6) Byte thấp đa vào ngăn nhớ thấp, byte cao
đa vào ngăn nhớ cao
7) MOV M,R Chuyển nội
dung ngăn nhớ R vào vào ngăn nhớ M
Chú ý: (7) Ngăn nhớ đích ở bên trái dấu , (M) ngăn nhớ nguồn ở bên phải dấu , (R)
+ R là các thanh ghi 8 bit bên trong bộ vi xử lý (A, B,
C, D, E, H, L) + M là ngăn nhớ có địa chỉ là nội dung (HL)
((HL)) < - (R)
8) LDAX rp
(Acc) < - ((rp)) 9) STAX rp
((rp)) < - (Acc) Chú ý: (8&9) rp: BC, DE
10) MVI r,data8
(r) < - data
Ví dụ: MVI M,data8
((HL)) < - data8
Nhóm thực hiện các phép
tính Logic 1) CMA Lấy bù của các
thanh chứa Acc (Acc) < - ( Acc)
2) CMC Lấy bù với các cở
keri (CY) (CY) < - (CY)
3) STC Đặt giá trị cho cờ
keri = 1
(CY) < - 1
4) ANI data8 Nhân logic
với data8 (Acc) < - (Acc).data8
5) ANA r Nhân logic với r
(Acc) < - (Acc).data8
III) Chơng trình LEV85 Mục lục:
Bài 1.85 (Thu số liệu) Bài 2.85 (Chuyển mảng) Bài 3.85 (Ghép hai số BCD) Bài 4.85 (Khoá điện tử) Bài 5.85 (Cộng 2 số 2 byte) Bài 6.85 (Trừ 2 số 2 byte) Bài 7.85 (Chơng trình đổi
mã BIN -> HEX)
Bài 1.85 (Thu số liệu)
thu_so_lieu: ; Tên ch/trình
; -; Khai khai báo
; -port_in = 00 h
error ds 1 data_exit ds 1
; -; Phần chơng trình chính
; -org 0080h ; Ch/tr bắt đầu từ
địa chỉ 0080h loop:
in port_in cpi 00h
jz no mvi a,0ffh sta data_exit cma
sta error jmp loop no:
mvi a,0ffh sta error cma sta data_exit
Chú thích: Chơng trình trên
khi chạy sẽ báo:
PC Overflow, go top Press any key to continue
+ Để chơng trình không báo
dòng lệnh trên thêm dòng sau vào cuối chơng trình chính: jmp loop
Bài 2.85 (Chuyển mảng)
chuyen_mang:
; -; Phần khai báo
; -s_size = 0fh ; Kích thớc
mảng source = 2000h ; destination = 2100h ; co_chuyen_m ds 1 ; Cờ báo
chuyển mảng xong
; -; Phần chơng trình chính
Trang 2
lxi b,source ; BC trỏ mảng
nguồn lxi d,destination ; DE trỏ
mảng đích mvi l,s_size ; l bộ đệm
mvi a,00h ;
sta co_chuyen_m ; Bật cờ
chuyển mảng
; -loop: ; lặp lại vòng này
s_size lần
ldax b ;
stax d ;
dcr l ;
jz xong
inx b ;
inx d ;
jmp loop
xong:
mvi a,0ffh ;
sta co_chuyen_m ; Bật cờ
chuyển mảng
Chú thích:
Bài 3.85 (Ghép hai số BCD)
ghep_2so_bcd:
; -; Phần khai báo
; -port_0 = 00h ;
port_1 = 01h ;
buffer = 2000h ; Kích thớc
buffer b_size = 0fh ;
co_accumulation ds 1 ;
mang ds 2 ;
; -; Phần chơng trình chính
org 0000h ;
start:
mvi c,b_size ;
lxi h,buffer ; HL trỏ tới
mảng buffer mvi a,00h ;
sta co_accumulation ; Gắn
cờ hiển thị giá trị = 00h
loop:
in port_0 ; Nhận chữ số
hàng đơn vị ani 0fh ; Lọc 4 bit cao
mov b,a ; Cất vào b
in port_1 ; Nhận chữ số
hàng chục ani 0fh ;
ral ; Dich trái 4 lần
ral
ral
ral
ora b ;
mov m,a ; Cất vào buffer
sta co_accumulation ; Bật cờ
hiển thị giá trị hiện hành
inx h ;
dcr c ;
jnz loop
Chú thích:
Bài 4.85 (Khoá điện tử)
khoa_dt:
; -; Phần khai báo
; -stack = 3000h ; Đỉnh ngăn
xếp port_status = 01h ; port_ascii = 00h ; bao_dong ds 1 ; Cờ báo động mo_cua ds 1 ; Cờ mở cửa cap_khoa ds 1 ;
; -; Phần chơng trình chính
lxi sp,stack ;
lxi h,key ; Bảng mã khóa mvi b,03h ;
mov a,b ; sta cap_khoa ; mvi a,00h ; sta bao_dong ; sta mo_cua ; nextIn:
call ban_phim ; Đọc trạng
thái bàn phím ani 7fh ; Loại bit Parity cua
ma ASCII cmp m ; So sánh với
mã khoá
jnz pick ; Báo động nếu
Acc<>M inx h ;
lda cap_khoa ; dcr a ;
sta cap_khoa ; dcr b ; Giảm số đệm
1 đơn vị jnz nextIn ; openIt:
mvi a,01h ; out 6eh ; Mở cửa mvi a,0ffh ; sta mo_cua ; Bật cờ mở cửa
hlt ; pick:
mvi a,01h ; out 6fh ; Báo động mvi a,0ffh ;
sta bao_dong ; Bật cờ
báo động hlt ;
ban_phim:
;in port_status ; Đọc trạng
thái của bàn phím ;ani 01h ;
;jz ban_phim
in port_ASCII ; Đọc mã
bàn phím ret
; -Key:
db 30h ; Bảng mã khoá
db 31h
db 32h
db 33h
db 34h
db 35h
db 36h
db 37h
db 38h
db 39h
Chú thích:
Bài 5.85 (Cộng 2 số 2 bytes)
cong_nbyte:
; -; Phần khai báo
org 0100h ;
n EQU 2 ;
nb db n ; Kích thớc buffer tong dw 0000h ; Buffer
chứa tổng so_hang1 dw 01ffh ; Buffer
chứa số hạng thứ nhất so_hang2 dw 0101h ; Buffer
chứa số hạng thứ hai ket_thuc db 00h ; Cờ báo
kết thúc phép cộng
; -; Phần chơng trình chính
org 0000h ;
start:
lxi d,tong ; DE trỏ tới
buffer chứa tổng lxi b, so_hang1 ; DE trỏ tới
buffer chứa số hạng 1 lxi h, so_hang2 ; DE trỏ tới
buffer chứa số hạng 2 xra a ; Xoá CY
loop:
ldax b ;Lấy 1 byte số hạng 1 adc M ; Cộng với 1 byte
số hạng 2 stax d ; Chuyển kết quả
vào buffer tổng lda nb ;
dcr a ; sta nb
jz xong ; Nếu cộng xong
thì bật cờ kết thúc inx b
inx d inx h jmp loop xong:
mvi a,0ffh sta ket_thuc ;
Chú thích:
Bài 6.85 (Trừ 2 số 2 bytes)
Tru_nbyte:
Trang 3; -; Phần khai báo
org 0100h ;
n EQU 2 ;
nb db n ; Kích thớc buffer hieu dw 0000h ; Buffer
chứa hiệu so_bi_tru dw 05ffh ; Buffer
chứa số bị trừ so_tru dw 0101h ; Buffer
chứa số trừ ket_thuc db 00h ; Cờ báo
kết thúc phép trừ
; -; Phần chơng trình chính
org 0000h ;
start:
lxi d,hieu ; DE trỏ tới
buffer chứa hiệu lxi b, so_bi_tru ; DE trở tới
buffer chứa số bị trừ lxi h, so_tru ; DE trở tới
buffer chứa số trừ xra a ; Xoá CY
loop:
ldax b ; Lấy 1 byte số bị trừ sbb M ; Trừ đi 1 byte số trừ stax d ;Chuyển kết quả
vào buffer hiệu lda nb ;
dcr a ;
sta nb
jz xong ; Nếu cộng xong
thì bật cờ kết thúc inx b
inx d
inx h
jmp loop
xong:
mvi a,0ffh
sta ket_thuc ;
hlt ; Dừng
Chú thích:
Bài 7.85 (Chơng trình đổi
mã BIN -> HEX)