BTHT cong COM
Bài 2
Hãy viết chương trình cho biết máy tính bạn đang dùng có cổng COM 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 COM mà máy tính đang dùng có, cụ thể như sau :
x
x
x
0 0 0… không có cổng COM
0 0 1… có 1 cổng COM
0 1 0. .. có 2 cổng COM
0 1 1… có 3 cổng COM
. . .
Chú ý : Địa chỉ COM1 có trong 2 byte có địa chỉ 0:400h và 0:401h
Địa chỉ COM2 có trong 2 byte có địa chỉ 0:402h và 0:403h
….
Khi chương trình chạy yêu cầu có dạng :
May tinh dang dung co cong COM khong ? Co
So luong cong COM la : 2
Dia chi cac cong COM la : 3f8 2f8
INCLUDE lib1.asm
.MODEL small
.STACK 100h
.DATA
M1 db ’May tinh dang dung co cong COM không ? $’
co db ‘Co $’
khong db ‘ Khong $’
M2 db 13,10,’So luong cong COM ma may tinh co la : $’
M4 db 13,10,’Dia chi cac cong COM 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 COM 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
and al,00001110b ; Tách 3 bit chứa số lượng cổng COM
shr al,1 ; al = số lượng cổng COM
jnz L1 ; Nếu al # 0 (có cổng COM 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 COM (chỉ số vòng lặp hiện địa chỉ)
HienString M2 ; Hiện thông báo ‘So luong cong COM ma may tinh co la : ‘
add al,30h ; al là mã ASCII số lượng cổng COM
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 COM la : ‘
xor ax,ax
mov es,ax
lea bx,400h ; es:bx = 0:400h (nơi chứa địa chỉ cổng COM1)
L2:
mov ax,es:[bx] ; ax = địa chỉ COM
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: Truyen247.Pro