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.
Đề cơng ôn tập môn vi xử lý (Acc) < - (Port) Ví dụ: Port_0 = 01h In Port_0 I) Phụ lục I bảng mã Hex - Ascii 2) OUT PORT Đa thông tin với: OUT mã kênh byte PORT địa bit cổng (Port) < - (Acc) Ví dụ: Port_1 = 0Bh Out Port_1 Hex 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A Ascii a b c d e f g h i j k l m n o p q r s t u v w x y z Hex 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A Ascii A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Hex 30 31 32 33 34 Ascii Hex 35 36 37 38 39 Ascii II) Phụ lục II tóm tắt lệnh, kiến thức vi xử lý (micro proccessor) bit Intel Nhóm chuyển đổi liệu 1) IN PORT Nhập số liệu vào với: IN mã kênh byte PORT địa bit cổng vào 3) STA Addr16 Nội dung chứa đợc chuyển vào ngăn chứa 16bit (Addr16) < - (Acc) 4) LDA Addr16 Ngăn nhớ có địa nội dung byte 5) SHLD Addr16 Cất giữ nội dung HL vào hai ngăn nhớ địa addr16 (Addr16) < - (L) (Addr16+1) < - (H) 6) LHLD Addr16 Hai byte liên tục đợc trả trở lại 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 ghi bit bên vi xử lý (A, B, C, D, E, H, L) + M ngăn nhớ có địa 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 phép tính Logic 1) CMA Lấy bù chứa Acc (Acc) < - ( Acc ) 2) CMC Lấy bù với cở keri (CY) (CY) < - ( CY ) 3) STC Đặt giá trị cho cờ keri = (CY) < - 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 số byte) Bài 6.85 (Trừ số 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 data_exit ds ; ; Phần chơng trình ; org 0080h ; Ch/tr địa 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 chạy báo: PC Overflow, go top Press any key to continue + Để chơng trình không báo dòng lệnh 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 ; Cờ báo chuyển mảng xong ; ; Phần chơng trình ; lxi b,source ; BC trỏ mảng nguồn lxi d,destination ; DE trỏ mảng đích mvi l,s_size ; l đệm mvi a,00h ; sta co_chuyen_m ; Bật cờ chuyển mảng ; loop: ; lặp lại vòng 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 ; mang ds ; ; ; Phần chơng trì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 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 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ị 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 ; Cờ báo động mo_cua ds ; Cờ mở cửa cap_khoa ds ; ; ; Phần chơng trì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 AccM inx h ; lda cap_khoa ; dcr a ; sta cap_khoa ; dcr b ; Giảm số đệm đơ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 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 số bytes) cong_nbyte: ; ; Phần khai báo ; org 0100h ; n EQU ; 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ứ 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 ; 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 lxi h, so_hang2 ; DE trỏ tới buffer chứa số hạng xra a ; Xoá CY loop: ldax b ;Lấy byte số hạng adc M ; Cộng với byte số hạng stax d ; Chuyển kết vào buffer tổng lda nb ; dcr a ; sta nb jz xong ; Nếu cộng xong 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ừ số bytes) Tru_nbyte: ; ; Phần khai báo ; org 0100h ; n EQU ; 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 ; 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 byte số bị trừ sbb M ; Trừ byte số trừ stax d ;Chuyển kết vào buffer hiệu lda nb ; dcr a ; sta nb jz xong ; Nếu cộng xong 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)