CTMT - Part 5

Câu hỏi 1: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM thực hiện đặt mode màn hình là 00h, xoá màn hình và hiển thị lên màn hình máy tính  dòng chữ: “LOP TIN HOC” có thuộc tính là nền vàng chữ đỏ tại vị trí hiện thời của con trỏ. - P2

Câu hỏi 2: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  hiển thị lên màn hình bắt đầu tại vị trí cột 20, dòng 5 một cột 5 chữ H có thuộc tính nền trắng, chữ màu vàng. P2

Câu hỏi 3: Giả sử có 1 dãy ký tự (mã ASCII) nhận từ bàn phím được nhớ trong 1 vùng nhớ có địa chỉ DS:SI, độ dài của dãy ký tự đó được lưu giữ trong thanh ghi CX. Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  truyền dãy ký tự đó ra cổng COM1 của máy tính với tốc độ truyền là 19200bps, 7 bits số liệu, 2 bit stop, không kiểm tra chẵn lẻ, tần số làm việc đưa vào chân Xin của vi mạch 8250 là 1,842*106 hz.. - P4

Câu hỏi 4: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  thực hiện  vẽ trên màn hình ở chế độ đồ hoạ 1 đường dọc có độ dày 4 điểm sáng bắt đầu từ toạ độ hàng 80 cột 60-63 đến toạ độ hàng 40 cột 60-63. - P6

Câu hỏi 5:  Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  hiển thị thông báo: “Phim nhan duoc la:” thuộc tính nền trắng, chữ xanh lục tại ví trí hiện thời của con trỏ. Sau đó chương trình sẽ chờ nhận phím từ bàn phím và hiện ra màn hình. Xuống dòng, về đầu dòng rồi lại hiển thị thông báo trên. Quá trình cứ lặp liên tục cho đến khi bạn ấn  phím ESC có mã ASCII là 1Bh chương trình sẽ kết thúc. Mã ASCII của ký tự xuống dòng là 0dh, mã ASCII của ký tự về đầu dòng là 0ah.? - P7

Câu hỏi 6: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  đặt Card Video làm việc ở chế độ 02, sau đó hiển thị lên màn hình bắt đầu tại ví trí có toạ độ là hàng 5 cột 12 lần lượt 6 ký tự có mã ASCII như sau: 3fh, 3eh, 3dh, 3ch, 3bh, 3ah, mỗi ký tự cách nhau 1 khoảng trống với thuộc tính nền đỏ chữ trắng. P7

Câu hỏi 7: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  xác định tham số truyền cho vi mạch 8250 trên máy tính có địa chỉ giải mã là 3f8h như sau: 7 bit data, 1 bits stop, no parity, tốc độ truyền là 9600 bps, với tần số clock là 1,843Mhz. - P9

Câu hỏi 8: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM thực hiện: Máy tính sẽ liên tục hỏi xem có phím được ấn  hay không. Nếu có phím được ấn thì hiện thị thông báo: 

 "phim duoc an la:" và ký tự. Xuống dòng, về đầu dòng rồi lại đợi nhận 1 phím mới. Chương trình kết thúc khi ấn phím ESC -  P10

Câu hỏi 9: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  thực hiện:

Xoá màn hình. Thiết lập chế độ màn hình 06 (đồ hoạ, phân giải 640x200, 2màu),

Vẽ 1 đường chéo màu trắng từ điểm ảnh có toạ độ (60,60) đến toạ độ (40,20). - P11

Câu hỏi 10: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  cho vi mạch vào/ra Intel 8255A giả sử có địa chỉ giải mã là 04f0 làm công việc  sau:

Máy tính sẽ liên tục đọc trạng thái của một mạch điện qua cổng B của 8255. Nếu bit D2 của cổng B có mức logic là “1” thì sẽ tạo ra trên cổng PC 4 của 8255 một xung vuông có độ rộng 33% (Phần xung dương bằng 1/3 phần xung âm). Giả sử chương trình tạo độ rộng được cho trước dưới dạng một chương trình con có tên là: DELAY. - P11

Câu hỏi 11: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  thực hiện nhận số liệu từ cổng COM1 (dưới dạng mã ASCII). Cất số liệu nhận được vào vùng nhớ có địa chỉ DS:DI. Nếu mã ASCII nhận được  có giá trị là 1dh thì kết thúc chương trình. Với định dạng đường truyền như sau 7 bit data, 1 bits stop, no parity, tốc độ truyền là 19,200 bps, với tần số clock là 1,843Mhz. - P13

