1. Trang chủ
  2. » Luận Văn - Báo Cáo

BTL lập trình hệ thống

22 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình hệ thống
Tác giả Nhóm 11
Người hướng dẫn TS. Nguyễn Văn A
Trường học Trường Đại học Mở Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 167,05 KB

Nội dung

Hãy viết chương trình thực hiện 4 chức năng : 1 .... Chia đôi 1 tệp thành 2 tệp bằng nhau 2 .... So sánh 2 số nguyên và hiện số bé 3 .... Liệu máy tính có cổng joystick ? 4 ....Thoát khỏi chương trình

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN MÔN HỌC: LẬP TRÌNH HỆ THỐNG

ĐỀ BÀI SỐ 05

Giảng viên hướng dẫn: TS

Nhóm sinh viên thực hiện: Nhóm 11

- - -

-Hà Nội - Năm 2023

Trang 2

MỤC LỤC

1 MỞ ĐẦU 3

2 ĐỀ BÀI 4

3 MÔ TẢ BÀI TẬP LỚN 5

3.1 Chương trình C 5

3.2 Chức năng chia 1 tệp thành 2 tệp bằng nhau 7

3.3 Chức năng nhập 2 số nguyên và hiển thị số bé hơn 8

3.4 Chức năng kiểm tra máy tính có cổng Joystick hay không? 9

4 LẬP TRÌNH – CÀI ĐẶT 10

4.1 Chương trình chính 10

4.2 CHIATEP 12

4.3 HIENTHISOBE 14

4.4 JOYSTICK 18

5 DEMO TOÀN BỘ CHƯƠNG TRÌNH 20

5.1 MENU chương trình 20

5.2 CHIATEP 22

5.3 HIENTHISOBE 22

5.4 JOYSTICK 23

6 KẾT LUẬN 24

7 TÀI LIỆU THAM KHẢO 24

Trang 3

1 MỞ ĐẦU

Lập trình hệ thống giúp cho sinh viên viết được chương trình bằng ngôn ngữAssembly trên máy tính PC Sinh viên có các kĩ năng đơn giản như : Sử dụngtrình biên dịch hợp ngữ trong môi trường Window, sửa lỗi, liên kết, khảo sát tậplệnh, các ngắt đơn giản của hệ điều hành DOS Để vận dụng và nâng cao được

kĩ năng lập trình hệ thống bằng hợp ngữ, sinh viên phải nỗ lực rất nhiều trongviệc tự học, bổ sung những kiến thức nhất định về phần cứng máy tính cũng nhưnguyên lý vận hành của các thiết bị ngoại vi có liên quan như : Máy in, hệ viđiều khiển, cổng vào ra nối tiếp/song song, …

Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem làmột trong những yếu tố mang tính quyết định trong hoạt động của các chínhphủ, tổ chức, cũng như các công ty Nó đóng vai trò hết sức quan trọng, có thểtạo ra những bước đột phá mạnh mẽ Việc lập trình lên các hệ thống để phục vụcho các nhu cầu riêng của tổ chức, công ty thậm chí các cá nhân, không lấy gìlàm xa lạ Với một vài thao tác đơn giản, một người bất kì có thể sử dụng một hệthống đơn giản

Trang 4

2 ĐỀ BÀI

Hãy viết chương trình thực hiện 4 chức năng :

Hãy viết chương trình thực hiện 4 chức năng :

1 Chia đôi 1 tệp thành 2 tệp bằng nhau

2 So sánh 2 số nguyên và hiện số bé

3 Liệu máy tính có cổng joystick ?

4 Thoát khỏi chương trình

Ví dụ khi CT chạy :

Trang 5

3 MÔ TẢ BÀI TẬP LỚN

Đây là chương trình đa tệp, có sự liên kết giữa tệp C và tệp ASM Trong đó,màn hình giới thiệu và màn hình chức năng do chương trình C viết, các chứcnăng cụ thể do chương trình con viết bằng ASM đảm nhiệm Nhãn dùng chung

là tên các chương trình con từ tệp ASM

Nếu phím ‘c’ được nhấn, màn hình chức năng của chương trình sẽ có dạng:

Trang 6

Tại đây, sẽ thấy danh sách các chức năng chính của chương trình bao gồm:

 1 Chia đôi tệp thành 2 tệp bằng nhau

 2 So sánh 2 số nguyên và hiện số bé

 3 Liệu máy tính có cổng Joystick không?

 4.Thoát chương trình trở về DOS

Muốn sử dụng chức năng nào thì chỉ cần nhấn phím số tương ứng của chứcnăng đó Nếu bạn lỡ nhấn sai các giá trị của các phím từ 1 đến 4 sẽ có thông báo

