Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 147 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
147
Dung lượng
1,41 MB
Nội dung
H C VI N CƠNG NGH B U CHÍNH VI N THƠNG L P TRÌNH H VÀ TH NG I U KHI N THI T B (Dùng cho sinh viên h đào t o đ i h c t xa) L u hành n i b HÀ N I - 2006 CuuDuongThanCong.com https://fb.com/tailieudientucntt H C VI N CÔNG NGH B U CHÍNH VI N THƠNG L P TRÌNH H VÀ I U KHI N THI T B Biên so n : CuuDuongThanCong.com TH NG THS PH M V N C https://fb.com/tailieudientucntt NG L I NÓI ch U Cu n giáo trình L p trình h p ng u n thi t b đ c chia thành ch ng M i ng bao g m n i dung c b n, tóm t t ch ng, câu h i t p cho m i ch ng Ch ng 1: trình bày v v n đ liên quan đ n b vi x lý 8088 : ki n trúc, ch c n ng thành ph n t p l nh Ngoài ra, ng t đ c s d ng ph bi n l p trình h th ng- ng t 21h c a h u hành DOS c ng đ c gi i thi u ch ng Ch ng 2: trình bày v v n đ liên quan đ n l p trình h p ng : cách th c vi t th c hi n m t ch ng trình, cách th c cài đ t c u trúc l p trình h p ng v n đ liên quan đ n ch ng trình macro Ch ng 3: gi i thi u v công c g r i debug, ch ng trình mơ ph ng Emu 8086 Liên k t ch ng trình vi t b ng h p ng v i ch ng trình đ c vi t b ng ngôn ng b c cao nh C Pascal c ng đ c đ c p ch ng Ngoài ra, ch ng cò gi i thi u v m t s ng t c a BIOS ph c v thi t b ngo i vi, ch ng trình th ng trú ch ng trình ng t Ch ng 4: Trình bày v l p trình ph i ghép: l p trình modem, bàn phím hình ng th i ch ng c ng gi i thi u v m t môi tr ng RadASM đ phát tri n ng d ng vi t b ng h p ng Windows Do th i gian có h n kinh nghi m h n ch , cu n giáo trình s khơng tránh kh i sai sót Tác gi biên so n r t mong nh n đ c ý ki n đóng góp t đ c gi M i ý ki n góp ý xin g i v email : pcuongcntt@yahoo.com Xin chân thành c m n! Hà N i, tháng 11/2006 Tác gi CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 1: Gi i thi u CH 1.1 C U TRÚC B VI X NG 1: GI I THI U LÝ Ph n trình bày ki n trúc bên c a b Vi x lý 8088 b Vi x lý Pentium IV 1.1.1 S đ ki n trúc b Vi x lý 8088 Hình 1.1: Ki n trúc bên c a b Vi x lý 8088 B vi x lý 8088 đ l nh (EU) c chia làm kh i chính: Kh i giao di n bus (BIU) kh i th c hi n Các thành ph n bên c a CPU giao ti p v i thông qua bus Gi a kh i giao di n bus kh i th c hi n l nh đ c liên h v i thông qua hàng đ i d li u h th ng bus CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 1: Gi i thi u 1.1.2 Ch c n ng thành ph n Thành ph n u n Bus (Bus Control Logic) i u n lo i tín hi u bus bao g m: tín hi u bus đ a ch (20 bit), tín hi u bus d li u (8 bit) tín hi u bus u n Ngoài ra, thành ph n làm nhi m v h tr giao ti p gi a h th ng bus bus H th ng bus h th ng bus k t n i gi a thành ph n c a h vi x lý v i nhau: CPU, B nh Thi t b vào/ra Hàng đ i l nh (Prefetch Queue) Ch a mã l nh ch đ c x lý Hàng đ i l nh có kích th c byte đ i v i 8088 byte đ i v i 8086 S d có u hàng đ i l nh ph i có kích th c có th ch a đ c nh t m t l nh có đ dài b t k (dài nh t) c a b vi x lý Mà t p l nh c a 8086 ch a l nh có đ dài t 1-6 byte Hàng đ i l nh làm vi c theo c ch FIFO (First In First Out), ngh a l nh đ vào hàng đ i l nh tr c s đ c x lý tr c cđ a Kh i u n (Control Unit) Kh kh i u b ph l nh m i u n có hai ch c n ng chính: gi i mã l nh t o xung u n u vào c a n mã l nh đ c đ c t hàng đ i l nh đ u xung u n g i đ n n khác bên b vi x lý Quá trình đ c th c hi n nh hai m ch gi i mã ch t o xung Kh i s h c logic (Arithmetic Logic Unit) Kh i s h c logic có ch c n ng th c hi n phép tính tốn nh phép c ng, tr … hay phép logic nh AND, OR, NOT u vào ALU hai ghi t m th i ch a d li u c a cho phép tính đ c l y t bus d li u K t qu đ u c a ALU đ c đ a tr l i bus d li u ph n ánh vào ghi c (flag register) Các ghi đo n (Segment registers) Ta th xem đo n ch ng trình đ c vi t b ng ngôn ng C sau: int Cong(int a, int b) { Return (a+b); } void main() { int x=3; int y=4; printf(“Tong: %d”, Cong(x,y)); } Trong ch ng trình có ph n: ph n khai báo ph n l nh c a ch ph n l nh có th có l i g i ch ng trình ng trình Trong Nh v y đ th c hi n đ c m t ch ng trình (d ng EXE) ng i ta c n nh t đo n b nh (segment) o n dành ch a d li u đ c khai báo, đo n ch a mã ch ng trình, đo n ng n CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 1: Gi i thi u x p ph c v cho l i g i ch ng trình M i đo n có kích th c 64KB Khi ch đ c th c hi n, m i đo n b nh đ c tr b i ghi đo n ó là: ng trình - Thanh ghi đo n mã CS (Code Segment): tr đ n đo n b nh ch a mã c a ch trình ng - Thanh ghi đo n d li u DS (Data Segment): tr đ n đo n b nh ch a khai báo c a ch ng trình - Thanh ghi đo n ng n x p SS (Stack Segment): tr đ n đo n b nh dành cho stack - Ngoài ra, nhi u tr ng h p ng i ta s d ng thêm m t đo n d li u ph dùng tr ng h p d li u c n khai báo v t kích th c cho phép c a đo n (các khai báo m ng, file…) Khi ghi đo n d li u ph ES (Extra Segment) s tr đ n đo n Các ghi tr ch s (pointers and index registers) Các ghi tr ch s ghi 16 bit Chúng th ng đ c l u đ a ch l ch (offset) k t h p v i ghi đo n t ng ng t o thành c p ghi ch a đ a ch xác đ nh c a mã l nh, m c d li u, ho c m c d li u l u stack Nh vào c p ghi này, ng i ta có th tính đia ch v t lý c th theo công th c sau: a ch v t lý = đ a ch đo n * 16 + đ a ch l ch D i ghi tr ch s : - Thanh ghi tr l nh IP (Instruction Pointer): tr vào l nh k ti p s đ c th c hi n n m đo n mã tr CS tr t i a ch đ y đ c a l nh CS:IP - Thanh ghi tr c s BP (Base Pointer): tr vào m t m c d li u n m đo n ng n x p SS a ch đ y đ c a m c d li u CS:IP - Thanh ghi tr ng n x p SP (Stack Pointer): tr vào đ nh hi n th i ng n x p n m đo n ng n x p SS a ch đ y đ c a đ nh ng n x p SS:SP - Thanh ghi ch s ngu n SI (Source Index): tr vào m t m c d li u đo n DS a ch đ y đ c a m c d li u DS:SI - Thanh ghi ch s đích DI (Destination Index): tr vào m t m c d li u đo n DS a ch đ y đ c a m c d li u DS:DI Các ghi đa n ng (Multi-purposed registers) B x lý 8088 có ghi đa n ng 16 bit là: AX, BX, CX DX Các ghi c ng có th đ c tách thành n a g m bít cao (n a cao) g m bít th đ n bít th 15 bít th p (n a th p) g m bít th đ n Các n a ghi có th đ c s d ng m t cách đ c l p đ ch a d li u bít ó n a ghi: AH AL, BH BL, CH CL, DH DL Trong AH, BH, CH, DH la n a cao AL,BL, CL, DL n a th p Ngoài ch c n ng “đa n ng”, m i ghi 16 bít th bi t, gi ng nh tên c a chúng: ng đ c s d ng tác v đ c - AX (Accumulator) ch a: k t qu c a phép toán th ng đ c l u vào ghi Ngồi ra, AX cịn tốn h ng n cho s phép toán nh nhân (AX th a s ) ho c chia (AX s b chia) CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 1: Gi i thi u - BX (Base) ghi c s : th ng đ c dùng đ ch a đ a ch c s - CX (Count) b đ m: CX th ng dung đ ch a s l n l p tr ng h p dùng l nh LOOP Ngồi ra, CL cịn ch a s l n d ch chuy n, quay trái, quay ph i c a toán h ng - DX (Data) ghi d li u: DX th ng đ c ch a đ a ch offset c a xâu kí t có thao tác nh p vào xâu ho c in xâu DX (cùng v i AX) tham gia ch a k t qu c a phép nhân s 16 bit ho c làm s b chia cho phép chia s 16 bit Ngoài ra, DX dùng đ ch a đ a ch c a c ng vào/ra tr ng h p th c hi n l nh IN ho c OUT Thanh ghi c (flag register) Thanh ghi c ghi l u tr tr ng thái c a CPU t i m i th i m Thanh ghi c có 16 bít, có bít d tr cho t ng lai (CPU 8088 ch a dùng đ n bít này) Cịn l i bít m i bít t ng ng m t c K t h p l nh nh y có u ki n (conditional jump) v i c này, ng i l p trình d dàng h n 15 14 13 12 x x x x 11 10 OF DF IF TF SF ZF x AF x PF x CF Hình 1.2: C u trúc c a ghi c c a CPU 8088 Các bit đ c đánh d u x c ch a đ c dùng đ n - C CF (Carry Flag): c nh CF=1 có nh ho c tr có m n t bít có tr ng s cao nh t (Most Significant Bit) Ngoài ra, c CF=1 tr ng h p thao tác v i file ho c th m c gây l i nh l i t o, xóa file th m c - C PF (Parity Flag): c ch n l PF=1 t ng s bít b ng k t qu c a phép tính m t s ch n - C AF (Auxiliary Carry Flag): c nh ph AF =1 có nh t bít th sang bít th ho c có m n t bít sang bít th bi u di n BCD c a s - C ZF (Zero Flag): c Zero ZF=1 k t qu tính tốn b ng - C SF (Sign Flag): c d u SF=1 k t qu tính tốn m t s âm - C TF (Trap Flag): c b y TF=1 CPU làm vi c ch đ ch y t ng l nh Ch đ đ c s d ng c n thi t tìm l i (defect) g l i (debug) ch ng trình - C IF (Interrupt enable Flag): c cho phép ng t IF=1, cho phép tác đ ng đ n yêu c u ng t che đ c (maskable interrupts) - C DF (Direction Flag): c h sang trái ng DF=1 CPU x lý chu i kí t theo th t t ph i - C OF (Overflow Flag): c tràn OF=1 k t qu m t s bù hai v h n bi u di n dành cho H th ng bus (Internal bus system) CuuDuongThanCong.com https://fb.com/tailieudientucntt t gi i Ch ng 1: Gi i thi u H th ng bus bên c a CPU 8088 bao g m lo i: - Bus d li u: 16 bít, cho phép di chuy n byte d li u t i m t th i m - Bus đ a ch : 20 bít, có th đ a ch hóa đ c a CPU 8088 1MB c 220 bytes th không gian đ a ch nh - Bus u n: truy n t i tín hi u u n nh RD, WR … 1.2 M T S CH C N NG C A NG T 21H Ph n trình bày hàm thơng d ng c a ng t 21h ó hàm thao tác vào/ra đ i v i kí t , chu i ký t , file, th m c, k t thúc ch ng trình tr l i quy n u n cho H u hành DOS Hàm 01: đ c kí t (có hi n) t bàn phím Input: AH=01 Output: AL= mã ASCII c a ký t AL=0 n u gõ vào phím ch c n ng Hàm 02: hi n kí t lên hình Input: AH=02 DL= mã ASCII c a ký t c n hi n th Output: Hàm 08: đ c kí t (khơng hi n) t bàn phím Input: AH=08 Output: AL= mã ASCII c a ký t AL=0 n u gõ vào phím ch c n ng Hàm 09: hi n xâu kí t k t thúc b i ‘$’ lên hình Input: AH = 09 DX = đ a ch offset c a xâu kí t Hàm 0Ah: đ c xâu kí t t bàn phím Input: AH = 09 DX = đ a ch offset c a vùng đ m ch a xâu kí t Output: DX = đ a ch offset c a xâu kí t Hàm 39h: t o th m c Input: AH = 39h DX = đ a ch offset c a tên th m c Output: N u thành công, th m c đ c t o N u không thành công, CF=1 AX= mã l i Hàm 3Ah: xóa th m c Input: AH = 3Ah DX = đ a ch offset c a tên th m c CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 1: Gi i thi u Output: N u thành công, th m c đ c xóa N u khơng thành cơng, CF=1 AX=mã l i Hàm 3Ch: t o file Input: AH = 3Ch DX = đ a ch offset c a tên file CX = thu c tính file Output: N u thành công, file đ c t o ra, CF=0 AX= th file (file handle) N u không thành công, CF=1 AX= mã l i Thu c tính file đ c đ nh ngh a nh sau: 00h: file bình th ng (plain old file) 01h: file ch đ c (Read Only) 02h: file n (Hidden from searches) 04h: file h th ng (system) 08h: thu c tính cho nhãn đ a 10h: thu c tính cho th m c Hàm 3Dh: m file Input: AH = 3Dh AL = mode Output: N u thành công, file đ c t o ra, CF=0 AX= th file (file handle) N u không thành công, CF=1 AX= mã l i Hàm 3Eh: đóng file Input: AH = 3Eh BX = th file Output: N u thành cơng, file đ c đóng l i CF=0 N u không thành công, CF=1 AX= mã l i Hàm 3Fh: đ c t file Input: AH = 3Fh DS:DX = đ a ch offset c a vùng đ m CX = s byte c n đ c BX = th file Output: N u thành công, CF=0 AX= s byte đ c đ c N u không thành công, CF=1 AX= mã l i CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép Thoat: Pop ES Pop DI Pop CX Pop BX Pop AX Mov AL,20h ; tra lai ngat Out 20h,AL IRET TryKB endp ; End Start 4.2.2 L p trình ph i ghép v i hình a C b n v hình B nh Video Màn hình c a máy tính hi n đ i ngày đ u s d ng b nh video (b nh hình) đ ch a n i dung hình nh đ c hi n th thơng tin liên quan B nh video đ c g i b đ m khung (frame buffer) T th h Pentium, b vi x lý cịn có c ng ga t c đ h a AGP (Accelerated Graphics Port) C ng cho phépb vi x lý d h a truy c p tr c ti p vào b nh h th ng cho phép tính đ h a nh ng v n có b nh video riêng đ l u tr n i dung m nh hình Ph ng pháp cho phép s d ng b nh h th ng m m d o h n mà không làm nh h ng t i t c đ máy tính C ng AGP ngày tr thành chu n máy tính hi n đ i D i b ng dung l Dung l nh ng b ng b nh video kh n ng hi n th hình Chi u sâu m u S màu 1024x768 8-bit 256 800x600 16-bit 65,536 1024x768 8-bit 256 800x600 16-bit 65,536 1280x1024 24-bit 16.7 million 4MB 1024x768 24-bit 16.7 million 6MB 1280x1024 24-bit 16.7 million 8MB 1600x1200 32-bit 16.7 million 1MB 2MB B chuy n đ i s /t Kích th c hình ng t Tín hi u hình khơng ph i d ng s mà d ng tín hi u t ng t Tín hi u ph i qua m t b bi n đ i b nh t ng t / s (RAMDAC- RAM Digital Analog Converter) đ c n i dung b nh video r i chuy n sang tín hi u t ng t Qua trình l p l i theo t n s làm t i hình B x lý Video 131 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép B x lý video biên d ch th c hi n l nh đ h a thành t ng m nh c th đ đ a RAMDAC B vi x lý video có c u trúc hồn ch nh ph c t p nh m t b vi x lý th c s Nh có b x lý video nên gi m tính tốn cho t ng m nh đ hi n th đ i v i b x lý Thay vào CPU ch c n truy n tham s c n b n c a đ i t ng c n hi n th sang b x lý video B x lý video s tính t ng m nh c n hi n th t tham s nh n đ c, gi i phòng CPU kh i nhi m v h a ba chi u ph n mêm b t k p đ c v i ph n c ng trình phát tri n c a hi n th đ h a ba chi u, h u hành cung c p m t th vi n giao di n l p trình ng d ng (Application Programming Interface) Gi ng nh BIOS, API cung c p l nh đ h a chu n ch ng trình x lý video thay l p trình tr c ti p Ph n m m u n s ph i biên d ch ti p nh ng l nh sang l nh máy b Ví d v L p trình ph i ghép hình D i m t s ví d v l p trình hình có s d ng ch c n ng d ch v BIOS cung c p trình bày ph n 3.4.1 Ví d 1: In hình 256 kí t c a b ng mã ASCII, m i kí t có m t thu c tính khác ch đ text .MODEL Tiny CODE Org 100h Jmp Start Start: Mov AL,0 Mov BL,0 ; thuoc tính v i ki tu co ma ASCII =0 Mov DL,0 ; DL= so cot, bat dau tu cot Mov DH,4 ; Bat dau tu hang thu Mov CX, 255 ; in 256 kí t InTiep: Push AX Mov AH,2 Int 10h ; dat vi tri tro Pop AX Mov AH,9 ; in ki tu AL voi thuoc ; thuoc tinh BL Push AX Push CX Mov CX,1 ; in ki tu Int 10h Pop CX Pop AX Inc AL ; ki tu ke tiep Inc BL ; thuoc tinh ke tiep Inc DL ; sang cot ben canh 132 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép Cmp DL,79 ; Cot cuoi cung? Jb TiepTuc Mov Dl,0 ; xuong dong ke tiep Inc DH TiepTuc: Loop InTiep Int 20h End Start Ví d 2: V m t hình ch nh t ch đ đ h a VGA MODEL Tiny CODE Org 100h Jmp Start TopRow dw 100 TopCol dw 100 BotRow dw 400 BotCol dw 600 Color db ; mau Start: Mov AH,0h ; thiet lap che do hoa Mov AL,12h ; VGA mode Int 10h Mov CX, BotCol Sub CX,TopCol Mov SI,TopRow Mov DI,TopCol ; Ve cach tren TopSide: Call DrawPixel Inc DI ; goi chuong trinh ve diem anh ; Loop TopSide Mov CX, BotRow Sub CX, TopRow Mov SI, TopRow ; Ve cach canh ben Side: Mov DI, TopCol Call DrawPixel ; goi chuong trinh ve diem anh Mov DI, BotCol Call DrawPixel ; goi chuong trinh ve diem anh Inc SI Loop Side Mov CX, BotCol 133 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép Sub CX,TopCol Mov SI, BotRow Mov DI, TopCol ; Ve cach duoi BotSide: Call DrawPixel Inc DI ; goi chuong trinh ve diem anh ; Loop BotSide Mov AH, ; Cho phim go vao Int 21h Mov AH,0 Mov AL,2 Int 10h Int 20h ; chuong trinh ve diem anh DrawPixel Proc Push AX Push CX Push DX Mov DX, SI Mov CX,DI Mov AL, Color Mov AH,0CH Int 10h Pop DX Pop CX Pop AX Ret DrawPixel Endp End Start Ví d 3: Vi t m t m nh tr c ti p vào b nh hi n th (không thông qua RAM) ây cách nhanh nh t, nhiên th t c vi t vào b nh hi n th ph thu c vào loai card u n hình c th Ch ng trình sau đ c th c hi n ch đ đ h a (640x200x2) VeDiemAnh Proc Near ; DX=hàng, CX= c t ; ES=B800H ; Gi s ch đ đ h a đ c kh i t o nh sau: ; AH=0, AL=6, Int 10h Xor BX,BX ; BX=0 SHR DX,1 ; kiem ta xem diem anh o dong chan hay le Add BX, 8*1024 ; o dong chan 134 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép TinhTiep: Mov AX,DX ; DX =so hang Mov CL,2 SHL DX,CX ; DX=DX*4 Add DX,AX ; DX=5*DX Mov AX,CX Mov CL,4 SHL DX,CL ; DX=DX*16 Add BX,DX ; BX=offset cua dong chua diem anh Mov DX,AX AND DX,7 ; DX=DX Mod = vi tri byte tren dong Mov CL,3 ; no chua diem anh SHR AX,CL; AX=AX div 8= vi tri byte tren dong Add, BX,AX ; [BX] la byte chua diem anh NEG DL Add DL,7 Mov CL,DL Mov AL,1 SHL AL,CL OR ES:[BX], AL Ret VeDiemAnh Endp 4.3 L P TRÌNH H P NG TRONG WINDOWS Ph n gi i thi u v h p ng s d ng đ l p trình windows m c cao (High-Level Assembly) hay HLA công c 4.3.1 Công c h tr l p trình h p ng windows D i công c đ h tr ng (HLA) windows i l p trình vi t ch ng trình b ng h p ng b c cao - Ngôn ng HLA - Th vi n chu n HLA - RadASM: môi tr - B công c g r i OllyDbg (Olly Debugger) - Ch - M t b liên k t (linker) có th k t n i đ - M t trình biên d ch tài nguyên (resource compiler) nh rc.exe c a Microsoft - M t s ti n ích cho phép xây d ng ng d ng (nh nmake c a Microsoft ho c make c a Borland) - Các module th vi n Win32 ng phát tri n ng d ng cho HLA ng trình x lý đ u đ output file PE/COFF (nh MASM, FASM) c file output t b d ch.(MS link) 135 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép 4.3.2 S d ng cơng c phát tri n RadASM Khi kh i đ ng, c a s hình RadASM nh sau: Nó bao g m menu chính, m t c a s dành cho file thu c v m t d án va c a s thu c tính c a file/ đ i t ng c a d án th c hi n t o m t Project m i, ng i dùng vào menu File, ch n new project Khi hình thơng tin c a project m i s đ c hi n nh hình sau: 136 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép Ng i l p trình có th ch n m t s m u ng d ng c a project có s n m t b n lo i: ng d ng Console (input output c a ch ng trình đ u hi n th c a s console), ng d ng ki u h p tho i (ch ng trình [input output] ng i dùng t ng tác v i qua h p tho i), ng d ng windows thông th ng, t o hàm đ d ch th vi n liên k t đ ng (DLL) Ti p đ n, ng i l p trình đ a vào tên project, mô t c a project, th m c ch a project template s d ng cho project Sau so n xong ch ng trình ng i l p trình ti n hành d ch, debug… r i ch y ch trình C a s d i giúp ng i l p trình th c hi n vi c đó: ng 137 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép Tùy theo t ng giai đo n phát tri n ng d ng Ng sau đ d ch, k m tra l i ho c th c hi n ch ng trình i l p trình c a th th c hi n thao tác 4.4 TÓM T T Ch ng trình bày v ph ng th c truy n thơng tin n i ti p v i b u h p UART 8250A Trong ph n này, ta tìm hi u v c ch truy n thông tin n i ti p ki u đ ng b , d b , ghi bên c a UART 8250A l p trình cho UART 8250A Ti p theo ph n l p trình ph i ghép cho bàn phím: nguyên t c ho t đ ng c a bàn phím, b đ m bàn phím, vùng d li u, s d ng d ch v c a BIOS đ l p trình u n bàn phím thơng qua m t s ví d đ n gi n mang tính minh h a T ng t , ta c ng tìm hi u v cách l p trình u n hình thông qua hai ph ng pháp: s d ng d ch v c a BIOS truy nh p tr c ti p vào b nh hình Tuy nhiên, cách th hai t ng đ i khó vi ph thu c vào lo i card u n hinh ng i l p trình ph i cài đ t m t ánh x t b nh RAM sang b nh hình, nên cách đ c xem nh m t s tham kh o cho ng i l p trình h th ng Ph n cu i ph n gi i thi u trình h p ng Windows thơng qua cơng c RadASM Ngoài m t s đ i t ng, ch c n ng đ c môi tr ng phát tri n cho ng d ng RadASM cung c p d i d ng th vi n, vi c vi t ng d ng b ng h p ng windows c ng gi ng môi tr ng khác Nên tác gi không đ c p k cu n sách ây ph n ch mang tính ch t gi i thi u cho đ c gi 138 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép 4.5 BÀI T P 4.5.1 Câu h i tr c nghi m Lý c a vi c truy n thông n i ti p gi a hai đ i t ng c n truy n tin cho là: A Truy n thông n i ti p công ngh m i B Truy n thông gi a hai đ i t ng truy n/nh n thong tin kho ng cách xa C Truy n thông n i ti p nhanh h n truy n thông song song D Truy n thơng n i ti p xác h n song song Phát bi u sau nh t: A Truy n tin d b truy n theo t ng kí t cịn truy n đ ng b truy n theo nhi u kí t B Truy n tin d b ki u truy n tin song song truy n đ ng b truy n tin n i ti p C Truy n tin đ ng b truy n song song truy n tin d b ki u truy n tin n i ti p D Cách mã hóa kí t hai ki u truy n tin đ ng b d b luôn khác Thanh ghi d i quy t đ nh khuôn d ng d li u truy n: A Thanh ghi tr ng thái modem B Thanh ghi tr ng thái đ ng truy n C Thanh ghi nháp D Thanh ghi u n đ ng truy n Phát bi u sau nh t cho m t khung truy n ki u d b : A Dành nh t bít đ mã hóa d li u B Dành nh t bít đ mã hóa d li u C Có nh t bít Start D Có nh t bít Stop Phát bi u sau nh t v bít parity khung truy n ki u d b : A Trong m t khung truy n có nh t bít parity B Trong m t khung truy n có th khơng có bít parity C Trong m t khung truy n có nhi u nh t bít parity D Bít parity l u tr ng.thái c a khung truy n Khi ng i dùng nh n phím Ctrl_NumLock, máy tính s : A L u mã Scan c a hai phím Ctrl NumLock vào b đ m bàn phím B Th c hi n m t vòng l p mà khơng l u l i vào vùng đ m bàn phím C L u mã ASCII c a hai phím Ctrl NumLock vào b đ m bàn phím D L u c mã Scan mã ASCII c a hai phím Ctrl NumLock vào b đ m bàn phím T i m t th i m, b đ m bàn phím có th ch a đ c t i đa: A 16 mã phím B mã phím C 32 mã phím 139 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ch ng 4: L p trình ph i ghép D 24 mã phím N u tr Head b ng tr Tail thì: A B đ m bàn phím đ y B Có mã phím C Có 16 mã phím D B đ m bàn phím r ng 4.5.2 Bài t p L p trình Hãy vi t ch ng trình h p ng t đ ng b t t h p phím CapLock, Insert, NumLock l p trình đ kh i t o ch đ làm vi c m t m ch UART 8250A cho c ng COM2 v i thơng s : a bít mã kí t truy n , t c đ truy n 1200 bits/ giây, parity l , hai bít stop b bít mã kí t truy n , t c đ truy n 9600 bits/ giây, parity ch n 1.5 bít stop S d ng d ch v ng t c a BIOS ph c v cho hình (ng t 10h) ch đ d h a đ v hình hình sau: a Tam giác b Hình vng c Hình trịn d Hình Parabol 4.6 TÀI LI U THAM KH O Nguy n Nam Trung C u trúc máy Vi tính Thi t b ngo i vi Nhà XB Khoa h c K thu t.2000 H Khánh Lâm Giáo trình K thu t Vi x lý T p 1&2 Nhà XB B u n 2006 ng Thành Phu Turbo Assembler ng d ng Nhà XB Khoa h c K thu t 1998 4.Nguy n Minh San C m nang L p trình H th ng (t p 2) B n d ch Nhà XB Tài Th ng Kê 1996 5.Nguy n ình Vi t Giáo Trình nh p mơn H p ng L p trình H th ng Hà n i 1998 140 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tài li u tham kh o TÀI LI U THAM KH O ng Thành Phu Turbo Assembler ng d ng Nhà XB Khoa h c K thu t 1998 Nguy n Nam Trung C u trúc máy Vi tính Thi t b ngo i vi Nhà XB Khoa h c K thu t.2000 H Khánh Lâm Giáo trình K thu t Vi x lý T p 1&2 Nhà XB B u n 2006 4.Nguy n Minh San C m nang L p trình H th ng (t p 1&2)- b n d ch Nhà XB Tài Th ng Kê 1996 5.Nguy n ình Vi t Giáo Trình nh p mơn H p ng L p trình H th ng Hà n i 1998 webstie : www.emu8086.com Randall Hyde Entire Windows Assembly Programming University California Riverside, USA 2003 V n Th Minh K thu t Vi x lý Nhà XB Giáo d c 1997 141 CuuDuongThanCong.com https://fb.com/tailieudientucntt M cl c M CL C L I NÓI CH U .1 NG 1: GI I THI U 1.1 C U TRÚC B VI X LÝ 1.1.1 S đ ki n trúc b Vi x lý 8088 1.1.2 Ch c n ng thành ph n .4 1.2 M T S CH C N NG C A NG T 21H 1.3 GI I THI U V T P L NH C A 8088 1.3.1 Nhóm l nh di chuy n d li u 1.3.2 Nhóm l nh tính tốn s h c 11 1.3.3 Nhóm l nh thao tác bít 14 1.3.4 Nhóm l nh làm vi c v i xâu kí t 17 1.3.5 Nhóm l nh nh y 18 1.3.6 Các l nh u n khác .20 1.4 TÓM T T 21 1.5 CÂU H I VÀ BÀI T P .22 1.6 TÀI LI U THAM KH O 23 CH NG 2: L P TRÌNH B NG H P NG .24 2.1 VI T VÀ TH C HI N M T CH NG TRÌNH H P NG 24 2.1.1 C u trúc l nh khai báo d li u cho ch 2.1.2 Khung c a ch ng trình 24 ng trình H p ng 26 2.1.3 T o, d ch, h p d ch th c hi n ch ng trình H p ng .30 2.2 CÁC C U TRÚC L P TRÌNH C B N TRONG CH NG TRÌNH H P NG 31 2.2.1 C u trúc tu n t 32 2.2.2 C u trúc IF… THEN 32 2.2.3 C u trúc IF… THEN…ELSE 33 2.2.4 C u trúc CASE 34 2.2.5 C u trúc l p FOR-DO 36 2.2.6 C u trúc l p WHILE-DO .37 2.2.7 C u trúc l p REPEAT-UNTIL 38 2.3 CH NG TRÌNH CON VÀ MACRO 39 2.3.1 Ch ng trình con: c ch làm vi c c u trúc 39 2.3.2 Truy n tham s .41 2.3.3 Ch ng trình g m nhi u module 42 2.3.4 Liên k t th t c vào m t th vi n 47 142 CuuDuongThanCong.com https://fb.com/tailieudientucntt M cl c 2.3.5 Macro 48 2.4 Ch ng trình ví d 53 2.5 TÓM T T 60 2.6 BÀI T P 61 2.7 TÀI LI U THAM KH O 61 CH NG CÁC CÔNG C H TR 62 3.1 B G R I DEBUG 62 3.1.1 T ng quan v Debug 62 3.1.2 S d ng Debug 62 3.1.3 Các l nh c a Debug 63 3.2 CH NG TRÌNH MƠ PH NG EMU8086 69 3.2.1 Các ch c n ng so n th o, d ch th c hi n ch 3.2.2 Ch c n ng mô ph ng trình th c hi n ch 3.2.3 Các ch ng trình 69 ng trình 70 ng trình m u 72 3.3 K T N I H P NG V I CÁC NGÔN NG B C CAO 80 3.3.1 Ngôn ng C H p ng 80 3.3.2 Ngôn ng Pascal H p ng 93 3.4 CÁC CH 3.4.1 NG TRÌNH NG T 96 ng d ng ng t c a BIOS & DOS 96 3.4.2 Ch ng trình th ng trú ch ng trình ng t 108 3.5 TÓM T T 112 3.6 BÀI T P 113 3.6.1 Câu h i tr c nghi m 113 3.6.2 Bài t p 114 3.7 TÀI LI U THAM KH O 115 CH NG 4: L P TRÌNH PH I GHÉP 116 4.1 TRUY N THÔNG TIN N I TI P V I B I U H P UART 116 4.1.1 C b n v truy n tin n i ti p 116 4.1.2 Các ghi c a UART 8250A/16450 117 4.1.3 L p trình cho UART 8250A/16450 121 4.2 M T S L P TRÌNH PH I GHÉP C B N 125 4.2.1 L p trình ph i ghép v i bàn phím 125 4.2.2 L p trình ph i ghép v i hình 131 4.3 L P TRÌNH H P NG TRONG WINDOWS 135 4.3.1 Công c h tr l p trình h p ng windows 135 4.3.2 S d ng công c phát tri n RadASM 136 4.4 TÓM T T 138 143 CuuDuongThanCong.com https://fb.com/tailieudientucntt M cl c 4.5 BÀI T P 139 4.5.1 Câu h i tr c nghi m 139 4.5.2 Bài t p L p trình 140 4.6 TÀI LI U THAM KH O .140 TÀI LI U THAM KH O 141 M C L C 142 144 CuuDuongThanCong.com https://fb.com/tailieudientucntt L P TRÌNH H VÀ TH NG I U KHI N THI T B Mã s : 492LHD350 Ch u trách nhi m b n th o TRUNG TÂM ÐÀO T O B U CHÍNH VI N THƠNG CuuDuongThanCong.com https://fb.com/tailieudientucntt ... file … c Khai báo bi n Các bi n có th đ c khai báo ba ki u d li u khác là: bi n ki u byte, bi n ki u t (2 byte) bi n ki u t kép (4 byte) Bi n ki u byte: D ng khai báo: Tên bi n DB ? Ví d : X... ch th c hi n vi c in hình m t l i chào “Hello World” ; Ch ng trình Hello World Ch ng trình in hình l i chào Hello World 28 CuuDuongThanCong. com https://fb .com/ tailieudientucntt ng trình Ch ng 2:... v m t ch ng trình COM đ n gi n, ch c dùng cho khai báo ng trình Hello World .MODEL Tiny CODE Org 100h Jmp Start Msg db ‘Hello World’, ‘$’ 29 CuuDuongThanCong. com https://fb .com/ tailieudientucntt