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

Báo cáo bài tập lớn nhãn dùng chung là tên các chương trình con từ tệp asm

24 0 0

Đ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 đề Báo cáo bài tập lớn: Viết chương trình thực hiện 4 chức năng: Lấy thời gian (time) của tệp; Số lượng thành phần âm của dãy số nguyên; Địa chỉ cơ sở của VIDEORAM; Thoát khỏi chương trình
Tác giả Phan Quốc Cường
Người hướng dẫn Th.S Đặng Thành Phu
Trường học Trường Đại học Mở Hà Nội
Chuyên ngành Lập trình hệ thống
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 24
Dung lượng 1,14 MB

Nội dung

Chức năng đếm số lượng thành phần âm của dãy số nguyên...84.. Để 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 trong việc tự học, bổ

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: Lập trình hệ thống

Đề tài số 12

Giảng viên hướng dẫn: Th.S Đặng Thành Phu

Sinh viên thực hiện : Phan Quốc Cường – 2010A04

Hà Nội – Năm 2023

Trang 2

MỤC LỤC

I MỞ ĐẦU 3

II ĐỀ BÀI 4

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

1 Chương trình C++ 5

2 Chức năng lấy thời gian của tệp 7

3 Chức năng đếm số lượng thành phần âm của dãy số nguyên 8

4 Chức năng kiểm tra địa chỉ cơ sở của VIDEORAM 9

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

1 Chương trình chính 9

2 Lấy thời gian của tệp 12

3 Số lượng thành phần âm của dãy số nguyên 15

4 Địa chỉ cơ sở của VIDEORAM 19

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

1 MENU chương trình 21

2 Lấy thời gian của tệp 22

3 Số lượng thành phần âm của dãy số nguyên 23

4 Kiểm tra địa chỉ cơ sở của VIDEORAM 23

VI KẾT LUẬN 24

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

Trang 3

I 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ụng trì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ập lệ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 trong việ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ính phủ, 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

II ĐỀ BÀI

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

1 Lấy thời gian (time) của tệp

2 Số lượng thành phần âm của dãy số nguyên

3 Địa chỉ cơ sở của VIDEORAM

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

Ví dụ khi CT chạy:

Trang 5

III 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ức nă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

Trang 6

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:

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 Chức năng lấy thời gian của tệp

- 2 Số lượng thành phần âm của dãy

- 3 Địa chỉ cơ sở của VIDEORAM

- 4 Thoát 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ức nă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

‘Chức năng không hợp lệ, hãy chọn lại:’

Trang 7

Nhấn phím 4 để thoát khỏi chương trình Ngược lại nếu chọn các phím chứ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ệp ASM viết Khi sử dụng xong sẽ thoát chương trình con và trở về MENU lựa chọn chính.

2 Chức năng lấy thời gian của tệp

Chức năng: Lấy thời gian (giờ, phút, giây) của tệp

Cách làm:

- Đầu tiên ta hiện thông báo “Nhập tên tệp cần lấy thời gian”

- Mở tệp đã có để đọc, sử dụng chức năng 3dh của ngắt int 21h với

AL=0 để đọc mở tệp thành công thì cờ carry

- Để lấy time của tệp ta sử dụng chức năng 57h của ngắt int 21h với

AL=0 để lấy time

- Sau khi dùng chức năng 57h của ngắt int 21h thì time sẽ được chứatrong thanh ghi CX, trong đó 5 bit cao nhất (11 - 15) chứa giá trị giờcủa tệp, 6 bit tiếp theo (5 - 10) chứa giá trị phút của tệp, 5 bit còn lại (0

Trang 8

– 4) chứa giá trị giây của tệp, giá trị giây của tệp chỉ nằm trong khoảng0-30 vì giờ và phút đã chứa hết số bit còn lại do đó ta phải nhân 2 giátrị của giây Sau đó ta lần lượt gán các giá trị giờ phút giây chứa trong

CX vào AX để thực hiện dịch bit và các phép toán logic để lấy đượctừng giá trị giờ phút giây vào AX rồi lần lượt hiển thị các giá trị đó ramàn hình, dùng hàm HIEN_SO_N để hiển thị ra màn hình, dùngMacro HienString để hiển thị thông báo hoặc các kí tự ngăn cách thànhphần

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình

o clrscr: Xóa màn hình

o HIEN_SO_N: hiện giá trị có trong AX ra màn hình

3 Chức năng đếm số lượng thành phần âm của dãy số nguyên

Chức năng: nhập vào một dãy số nguyên và đếm số lượng thành phần âmtrong dãy

Cách làm:

- Hiện thông báo hãy nhập vào số lượng thành phần của dãy số nguyên

- Sau khi nhập số lượng thành phần thì hiện thông báo nhập thành phần củadãy số nguyên và nhập lần lượt các thành phần

- Sau khi nhập xong số lượng thành phần của dãy số nguyên thì hiện dãy số

ra màn hình

- Truy cập đến giá trị đầu tiên của dãy để thực hiện so sánh với 0 nếu số đónhỏ hơn 0 tăng DX lên 1, di chuyển đến giá trị tiếp theo và tiếp tục thựchiện so sánh đến hết dãy và tăng DX lên 1 nếu đó là số âm

- Sau khi kết thúc so sánh các phần tử trong dãy với 0 lúc này DX sẽ chứa

số lượng thành phần âm của dãy

- Sử dụng hàm HIEN_SO_N để hiện giá trị số lượng thành phần âm ra mànhình

Trang 9

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình

o clrscr: Xóa màn hình

o HIEN_SO_N: hiện giá trị có trong AX ra màn hình

4 Chức năng kiểm tra địa chỉ cơ sở của VIDEORAM

Chức năng: kiểm tra địa chỉ của VIDEORAM

Cách làm:

- Để kiểm tra địa chỉ cơ sở của VIDEORAM ta sử dụng ngắt BIOS int 11h

- Sau khi đưa được giá trị của byte có địa chỉ 0:410h vào AL thì ta tách 2 bit

có thông tin liên quan đến loại card điều khiển màn hình

- Kiểm tra liệu có phải loại card điều khiển màn hình là mono nếu bằng thì hiệnđịa chỉ của VIDEORAM là B000h, nếu không bằng thì hiện địa chỉ củaVIDEORAM là B800h

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình

Trang 10

cout << "\n Truong Dai hoc Mo Ha Noi";

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

cout << "\n -o0o -";

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

cout << "\n\n\n Cac SV thuc hien:";

cout << "\n 1 Phan Quoc Cuong Lop: 20A4";

cout << "\n 2 Tran Van B Lop: 17A2";

cout << "\n 3 Nguyen Thi C Lop: 17A2";

cout << "\n\n\n Co tiep tuc CT (c/k)? ";

cout << "\n\n 1 Lay thoi gian cua tep";

cout << "\n 2 So luong thanh phan am cua day so nguyen"; cout << "\n 3 Dia chi co so cua VIDEORAM";

cout << "\n 4 Thoat khoi chuong trinh";

cout << "\n\n Hay chon: ";

while(1){

Trang 11

if(( cin>>cn) && cn>0 && cn<5){

Trang 12

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

Err_LT db 13,10,' Khong lay duoc thoi gian cua tep!$'Err_C db 13,10,' Khong dong duoc tep!$'

Trang 13

L0:

clrscr

HienString dd1

lea dx, buff call GET_FILE_NAME lea dx, file_name

Trang 14

HienString hcmov ax,cxshr ax,5

xor ah,ahand al,00111111bcall HIEN_SO_NHienString hcmov al,cland al,00011111bshl al,1

xor ah,ahcall HIEN_SO_N DONG_TEP: mov bx, the_tep mov ah, 3eh int 21h

jnc Exit

HienString Err_C Exit:

HienString tieptuc mov ah, 1 int 21h

cmp al, 'c' jne KT

jmp L0

KT:

ret

Trang 15

db 13,10,13,10,' Vao so luong thanh phan: $'

m2 db 13,10,' Nhap vao day so nguyen $'

Trang 17

inc index

add bx,2

loop L1

HienString m5 mov cx,sltp lea bx,a

L2:

mov ax,[bx] call HIEN_SO_N HienString space add bx,2

loop L2

mov cx,sltp lea bx,a

xor dx,dx

L3:

mov ax, [bx] cmp ax,0

jl IsNegative jmp IsNotNegative

Trang 18

inc dx

IsNotNegative: add bx, 2

loop L3

HienString m6 mov ax,dx

call HIEN_SO_N HienString tieptuc mov ah,1

Trang 19

4 Địa chỉ cơ sở của VIDEORAM

Trang 20

mov ax,0B000hHien:

call HIEN_HEXAHienString exitmov ah, 1

int 21h

THOAT:

ret

@VIDEORAM$qv ENDPinclude lib2.asm

End

Trang 21

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

1 MENU chương trình

Trang 22

2 Lấy thời gian của tệp

Trang 23

3 Số lượng thành phần âm của dãy số nguyên

4 Kiểm tra địa chỉ cơ sở của VIDEORAM

Trang 24

VI 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ắn gọ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

VII 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: 08/04/2024, 12:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w