Câu hỏi 12: Giả sử vi mạch 8255 cắm trên 1 Card vào slot ISA của máy tính IBM PC có địa chỉ giải mã  là 0154h Lập trình hợp ngữ Assembly file có phần mở rộng là .COM  cho vi mạch này làm việc như sau: Hai nhóm làm việc ở mode 0, cổng A là cổng vào, cổng B là cổng ra và tất cả các bit của cổng C là ra. Máy tính sẽ liên tục đọc và kiểm tra bit D6 của cổng A. Nếu bit này có mức logic “1” thì đưa ra trên cổng B các bit D0, D2, D4, D6 mức logic “1”. - P15

--------------------------------------------------------------------------------------------------------

Câu 1:

; Hien thi dong chu "LOP TIN HOC" nen do chu vang tai vi tri hien thoi cua con tro.

code segment

assume cs:code, ds:code

org       100h

begin:

; Dat mode man hinh: Su dung Int 10h voi Ah = 0; Al = che do

            mov     ah,00               ;

            mov     al,00

            int        10h                  ; Dat che do xong

;  Hien thi dong chu: Sư dung Int 13h voi al =00 (kh cap nhat vi tri) Bl chưa byte thuoc tinh

            mov     ah,13h             ; dung int 10h voi ah = 13h

            mov     al,00                ; cap nhat thuoc tinh cua xau, khong cap nhat vi tri con tro

            mov     cx,0bh             ; do dai xau ky tu là 11 ky tu

            mov     bh,00               ; trang hien thi la trang 0

mov     bl, 0e4h           ; thuoc tinh nen vang chu do 

            lea        bp,str               ; nap dia chi dau cua xau

            int        10h                  ; Hien thi ky tu ra man hinh

; Ket thuc chuong trinh: Su dụng ham Int 21h voi Ah = 4ch.

            mov     ah,4ch

            int        21h

                        str        db "LOP TIN HOC"

code ends

end begin

Câu 2

; Hien thi ra man hinh tai vi tri (20,5) mot cot 5 chu H nen trang, chu vang.

code segment

assume cs:code, ds:code

org       100h

begin:

; Dat mode man hinh: Su dung Int 10h voi Ah = 0; Al = che do

            mov     ah,00                           ;

             mov    al,02                            ; che do 80 cot * 25 hang.

            int        10h                              ; Dat che do xong

; Dua con tro ve vi tri cot 20 dong 5: Su dung ham Int 10h voi ah =02,

; Dh= toa do hang, Dl = toa do cot,

; su dung SI la thanh ghi dem so dong hien thi

            mov                 dh,05h             ; toa do tai hang 5

            mov                 dl,14h              ; toa do cot 20

            mov                 si,05                 ; hien thi mot cot 5 ky tu

            lap:

            mov                 ah,02

            int                    10h                   ; dat con tro ve vi tri trong dh va dl

; Hien thi mot cot 5 chu H tai vi tri con tro vua dat.

; Su dung ham Int 10h voi ah = 09h; bl thuoc tinh, cx so lan hien thi

            mov                 cx, 01              ; so ky tu hien thi là 1

            mov                 al, "H"             ; Al chua ma ASCII cua ky tu H

            mov                 ah,09               ; Hien thi ky tu

            mov                 bl,7eh              ; thuoc tinh nen trang chu vang

            int                    10h                  ; hien thi 1 chu H

            inc                   dh                    ; tang toa do hang len 1

            dec                  si                      ; giam thanh ghi dem so lan hien thi 1 don vi

            jnz                   lap                   ; neu chua du 5 hang thi lam lai

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

            mov                 ah,4ch

            int                    21h

code ends

end begin       

Câu 3

với tốc độ truyền là 19,200 bps thì số chia được sẽ được xác định như sau:

Số chia = X(in)/ (Tốc độ truyền * 16) = ( 1,8432*10^6 ) / (19.200 * 16) = 6

; Truyen day so lieu tu bo nho ra cong COM1 voi toc do 19,200bps

code segment

assume cs:code, ds:code

org       100h

begin:

; Thiet lap duong truyen: dat bits D7 cçṡ thanh ghi 3fbh len 1

mov                 al,80h              ; dat DLAB = 1

            mov                 dx, 3fbh          ; napdia chi thanh ghi dieu khien duong truyen

            out                   dx, al               ; DLAB = 1

; gui so chia: khi bit D7 của thanh ghi 3fb =1, thanh ghi

            mov                 ax, 0006          ; toc do truyen la 19,200 bps 

            mov                 dx, 3f8h          ; dia chi phan thap so chia

            out                   dx,al                ; nap phan thap so chia

            mov                 al, ah                ; chuyen phan cao so chia sang al

            inc                   dx                    ; dia chi phan cao so chia       

            out                   dx, al               ; nap phan cao so chia

; thiet lâp tham so truyen: nap vao thanh ghi dieu khien duong truyen 3fbh

            mov                 al,86h              ; tham so truyen 7 bit data, 2 bit stop, no parity

            mov                 dx,03fbh         ; dia chi thanh ghi dieu khien duong truyen

            out                   dx,al

; Thuc hien truyen so lieu

            mov                 al,03                ; DLAB = 0 de xac lap thanh ghi co dia chi

            mov                 dx,03fbh         ; 3f8h giu chuc nang thanh ghi chua du lieu

            out                   dx,al                ; se phat

    L1:

            mov                 dx,3fdh           ; dia chi thanh ghi LSR

     L2:

            in                     al,dx                ; doc cac bit cua thanh ghi trang thai

            and     al,20h              ; Neu so lieu da gui di thi bit D5=1,

            cmp                 al,20h              ; UART san sang gui byte tiep va TSR rong

            jnz                   L2                    ; neu chua thi doc lai va kiem tra

            mov                 al,[si]               ; dua byte tiep theo vao thanh ghi al

            mov                 dx,03f8h         ;  gui di

            out                   dx,al

            inc                   si                      ; tro den ky tu tiep theo cua xau

            loop                 L1

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

            mov                 ah,4ch

            int                    21h

code ends

end begin

Câu 4

; Ve 1 duong doc tren man hinh bat dau tu toa do (80,60) den toa do (40,60)

 code segment

assume cs:code, ds:code

org 100h

begin:

; xoa man hinh: su dung int 10h voi ah = 06

            mov                 ax, 0600h        ;

            mov                 bh, 07h            ;

            mov                 cx, 0000                      ; toa do dau cua man hinh

            mov                 dx, 184fh                    ; toa do cuoi man hinh

            int                    10h

; dat che do do hoa cho man hinh: ah = 0, al = 06 (al = 13h)

            mov     ax, 0006h

            int        10h

; ve duong doc tu (80,60-63) den (40,60-63)

            mov     dx, 80                          ; toa do dau hang diem anh

L:         mov    cx, 60                          ; toa do dau cot diem anh

lap:

         mov        ah, 0ch ; 0c viet vao diem anh

            mov     al,71h              ; mo diem anh (che do 05 neu al=10 mau hong)

            int        10h

          inc       cx               ; viet diem sang thu 2

         cmp     cx,63           ; viet 4 diem anh

         jnz       lap               ; neu chu du 4 diem anh thi viet tiep

         dec         dx                    ; giam vi tri hang        

            cmp     dx, 40              ; kiem tra vi tri cuoi cung

            jnz       L                      ; lam lai neu chua bang

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

            mov                 ah,4ch

            int                    21h

code ends

end begin

Câu 5

; hien thi thong bao:  "phim duoc an la:" nhan phim va hien thi ra man hinh voi thuoc tinh

; nen xanh chu trang,  Xuong dong, ve dau dong roi lai hien thi dong chu tren, doi  nhan 1

; phim moi. Chuong trinh ket thuc khi an phim ESC.

code segment

assume cs:code, ds:code

org       100h

begin:

; Hien thi thong bao; su dung int 21h voi ah = 09h

            mov     ah,09h

            lea        dx,msg

            int        21h

; Kiem tra co phim an: int 21h. ah=08

            mov     ah,08

            int        21h

; hien thi phim an co thuoc tinh. int 10h, ah = 09

            mov     ah,09h

            mov     bl,72h              ; thuoc tinh       

            mov     cx,01               ; hien thi mot ky tu     

            int        10h

; Neu phim an la ESC: ket thuc

            cmp     al,1bh

            je         ket_thuc

