BTHT LPT
Bài 3
Hãy viết chương trình cho biết máy tính bạn đang dùng có cổng LPT nào hay không? Nếu có thì bao nhiêu cổng và cho biết địa chỉ các cổng đó (địa chỉ cổng phải là HEXA).
Cách giải : Chú ý byte của có địa chỉ 0:411h của vùng dữ liệu ROM BIOS có chứa các thông tin liên quan đến thông tin về số lượng cổng LPT mà máy tính đang dùng có, cụ thể như sau :
x
x
0 0 … không có cổng LPT
0 1… có 1 cổng LPT
1 0. .. có 2 cổng LPT
1 1… có 3 cổng LPT
. . .
Chú ý : Địa chỉ LPT1 có trong 2 byte có địa chỉ 0:408h và 0:409h
Địa chỉ LPT2 có trong 2 byte có địa chỉ 0:40ah và 0:40bh
….
Khi chương trình chạy yêu cầu có dạng :
May tinh dang dung co cong LPT khong ? Co
So luong cong LPT la : 4
Dia chi cac cong LPT la : 3BC 378 278 9F0
Chú ý : Giống bài 2
INCLUDE lib1.asm
.MODEL small
.STACK 100h
.DATA
M1 db ’May tinh dang dung co cong LPT không ? $’
co db ‘Co $’
khong db ‘ Khong $’
M2 db 13,10,’So luong cong LPT ma may tinh co la : $’
M4 db 13,10,’Dia chi cac cong LPT la : $’
space db ‘ $’
.CODE
PS:
mov ax,@data
mov ds,ax
CLRSCR
HienString M1 ; Hiện thông báo ‘May tinh dang dung co cong LPT khong ?’
int 11h ; Ngắt hệ thống thực hiện việc đưa nội dung ô nhớ 0:411h -> ah
mov al,ah ; Đưa nội dung 0:411h -> al
mov cl,6
shr al,cl ; al = số lượng cổng LPT
jnz L1 ; Nếu al # 0 (có cổng LPT thì nhảy)
HienString khong ; còn không thì hiện thông báo ‘Khong’
jmp Exit ; Nhảy đến nhãn Exit
L1:
HienString co ; Hiện thông báo ‘Co’
mov cl,al
xor ch,ch ; cx = số lượng cổng LPT (chỉ số vòng lặp hiện địa chỉ)
HienString M2 ; Hiện thông báo ‘So luong cong LPT ma may tinh co la : ‘
add al,30h ; al là mã ASCII số lượng cổng LPT
mov ah,0eh ; Chức năng hiện 1 ký tự ASCII lên màn hình
int 10h
HienString M3 ; Hiện thông báo ‘Dia chi cac cong LPT la : ‘
xor ax,ax
mov es,ax
lea bx,408h ; es:bx = 0:408h (nơi chứa địa chỉ cổng LPT1)
L2:
mov ax,es:[bx] ; ax = địa chỉ LPT
call HIEN_HEXA ; Hiện địa chỉ dạng HEXA lên màn hình
HienString space ; Hiên một số dấu cách
add bx,2 ; bx trỏ đến các byte chứa địa chỉ cổng COM tiếp theo
loop L2
Exit:
mov ah,4ch ; Về DOS
int 21h
INCLUDE lib3.asm ; lib3.asm chứa chương trình con HIEN_HEXA
END PS
Bạn đang đọc truyện trên: AzTruyen.Top