‘Vào sai rồi! ’, ‘Có thực hiện chức năng khác (c/k)?’

Trang 7

Nhấn phím bất kỳ để thoát khỏi chương trình Ngược lại nếu chọn các phímchức năng từ 1 đến 3, chương trình C sẽ gọi chương trình con tương ứng do tệpASM viết Khi sử dụng xong sẽ thoát chương trình con và trở về MENU lựachọn chính.

3.2 Chức năng CHIATEP

 Chức năng: Chia 1 tệp thành 2 tệp bằng nhau

 Cách làm:

 Vào tên tệp cần chia (gọi CT con GET_FILE_NAME)

 Mở tệp đã có để đọc (CN 3dh của ngắt 21h với AL=0 – để đọc)

 Xác định độ dài tệp bằng cách đưa con trỏ tệp về cuối têp thì AX chứa độ dài tệp (CN 42h của ngắt int 21h với AL=2 và khoảng cách nằm trong CX=0 vàDX=0)

 Trả con trỏ tệp trở lại đầu tệp (CN 42h của ngắt int 21h với AL=0 và khoảng cách nằm trong CX=0 vàDX=0)

 Đọc toàn bộ tệp để vào vùng đệm (CN 3fh của ngắt int 21h)

 Vào tên tệp con 1 (gọi CT con GET_FILE_NAME)

 Tạo tệp mới và mở (CN 3ch của ngắt int 21h)

 Ghi ½ dữ liệu từ vùng đệm vào tệp con 1 (CN 40h của ngắt int 21h)

 Vào tên tệp con 2 (gọi CT con GET_FILE_NAME)

Trang 8

 Tạo tệp mới và mở (CN 3ch của ngắt int 21h)

 Ghi ½ dữ liệu còn lại từ vùng đệm vào tệp con 2 (CN 40h của ngắt int 21h)

 Đóng 3 tệp (CN 3eh của ngắt int 21h)

Chú ý: Khi thực hiện các chức năng của tệp nếu có lỗi thì hiện thông báo sau đó kết

thức, còn nếu mọi chức năng đều thực hiện tốt thì không hiện gì cả.

3.3 Chức năng HIENTHISOBE

 Chức năng: Nhập 2 số nguyên và hiển thị số bé hơn

 Cách làm:

 Vào số thứ nhất (gọi CT con VAO_SO_N)

 Vào số thứ hai (gọi CT con VAO_SO_N)

 So sánh 2 số nguyên (cmp)

 Nhảy đến nhãn L1 : hiển thị số thứ 2(trong ax) nếu số thứ 2 < số thứ nhất (gọi

CT con HIEN_SO_N) ,sau đó thoát CT

 Ngược lại nếu số thứ 2 không nhỏ hơn số thứ 1 thì dổi chéo vị trí thanh ghi của

2 số cho nhau, lúc này số thứ 1 bé hơn sẽ nằm trong thanh ghi ax, thực hiện tiếp CT nhảy đến nhãn L1: hiển thị số thứ 1(gọi CT con HIEN_SO_N) ,sau đó thoát CT

3.4 Chức năng JOYSTICK

 Chức năng: kiểm tra xem máy tính có cổng joystick không?

 Cách làm:

 Hiển thị chuỗi “May tinh co cong Joystick khong?”

 Dùng chức năng int 11h để kiểm tra xem máy tính có cổng joystick không

 Nếu có thì nhảy đến nhãn L1: hiển thị có (có cờ carry) sau đó thoát chơngtrình

 Ngược lại, nếu không có cờ carry thì máy tính không có joystick, hiển thịkhông Sau đó thoát chương trình

4 LẬP TRÌNH – CÀI ĐẶT

4.1 Chương trình chính

Trang 9

cout <<" \n TRUONG DAI HOC MO HA NOI" ;

cout <<" \n KHOA CONG NGHE THONG TIN" ;

cout <<" \n -" ;

cout <<" \n BAI TAP LON MON LTHT " ;

cout <<" \n\n\n Cac sinh vien thuc hien :" ;

cout <<" \n 1.Nguyen Van Tung Lop: 2010A03" ;

cout <<" \n 2.Nguyen Thi Minh Anh Lop: 2010A04" ;

cout <<" \n 3.Nguyen Phan Ngoc Minh Lop: 2010A04" ;

cout <<" \n 4.Le Tuan Anh Lop: 2010A04" ;

cout <<" \n\n\n Co tiep tuc chuong trinh khong (c/k)" ;

Trang 10

cout <<" \n CAC CHUC NANG CHINH BAI TAP LON " ;