; xuong dong ve dau dong: int 21h voi ah=02

            mov     ah,02

            mov     dl,0dh

            int        21h

            mov     dl,0ah 

            int        21h

            jmp      begin               ; quay lai cho mot phim moi

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

ket_thuc:

            mov     ah,4ch

            int        21h     

            msg      db 'phim duoc an la: $'

code ends

end begin

Câu 6

;hien thi 5 ky tu co ma ASCII 3fh, 3e, 3d,3c,3b bat dau tu dong 5 cot 12

; che do 02 co thuoc tinh nen do chu trang  moi chu cach nhau 2 khoang trong

code segment

assume cs:code, ds:code, ss: code

org 100h

begin:

; su dung thanh ghi si lam con dem

             mov     si,05                 ; hien thi 5 lan

;dat che do hien thi (AH = 00,AL= che do) int 10h

            mov         ax,0002h

            int        10h

; dat vi tri con tro (ah=02, dh=hang; dl = cot)

             mov     dh,05

             mov     dl,0ch

            call    vitri   

;hien ky tu co thuoc tinh (ah =09, bl=thuoc tinh,ma ASCII trong al)

             mov     al,3fh               ; ma ASCII cua ky tu

            mov     bl,47h               ; thuoc tinh

lap:

            mov     ah,03               ; xac dinh vi tri hien thoi cua con tro, dh=hang, dl=cot

            int        10h

           mov     cx,01                ; hien 1 ky tu

            mov     ah,09

            int     10h

             inc     dl                      ; tang vi tri con tro sang cot ben canh

            dec     al            ; Al chua ma ASCII cua ky tu tiep theo

; dich vi tri con tro

            call    vitri

; tao 1 khoang trong

            call    khoangtrong       

            dec     si

            jnz     lap   

; ket thuc

             mov     ah,4ch

             int     21h

; chuong trinh con dat con tro vao vi tri

 vitri     proc near        

            mov         ah,02h

            int            10h

;chuong trinh con tao khoang trong(int 21h Ah=02, dl ma ASCII)

   khoangtrong proc near        

            push    ax

            push    dx

            mov     ah,02

            mov     dl,00

            int     21h

            pop     dx

            pop     ax

 code ends

end begin

Câu 7

với tốc độ truyền là 9,600 bps thì số chia được sẽ được xác định như sau:

Số chia = X(in)/ (Tốc độ truyền * 16) = ( 1,8432*10^6 ) / (9.600 * 16) = 12

; Truyen day so lieu tu bo nho ra cong COM1 voi toc do 9,600bps

code segment

assume cs:code, ds:code

org       100h

begin:

; Thiet lap duong truyen: dat bits D7 cçṡ thanh ghi 3fbh len 1

          mov                   al,80h                          ; dat DLAB = 1

            mov                 dx, 3fbh          ; napdia chi thanh ghi dieu khien duong truyen

            out                   dx, al               ; DLAB = 1

; gui so chia: khi bit D7 cçṡ thanh ghi 3fb =1, thanh ghi

            mov                 ax, 000ch                     ; toc do truyen la 9,600 bps   

            mov                 dx, 3f8h                      ; dia chi phan thap so chia

            out                   dx,al                            ; nap phan thap so chia

            mov                 al, ah                            ; chuyen phan cao so chia sang al

            inc                   dx                                ; dia chi phan cao so chia       

            out                   dx, al                           ; nap phan cao so chia

; thiet lâp tham so truyen: nap vao thanh ghi dieu khien duong truyen 3fbh

            mov                 al,83h              ; tham so truyen 7 bit data, 1 bit stop, no parity

            mov                 dx,03fbh         ; dia chi thanh ghi dieu khien duong truyen

            out                   dx,al

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

            mov                 ah,4ch

            int                    21h

code ends

end begin       

Câu 8

May tinh se lien tuc hoi xem co phim duoc an  hay khong. Neu co phim duoc an thi hien thi thong bao:

; "phim duoc an la:" va ky tu. Xuong dong, ve dau dong roi lai doi

; nhan 1 phim moi. Chuong trinh ket thuc khi an phim ESC.

code segment

assume cs:code, ds:code

org       100h

begin:

; Hien thi thong bao; sau hanh dong nay al=$ (24h)

            mov     ah,09h

            lea        dx,msg

            int        21h

; Kiem tra co phim an: int 21h. ah=08

            mov     ah,08

            int        21h

; hien thi phim an. int 10h, ah = 09

            mov     ah,09h

            mov     bl,72h              ; thuoc tinh       

            mov     cx,01               ; hien thi mot ky tu     

            int        10h

; Neu phim an la ESC: ket thuc

            cmp     al,1bh

            je         ket_thuc

; xuong dong ve dau dong: int 21h voi ah=02

            mov     ah,02

            mov     dl,0dh

            int        21h

            mov     dl,0ah 

            int        21h

            jmp      begin               ; quay lai cho mot phim moi

ket_thuc:

            mov     ah,4ch

            int        21h     

            msg      db 'phim duoc an la: $'

code ends

end begin

Câu 9

; dat mode do hoa cho man hinh.

; ve mot duong cheo tren man hinh tu toa do (60,60) den (40,20)

code segment

assume cs:code, ds:code

org 100h

begin:

; xoa man hinh

            mov ax, 0600h            ;

            mov bh, 07h    ;

            mov cx, 0000

            mov     dx, 184fh

            int        10h

; dat che do cho man hinh che do 06

            mov     ax, 0013h

            int        10h

; ve duong cheo tu (60,60) den (40,20)

            mov     cx, 60

            mov     dx, 60

lap:     

            mov     ah, 0ch ; 0c viet vao diem anh

            mov     al, 01               ; mo diem anh (che do 05 neu al=10 mau hong)

            int        10h

            dec      dx                    ; giam vi tri hang di 1

            dec      cx                    ; giam  vi tri cot di 2   

            dec      cx

            cmp     cx,20               ; kiem tra vi tri cuoi cung

            jnz       lap                   ; Nhay neu nho hon hoac bang

ket_thuc:

            mov     ah,4ch

            int        21h     

code ends

end begin

Câu 10

Phân tích: Để đọc trạng thái của bit 2 cổng B của 8255 cần phải thiết lập cho vi mạch này làm việc ở chế độ 0, cổng B là cổng đọc vào.

Để tạo xung trên đầu ra trên đầu ra PC4 ta thiết lập vimạch làm việc ở chế độ đặt và xoá mức (BSR). Xung trên đầu ra PC 4 có dang sau:      __|--------|__________|-----

                                                         | 1/3T  |       2/3T     |

Thiết lập cho 8255 mode 0, cổng B là cổng vào; Thanh ghi điều khiển có giá trị: 82h

để thiết lập mức 1 trên PC 4 Thanh ghi điều khiển có giá trị: 09h

để thiết lập mức 0 trên PC 4 Thanh ghi điều khiển có giá trị: 08h

; Chuong trinh thiet lap mode cho 8255

code segment

assume cs:code, ds:code

org 100h

begin:

; dat 8255 mode 0, cong B la cong vao

            mov     dx, 04f3h                    ; dia chi cua thanh ghi dieu khien

            mov     al, 82h ;

            out       dx,al                            ; dat mode vao thanh ghi dieu khien

; hoi trang thai bit D2

            lap:

mov     dx, 04f1h                    ; dia chi cong B

            in         al,dx

            and      al,02h                          ; nhan logic al voi 02 (bit D2=1)

            cmp     al,02h

            jnz       lap                               ; neu bit D2 kh co muc 1 thi doc lai

; nang PC4 1 len muc logic 1

            mov     dx,04f3h                     dia chi cua thanh ghi dieu khien

            mov     al,09h                          ; xac dinh muc 1 tren PC4

            out       dx,al                            ; nap thanh ghi dieu khien

            call       dellay                          ; giu cham 1 khoang dellay

; ha PC4 xuong muc 0

            mov     dx,04f3h                     ;

            mov     al,08h                          ; ha muc tren PC4 xuong 0

            out       dx,al                           

            call       dellay

            call       delay                           ; giu cham muc 0 2 khoang dellay

; nang PC4 len muc logic 1

            mov     dx,04f3h                     ; dia chi cua thanh ghi dieu khien

            mov     al,09h                          ; xac dinh muc 1 tren PC4

            out       dx,al                            ; nap thanh ghi dieu khien

ket_thuc:

            mov     ah,4ch

            int        21h     

code ends

end begin

Câu 11

với tốc độ truyền là 9,600 bps thì số chia được sẽ được xác định như sau:

Số chia = X(in)/ (Tốc độ truyền * 16) = ( 1,8432*10^6 ) / (9.600 * 16) = 12

