Luận Văn Viết chương trình bằng ngôn ngữ Assembler xác lập mật khẩu cho file dạng *.com

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    173
    Điểm thành tích:
    0
    Xu:
    0Xu
    Đề tài: Viết chương trình bằng ngôn ngữ Assembler xác lập mật khẩu cho file dạng *.com

    LỜI NÓI ĐẦU


    Ngày nay công nghiệp máy tính đã trở thành mũi nhọn khi bước vào kỷ nguyên kỹ thuật hiện đại.Với tốc độ tăng trưởng đáng kể những sản phẩm liên quan đến máy tính từ phần mềm tới các thiết bị ghép nối.Việt Nam cũng đang góp phần vào sự phát triển của công nghệ máy tính, chuyển mình dần từ thị trường tiêu thụ các sản phẩm máy tính thành nơi phát triển công nghệ. Bên cạnh đó công nghệ phần mềm của Việt Nam có nhiều bước tiến triển góp phần thúc đẩy sự phát triển của nền công ngiệp máy tính nói riêng và nền kinh tế nói riêng.
    Đã có rất nhiều ngôn ngữ lập trình được sử dụng để tạo nên sự phát triển của nền công nghệ phần mềm. Một trong những ngôn ngữ lập trình xuất hiện sớm nhất đó là ngôn ngữ lập trình Assembler. Đây là một trong những ngôn ngữ lập trình bậc thấp thường được sử dụng để lập trình hệ thống, nó có một ưu điểm mà không một ngôn ngữ lập trình nào bì kịp, bởi lẽ nó tạo ra những chương trình có dung lượng rất nhỏ, nó thường được sử dụng để làm các chương trình quản lý trong công nghiệp ,diệt vius, tạo vius, tạo hệ điều hành, tạo mật khẩu
    Hiện nay hầu hết các chương trình khi viết xong đều được xác lập mật khẩu để bảo mật dữ liệu
    Trong thời gian học tập tại khoá học 1996 – 2001 của trường Đại học Mở Hà Nội tôi đã được đào tạo một cách có hệ thống và tiếp thu những kiến thức về ngôn ngữ Assembler Để kết thúc khoá học tôi được nhận và hoàn thành đề tài “Xác lập mật khẩu cho chương trình dạng tệp có đuôi .COM”.

    Mục tiêu của chương trình:

    -Trước tiên chạy chương trình xác lập mật khẩu với những yêu cầu nhập tên tệp thực hiện dạng .COM
    -Sau đó nhập mật khẩu; Sau khi tệp .COM đã xác lập mật khẩu thì từ đó trở đi chương trình chỉ được chạy khi vào đúng mật khẩu đã xác lập

    Chương I CƠ SỞ LÝ THUYẾT

    Các file COM được lưu trên đĩa là hình ảnh chính xác của nội dung bộ nhớ sau khi các file này được nạp. Sau khi được nạp, các file .COM khong cần thêm một thông tin nào nữa và có thể chạy ngay, do vậy, các chương trình COM có thể được nạp và khởi động nhanh hơn so với cá chương trình EXE. Ngay sau khi chương trình COM được nạp vào bộ nhớ, ngay dưới PSP, nó được thực hiện bắt đầu từ ô nhớ sát ô nhớ cuối cùng của PSP, nghĩa là từ địa chỉ offset 100h. Ô nhớ này thường chứa một lệnh nhảy, lệnh này nhảy đến phần đầu thực của chương trình.
    Một chương trình COM không thể vượt quá 64KB(65536 byte), tính cả độ dài của PSP (256 byte) và ít nhất 1từ (2 byte) cho ngăn xếp. Độ dài một chương trình COMkhông vượt quá 64 KB, nhưng DOS vẫn dành cả bộ nhớ cho trương trình loại này. Nó không để lại một phần nhớ tự do nào (dưới quan điểm của DOS), và chương trình COM không thể gọi một chương trình khác thông qua hàm EXEC. Vấn đề này có thể giải quyết được, nếu chương trình COM thông qua một hàm của DOS giải phóng bộ nhớ mà nó không dùng đến.
    Khi điều khiển được truyền cho chương trình COM, các thanh ghi đoạn đều hướng tới đầu của PSP. Đầu của chương trình COM (so với đầu của PSP) luôn được đặt ở địa chỉ 100h. Con trỏ ngăn xếp nhận giá trị FFFEh và nó hướng tới đoạn cuối của đoạn 64KB mà chương trình COM chiếm, ngăn xếp tiến lại gần cuối chương trình cứ 2 byte một, người lập trình cần đảm bảo làm sao cho ngăn xếp không lớn đến mức đụng vào phần cuôí chương trình
    Tồn tại nhiều khả năng để kết thúc một chương trình COM và để trả điều khiển về cho DOS hay chương trình gọi.
    Nếu chương trình chạy dưới DOS 1.0, nó có thể kết thúc bằng cách gọi hàm 00h của ngắt 21h hoặc gọi ngắt 20h. Một khả năng khác , thoạt đầu có vẻ lạ, là kết thúc chương trình bằng một “Near Return” (lệnh assembler RET). Khi lệnh này được thực hiện, chương trình được tiếp tục từ địa chỉ offset đặt trong 2byte ở đỉnh ngăn xếp. Mà hàm EXEC lại đặt giá trị 0 vào 2byte này trước khi trao điều khiển cho chương trình COM. Như vậy, chương trình được tiếp tục thực hiện tại địa chỉ CS:0000. Vì địa chỉ này chính là đỉnh PSP, nó chứa lời gọi ngắt 20h, nên chương trình sẽ được kết thúc bằng ngắt 20h.
    Đối với các thế hệ sau của DOS, hàm 4Ch của ngắt 21h tường dùng để kết thúc chương trình. Nó kết thúc chương trình và gọi một chương trình thông báo, chương trình thông báo này cho kết quả dưới dạng một giá trị số . DOS không đặt ở đây một giá trị cố định nào, nhưng việc truyền giá trị chỉ có ý nghĩa nếu chương trình được goi và chương trình gọi đều gán cho giá trị đó một ý nghĩa như nhau. Thí dụ, một khả năng hay được dùng là thông báo cho chương trình gọi, thông qua giá trị 0, rằng chương trình được gọi kết thúc bình thường, trong khi mọi giá trị khác thông báo sự xuất hiện lỗi trong khi thực hiện chương trình được gọi. Một người lập trình ngôn ngữ bậc cao không cần phải quan tâm đến việc xây dựng một chương trình COM, vì trình biên dịch (compiler) sẽ làm thay mọi công việc cần thiết. Ngược lại, một người lập trình Assembler phải quan tâm đến nhiều vấn đè khi xây dựng một chương trình COM.
    Chương trình COM được lưu dưới dạng phản ánh chính xác nội dung bộ nhớ RAM sau khi dã được nạp. DOS không nạp chương trình này vào một địa chỉ xác định trước. Chúng có thể được nạp vào một địa chỉ bất kỳ(là bội nguyên của 16). Do vậy, các chương trình COM không nhất thiết phải chứa địa chỉ đoạn rõ ràng. Nếu địa chỉ offset luôn dựa vào đoạn hiện thời và nó chỉ một địa chỉ bất kỳ trong đoạn đó, thì vấn đề lại không phải như vậy đối với các địa chỉ đoạn, vì các địa chỉ này xác định các đoạn cố định cách nhau 16 byte.
    Kích thước một chương trình COM bị hạn chế là 64KB nên người lập trình bị giới hạn chỉ được dùng các lệnh NEAR, các lệnh này chỉ thay đổi địa chỉ offset của con trỏ lệnh. Các lệnh FAR không được phép dùng trong chương trình bởi vì tất cả các lệnh FAR cho phép tiếp tục chương trình ở một chỗ khác của chương trình bằng cách xác định lại không chỉ địa chỉ offset mà cả địa chỉ đoạn của con trỏ lệnh (CS:IP). Do đó các giá trị không đổi có thể được nạp vào một thanh ghi , thí dụ như địa chỉ đoạn của RAM màn hình.Nhưng không thể nạp một địa chỉ đoạn của các lệnh hay dữ liệu của chương trình COM vào một thanh ghi đoạn. Bởi lẽ các địa chỉ này thay đổi mỗi khi chương trình được gọi chạy. Một chương trình COM không được chứa nhiều đoạn và các biến phải nằm trong một đoạn duy nhất-đoạn mã lệnh. Vì chỉ có một đoạn, nên DOS có thể nạp chương trình vào các vị trí khác nhau, tuỳ theo tình trạng của RAM còn tự do. Các trương trình COM không gặp khó khăn gì khi định nghĩa ngăn xếp. Nó được đặt tự động vào cuối đoạn COM 64KB.
     
Đang tải...