cout <<" \n -" ;

cout <<" \n 1 chia doi tep thanh 2 tep bang nhau " ;

cout <<" \n 2 so sanh 2 so nguyen va hien so be " ;

cout <<" \n 3 May tinh co cong joystick khong? " ;

// cout<<"\n 4 Hien xau ";

case 4 : Thoat (); break ;

default : cout <<" \n Vao sai roi !! " ;

Trang 11

ct1 db 13 , 10 , 'Vao ten tep can chia : $'

ct2 db 13 , 10 , 'Vao ten tep con 1 : $'

ct3 db 13 , 10 , 'Vao ten tep con 2 : $'

Err_1 db 13 , 10 , 'Tep da ton tai !$'

Err_O db 13 , 10 , 'Khong mo duoc tep !$'

Err_R db 13 , 10 , 'Khong doc duoc tep !$'

Err_W db 13 , 10 , 'Khong ghi duoc tep !$'

Err_S db 13 , 10 , 'Khong di chuyen duoc con reo tep !$'

Err_C db 13 , 10 , 'Khong dong duoc tep !$'

mov al , 0 ; Gán giá trị 0 cho thanh ghi AL Đầy là phầL n thầd p cu [a thanh ghi AX và được sư[ dụng đê[ chỉ [ định chêd độ mở [ tệp.

Trang 12

mov ah , 3dh ; chức năng 3DH cu [a int 21, mở [ tệp

xor cx , cx ; Đặt giá trị cu [a thanh ghi CX vêL 0 CX

sẽ được sư[ dụng làm khoa [ng cách so sánh trong việc di chuyê[ n con tro [ tệp

mov dx , cx ; Đặt giá trị cu [a thanh ghi DX bằng giá trị cu [a thanh ghi CX DX sẽ được sư[ dụng trong việc di chuyê[ n con tro [ tệp.

mov al , ; Đặt giá trị cu [a thanh ghi AL bằng 2, đại diện cho chêd độ so sánh với cuỗd i tệp

mov ah , 42h ; Chức năng di chuyê[ n con tro [ tệp mới

mov dodai_tep, ax ; Chuyê[ n vêL cuỗd i tệp thành cỗng thí AX

là độ dài tệp -> biêd n dodai_tep

mov bx ,the_tep ; Đưa giá trị cu [a biêd n the_tep (the [ tệp) vào thanh ghi BXĐ-Đưa con tro [ tệp trở [ vêL đầL u tệp

Trang 13

mov al , ; Gán giá trị 0 vào thanh ghi AL Đầy là phầL n thầd p cu [a thanh ghi AX và được sư[ dụng đê[ chỉ [ định chêd độ SO SANH VỚI ĐẦL U TỆP

xor cx , cx ; ĐẶT CX-Khoa [ng cách so sánh là 0

mov dx , cx ; Đặt giá trị cu [a thanh ghi DX bằng giá trị cu [a thanh ghi CX DX sẽ được sư[ dụng trong việc di chuyê[ n con tro [ tệp.

mov ah , 42h ; Chức năng di chuyê[ n con tro [ tệp

jmp DONG_TEP ;nhay den dóng tệp

L_CT3: ; đọc toàn bộ dữ liệu từ tệp đã mở [ và lưu vào vùng đệm

mov bx ,the_tep ; Đưa giá trị cu [a biêd n the_tep (the [ tệp) vào thanh ghi BX BX sẽ được sư[ dụng đê[ xác định tệp cầL n đọc.ĐỌC TOÀN

BỘ TỆP - VÙNG ĐỆM

mov cx ,dodai_tep ; Di chuyê[ n giá trị cu [a biêd n dodai_tep (độ dài cu [a tệp) vào thanh ghi CX CX sẽ được sư[ dụng làm sỗd lượng byte cầL n đọc từ tệp

lea dx ,dem ;Đưa địa chỉ [ cu [a biêd n dem (vùng nhớ đệm) vào thanh địa chỉ [ DX Địa chỉ [ này sẽ được sư[ dụng đê[ lưu trữ dữ liệu đọc từ tệp

HienString ct2 ; Hiện thỗng báo ct2

lea dx ,buff ; Vào tên tệp con 1( Đưa địa chỉ [

cu [a biêd n buff (chứa tên tệp con 1) vào thanh ghi DX)

Trang 14

call GET_FILE_NAME ;nhập vào tên tệp 1

lea dx ,file_name ; Chức năng tạo tệp mới và mở [(Đưa địa chỉ [ cu [a biêd n file_name (chứa tên tệp con 1) vào thanh ghi DX.)

mov ax , 4300h ; Chức năng 43h với AX = 4300h đê[ kiê[ m tra tệp tỗL n tại

int 21h ; Gọi chức năng DOS

jc L_CT4_TIEPTUC ; Nêd u CF=1 (lỗ_ i), kiê[ m tra tiêd p tục

jz L_CT4_TIEPTUC ; Nêd u ZF=0 (tệp đã tỗL n tại), kiê[ m tra tiêd p tục

jnc L_CT5 ; Tạo và mở [ tệp tỗd t thì nha [y,

HienString Err_O ; còn có lỗ_ i khi tạo và mở [ tệp (CF=1) thì hiện thỗng báo Err_O

jmp DONG_TEP

L_CT5:

mov the_tepc1, ax ; The [ tệp ở [ AX -> biêd n the_tepc1

mov bx , ax ; Ghi ½ dữ liệu từ vùng đệm (chứa dữ liệu đọc được) -> tệp con 1

jnc L_CT6 ; Ghi tỗd t thì nha [y,

HienString Err_W ; còn có lỗ_ i khi ghi tệp (CF=1) thì hiện thỗng báo Err_W

jmp DONG_TEPC1

L_CT6:

HienString ct3 ; Hiện thỗng báo ct3

lea dx ,buff ; Vào tên tệp con 2

Trang 15

int 21h ; Gọi chức năng DOS

jc L_CT6_TIEPTUC ; Nêd u CF=1 (lỗ_ i), kiê[ m tra tiêd p tục

jz L_CT6_TIEPTUC ; Nêd u ZF=0 (tệp đã tỗL n tại), kiê[ m tra tiêd p tục

jnc L_CT7 ; Tạo và mở [ tệp tỗd t thì nha [y,

HienString Err_O ; còn có lỗ_ i khi tạo và mở [ tệp (CF=1) thì hiện thỗng báo Err_O

jmp DONG_TEPC1

L_CT7:

mov the_tepc2, ax ; The [ tệp ở [ AX -> biêd n the_tepc2

mov bx , ax ; Ghi 1/2 du lieu con lai tu dem vao tep con 2

Trang 16

HienString Err_W ; còn có lỗ_ i khi ghi tệp (CF=1) thì hiện thỗng báo Err_W

DONG_TEPC2:

mov bx ,the_tepc2 ; Đóng tệp con 2

mov ah , 3eh

int 21h

jnc DONG_TEPC1 ; Đóng tệp tỗd t thì nha [y,

HienString Err_C ; còn có lỗ_ i khi đóng tệp (CF=1) thì hiện thỗng báo Err_C

Trang 17

je L2 ; nha [y nêd u ax=bx, sỗd 2 = sỗd 1

jl L1 ; nha [y nêd u ax<bx, sỗd 2 < sỗd 1

xchg ax , bx ; ngược lại, đỗ[ i chéo dl, s1=ã, s2=bx, rỗL i thực hiện tiêd p ctr chuyeent đêd n l1, hiện sỗd bé ax

jne Exit ; nêd u khác, nha [y đêd n exit

jmp PS ; nha [y vêL ps, thực hiện lại ct

jne Exit ; nêd u khác, nha [y đêd n exit

jmp PS ; nha [y vêL ps, thực hiện lại ct

Exit:

ret

Include LIB2.ASM

@CN2$qv ENDP

Trang 19

5 DEMO TOÀN BỘ CHƯƠNG TRÌNH

5.1 MENU chương trình

Trang 20

5.2 CHIATEP

5.3 HIENSOBE

Trang 21

5.4 JOYSTICK

Trang 22

6 KẾT LUẬN

Kết quả bài tập thực hiện đúng, đủ các yêu cầu được nêu Mã nguồn ngắngọn, dễ hiểu, thực hành đúng theo những kiến thức đã được dạy và truyền đạt.Chi tiết, tỉ mỉ, có kiểm tra dữ liệu đầu vào và cảnh báo người dùng Giao diệnđơn giản, hiệu quả, không cầu kì, rườm rà gây rối mắt

7 TÀI LIỆU THAM KHẢO

1 Giáo trình môn Lập trình hệ thống – thầy Đặng Thành Phu, khoa Côngnghệ thông tin – Trường Đại học Mở Hà Nội

2 Các slide bài giảng trên lớp – môn Lập trình hệ thống, khoa Công nghệthông tin – Trường Đại học Mở Hà Nội

3 Công cụ hỗ trợ THELP – thầy Đặng Thành Phu, khoa Công nghệ thôngtin – Trường Đại học Mở Hà Nội

Ngày đăng: 23/05/2024, 15:17

TỪ KHÓA LIÊN QUAN

w