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

3 813 2
Tài liệu Bài tập môn học Kỹ thuật vi xử lý pptx

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

Thông tin tài liệu

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ử 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 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 <stdio.h> #include <conio.h> void toupper(char *s) { int i = 0; while (s[i] != 0) { if (s[i] >= ‘a’ && s[i] <= ‘z’) s[i] –= 32; i++; } } main() { char STR[100]; gets(STR); // hàm nhập xâu tự toupper(STR); puts(STR); // hàm in xâu 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. . 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. (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

Ngày đăng: 19/01/2014, 11:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan