Báo Cáo Bài tập Kiến trúc các hệ thống máy tính - Lập trình hợp ngữ Assembly - ĐH Bách Khoa Hà Nội

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Mai Kul, 5/12/13.

  1. Mai Kul

    Mai Kul New Member

    Bài viết:
    1,299
    Được thích:
    0
    Điểm thành tích:
    0
    Xu:
    0Xu
    Bài tập lớn môn Kiến trúc các hệ thống máy tinh - Đại học Bách Khoa Hà Nội. Lập trình hợp ngữ
    Bài 1 . L ập trình hợp ngữ với các c ấu trúc điều khiển
    Viết và th ực hành một th ủ tục assembler thực hiện so sánh xâu chu ỗi ký tự theo
    các yêu cầu sau:
    Cho hai xâu chuỗi ký tự X và Y có độ dài tương ứng là n và m (kể cả ký tự
    rỗng) với n>m, kết qu ả chương trình trả lời các câu h ỏi dưới đây:
    – Xâu Y có phải là xâu con của xâu X không?
    – Nếu xâu Y là xâu con của xâu X thì ch ỉ ra vị trí xâu Y ở xâu X, xâu X
    chứa mấy xâu Y?
    ( So sánh chuỗi kí tự -> file 1s.Chuoi con.asm , 1s.Chuoi con.exe )
    Gi ải thích chương trình :
    - Nhập chuỗi kí tự X , Y với đ ộ dài tối đa 255 như đã khai báo trong code . Nếu nhập
    quá số kí tự tối đa , chương trình có thể cho kết quả sai .
    Vi ệc nhập chuỗi kí tự được thực hi ện nhờ th ủ tục INPUTSTR . Chi ều dài chuỗi v ừa
    nhập được chứa trong thanh ghi BX sau đó đưa ra các bi ến N1 ( độ dài X ) , N2 ( độ
    dài Y )
    Thủ tục BACKSPACE được gọi trong trường hợp xóa kí tự khi nhập : thay thế kí tự
    bị xóa bằng khoảng trắng , bi ến đếm độ dài và con trỏ đều gi ảm 1 .
    - So sánh độ dài 2 chuỗi X , Y . Các trường hợp : chuỗi rỗng ( độ dài = 0 ) , N2 > N1 ,
    chương trình kết luận Y không là chuỗi con c ủa X .
    - Trong trường hợp N2 <= N1 , chương trình tiến hành ki ểm tra ( thủ tục CHECK )
    bằng cách so sánh liên ti ếp các chuỗi con dài N2 trong X ( trỏ bởi DI ) với chu ỗi Y (
    trỏ bởi SI ) , ngừng quá trình khi tới 1 v ị trí gi ới h ạn .
    - In ra vị trí tìm thấy chuỗi con ( nếu có )
    - Sử dụng 1 bi ến đếm (DEM) để xác đị nh số l ần xuất hi ện chuỗi con Y trong X .
    - Khi vi ệc ki ểm tra kết thúc , nếu DEM = 0 -> Y không là chuỗi con c ủa X . Ngược
    l ại , Y là chuỗi con c ủa X .
    - Vi ệc in số thực hi ện nhờ thủ tục PRTNUM ( chia liên ti ếp số cần in cho 10 , in l ần
    lượt các s ố dư ra màn hình )
    - Khai báo & sử dụng Macro Thongbao đ ể in 1 chuỗi kí tự ra màn hình .
    Chạy chương trình :

    Bài 2 . L ời g ọi th ủ tục , tổ chức hệ th ống , cơ chế ngắt và lời g ọi h ệ thống
    Phần 1 . Dịch lời g ọi th ủ tục
    Viết và th ực hiện chương trình tìm số lớn nhất trong một mảng N các số
    nguyên 16 bit và hiển thị kết qu ả lên màn hình bằng mã ASCII. Viết th ủ tục con SAP
    thực hiện chuyển đổi một số nguyên VAL 16 bit thành số CHA hệ cơ số 10 biểu diễn
    bằng mã ASCII. Th ủ tục con này được gọi b ởi chương trình tìm số lớn nhất
    ( Tìm s ố l ớn nhất trong dãy s ố -> file 2s.1.Max.asm , 2s.1.Max.exe )
    Gi ải thích chương trình :
    - Dãy số có dấu nhập từ bàn phím ( gọi th ủ tục Nhap ) .
    Các phần tử phải nằm trong kho ảng ( -32768 , 32767 ) . Nếu nhập sai , kết quả
    chương trình s ẽ không chính xác
    - Tìm phần tử l ớn nhất b ằng cách so sánh liên ti ếp từng cặp phần tử cho tới khi duyệt
    hết dãy s ố
    Sử dụng :
    + Thanh ghi CX làm biến đếm ( chứa số phần tử N của dãy s ố )
    + Thanh ghi AX chứa phần tử l ớn nhất tạm thời ( ban đ ầu chính là phần tử đầu
    dãy số )
    + Thanh ghi BX trỏ tới từng phần tử của dãy s ố sau đó thực hi ện so sánh .
    Kết thúc quá trình so sánh , AX chứa phần tử l ớn nhất c ủa dãy .
    - Vi ệc chuyển đổi s ố 16bit thành thập phân và in ra màn hình được thực hi ện nhờ th ủ
    tục SAP ( chia liên ti ếp số cần in cho 10 , in l ần lượt các s ố dư ra màn hình )
    - Khai báo & sử dụng MACRO Thongbao đ ể in 1 chuỗi kí tự ra màn hình , MACRO
    Xuongdong để chuyển con trỏ xuống 1 dòng mới.

    2. Viết th ủ tục thực hiện hiển thị lên màn hình N vector ngắt của hệ th ống
    (0<N<255), ví dụ với N=50h. Phân tích các vector ngắt của máy đang sử dụng.
    ( file 2s.2.Ngat.asm , 2s.2.Ngat.exe )
    - Sử dụng hàm 35h của ngắt 21
    + Vào : AL chứa số th ứ tự ngắt
    + Ra : ES : BX chứa đị a chỉ của chương trình con phục vụ ngắt
    In nội dung ES : BX ra màn hình , trong đó s ử dụng thủ tục INRA để in 1 s ố hexa .
    ( chia liên ti ếp số cần in cho 16 , in l ần lượt các s ố dư ra màn hình )
    - Lặp N l ần quá trình trên đ ể in đ ủ N vector ngắt .
    - Khai báo & sử dụng MACRO Thongbao đ ể in 1 chuỗi kí tự ra màn hình , MACRO
    Xuongdong để chuyển con trỏ xuống 1 dòng mới.

    3. Khảo sát ngắt 21h và hãy cho biết ch ức năng các hàm của DOS
    * Ngắt 21h : các chức năng của DOS . 1 số hàm thông dụng của ngắt 21h :
    -Hàm 01h : Đợi đọc 1 ký tự từ bàn phím (có hi ện trên màn hình)
    Vào
    Không
    Ra
    AL : Mã ASCII của phím nhận được
    Đợi đọc một ký tự từ bàn phím (phím nhận được sẽ hi ển thị trên màn hình). Khi
    một phím được ấn thì ký tự tương ứng với phím đó được lưu trong thanh ghi AL. Nếu
    phím được ấn là một phím đặt bi ệt thì AL=0. T ổ hợp phím Ctrl -Break kết thúc công
    vi ệc của hàm này.
    -Hàm 02h : Hi ển thị 1 kí tự tại v ị trí con trỏ trên màn hình
    Vào
    DL <- Mã ASCII của kí tự cần hi ển thị
    Ra
    Không
    - Hàm 03h : Đọc dữ li ệu vào từ cổng nối ti ếp chuẩn (COM1)
    Vào
    Không
    Ra
    AL : byte dữ li ệu đọc được
    -Hàm 04h : Xuất ký tự ra c ổng nối ti ếp chuẩn (COM1)
    Vào
    DL ← ký tự cần xuất
    Ra
    Không
    -Hàm 05h : Xuất byte d ữ li ệu ra cổng máy in chuẩn (LPT1)
    Vào
    DL : Byte dữ li ệu cần xuất
    Ra
    Không
     

    Các file đính kèm:

Đang tải...