; Nhan day so lieu tu  cong COM1 voi toc do 9,600bps

code segment

assume cs:code, ds:code

org       100h

begin:

; Thiet lap duong truyen: dat bits D7 cua thanh ghi 3fbh len 1

            mov                 al,80h              ; dat DLAB = 1

            mov                 dx, 3fbh          ; napdia chi thanh ghi dieu khien duong truyen

            out                   dx, al                           ; DLAB = 1

; gui so chia: khi bit D7 cua thanh ghi 3fb =1, thanh ghi

            mov                 ax, 000ch                     ; toc do truyen la 9,600 bps   

            mov                 dx, 3f8h                      ; dia chi phan thap so chia

            out                   dx,al                            ; nap phan thap so chia

            mov                 al, ah                            ; chuyen phan cao so chia sang al

            inc                   dx                                ; dia chi phan cao so chia       

            out                   dx, al                           ; nap phan cao so chia

; thiet lâp tham so truyen: nap vao thanh ghi dieu khien duong truyen 3fbh

            mov                 al,83h              ; tham so truyen 7 bit data, 1 bit stop, no parity

            mov                 dx,03fbh         ; dia chi thanh ghi dieu khien duong truyen

            out                   dx,al

; hoi bit trang thai cua thanh ghi trang thai duong truyen

            mov                 dx,03fdh         ; dia chi thanh ghi trang thai duong truyen

lap1:   

            in                     al,dx

            cmp                 al,60h              ; neu 2 bit D5, D6 cung = 1san sang nhan

            jnz                   lap1

; nhan so lieu tu cong

            mov                 cx,00               ; dung cx lam thanh ghi so byte thong tin nhan

            mov                 dx,03f8h         ; dia chi bo dem thu

            in                     al,dx                ; nhan so lieu tu cong COM

            mov                 [di], al  ; cat byte nhan duoc vao [DI]

            inc                   di                     ; tang con tro di len 1 tro sang byte tiep theo

            inc                   cx                    ; tang cx len 1 bao co them 1 bit nua vua nhan

            cmp                 al,0dh              ; hoi ky tu nhan co phai la xuong dong kh?

            jnz                   lap1                 ; neu kh phai, nhan tiep byte tiep theo

; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

            mov                 ah,4ch

            int                    21h

code ends

end begin       

Câu hỏi 12

Phân tích: để thiết lập mode 0 cho 8255 với cổng A: vào, cổng B: ra và cổng C: ra thì giá trị của thanh ghi điều khiển là 90h

                                                                              Chọn Mode – nhóm B || D0 = 0: Nửa thấp Port C – out

             0 – Mode 0      || D0 = 1: Nửa thấp PortC - in

             1 – Mode 1      ||

|  1  |  0  |  0  |  1  |  0  |  0  |  0  |  0  |

             Chọn Mode – nhóm A                              ||

           00 – Mode 0      || D4 = 0: Port A – out     || D1 = 0: Port B – out

           01 – Mode 1      || D4 = 1: Port A – in       || D1 = 1: Port B – in

           1x – Mode 2

                          || D3 = 0: nửa cao Port C – out

                          || D3 = 1: nửa cao port C – in  

Định nghĩa thanh ghi điều khiển 8255A

; Chuong trinh thiet lap mode cho 8255

code segment

assume cs:code, ds:code

org 100h

begin:

; dat 8255 mode 0, cong A la vao, cong B, C là ra

            mov     dx, 0157h                    ; dia chi cua thanh ghi dieu khien

            mov     al, 90h ;

            out       dx,al                            ; dat mode vao thanh ghi dieu khien

; hoi trang thai bit D6 cua cong A

            lap:

mov     dx, 0154h                    ; dia chi cong A

            in         al,dx

            and      al,20h                          ; nhan logic al voi 20 (bit D6=1)

            cmp     al,20h

            jnz       lap                               ; neu bit D2 kh co muc 1 thi doc lai

; nang cac bit D0, D2, D4, D6 cong B len muc logic 1

            mov     dx,0155h                     ; dia chi cua cong B

            mov     al,55h                          ; cac bits D0, D2, D4, D6 co muc logic 1

            out       dx,al                            ; out ra cong B

ket_thuc:

            mov     ah,4ch

            int        21h     

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #ctmt#leez