Bài tập môn học Kỹ thuật vi xử lý

Chia sẻ: Do Duc Thich | Ngày: | Loại File: DOC | Số trang:3

0
349
lượt xem
108
download

Bài tập môn học Kỹ thuật vi xử lý

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo khoa điện tử viễn thông, bộ môn điện tử tin học.

Chủ đề:
Lưu

Nội dung Text: Bài tập môn học Kỹ thuật vi xử lý

  1. KHOA ĐIỆN TỬ VIỄN THÔNG BỘ MÔN ĐIỆN TỬ TIN HỌC ------------------------------- MÔN HỌC: KỸ THUẬT VI XỬ LÝ Học kỳ: 2 Năm học: 2009-2010 BÀI TẬP VỀ NHÀ SỐ 3 Hạn nộp: Buổi học VXL đầu tiên của tuần 32 (nộp quá hạn sẽ nhận điểm 0) Hạn trả bài: Buổi học cuối cùng của tuần 34 Bài 1 (20 điểm). Cho trạng thái của một hệ vi xử lý 8086 như sau: Các thanh ghi: AX = 4A07, DX = FF6A, BX = 075C, SI = 0008, DI = 000A, CS = 8BB0, DS = 4636, IP = 0003, FLAGS = 0000. Bộ nhớ: Địa chỉ vật lý: Giá trị 8 ô nhớ 46AC0: A6 43 C0 49 B5 F6 20 64 46AC8: 38 C5 DE 80 29 73 44 E8 8BB00: B8 67 01 02 00 72 04 03 8BB08: C3 02 61 04 03 84 02 00 a) Giải mã 3 lệnh đầu tiên mà CPU sẽ thực hiện và viết các lệnh đó theo mẫu sau (15 điểm): CS:giá trị của IP các byte mã lệnh lệnh ASEMBLY ; chú thích b) Cho biết giá trị các thanh ghi AX và FLAGS sau lệnh thứ 3 (5 điểm) Bảng các mã lệnh: tra tại http://www.mlsite.net/8086 Bài 2 (20 điểm). Cho chương trình ASSEMBLY sau: .stack 100 .data STR DB 6 DUP(‘$’) A DW 100h .code mov ax, @data mov ds, ax mov ax, A mov bx, 10 xor cx, cx Label1: test ax, ax jz Label2 xor dx, dx div bx push dx inc cx jmp Label1 Label2: lea bx, STR
  2. xor di, di Label3: pop ax or al, 30h mov [bx][di], al inc di loop Label3 Lable4: mov dx, bx mov ah, 9 int 21h END a) Sau khi thực hiện lệnh trước Label3, cho biết giá trị của các thanh ghi BX, CX, DI và các byte bắt đầu từ SS:SP? (10 điểm) b) Điền giá trị vào bảng sau khi thực hiện từng lệnh trong đoạn từ Lable3 đến Lable4 (5 điểm) Lệnh CX = ? … CX = ? pop ax AX … or al, 30h AX … mov [bx][di], al STR … inc di DI … c) Cho biết kết quả hiện trên màn hình (5 điểm) Bài 3 (30 điểm). Viết lại thân hàm InsertionSort(short A[], short N) cho dưới đây bằng ASSEMBLY (cho 8086) void InsertionSort(short A[], short N) // short – kiểu biến 2 byte { for (short i = 1; i < N; i++) { short X = A[i]; short j = i – 1; while (j >= 0 && A[j] > X) { A[j + 1] = A[j]; j– –; } A[j + 1] = X; } } Bài 4 (30 điểm). Viết lại chương trình C sau đây bằng ASSEMBLY (cho 80486): #include #include void toupper(char *s) { int i = 0; while (s[i] != 0) { if (s[i] >= ‘a’ && s[i]
  3. } } main() { char STR[100]; gets(STR); // hàm nhập xâu ký tự toupper(STR); puts(STR); // hàm in xâu ký tự } Chú ý: Các hàm puts và gets có thể dùng ngắt 21h. Hàm toupper cần được viết dưới dạng chương trình con.
Đồng bộ tài khoản