Đáp án môn học Kỹ thuật vi xử lý

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

1
632
lượt xem
241
download

Đáp án 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 đủ

Đáp án bài tập về nhà số 3 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

Chủ đề:
Lưu

Nội dung Text: Đáp án 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 ĐÁP ÁN BÀI TẬP VỀ NHÀ SỐ 3 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 = 4A86, 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ớ Mục a: 15 điểm Mục b: 5 điểm a) CS:0003 02 00 ADD AL, [BX + SI] ; cộng ô nhớ DS:[BX + SI] vào AL CS:0005 72 04 JB Label ; Label = IP + 04h vì CF=1 CS:0009 02 61 04 ADD AH, [BX + DI + 4] ; cộng ô nhớ DS:[BX + DI + 4] vào AH b) AX = 4A19h và FLAGS = 0011h Bài 2 (20 điểm). Mục a: 10 điểm Mục b: 5 điểm Mục c: 5 điểm a) Trước Label3, BX = 0000, CX = 0003, DI = 0000 và các byte từ địa chỉ SS:SP là: 02 00 05 00 06 00 b) Lệnh CX = 3 CX = 2 CX = 1 pop ax AX 0002 0005 0006 or al, 30h AX 0032 0035 0036 mov [bx][di], al STR ‘2’,‘$’,’$’,‘$’,’$’,‘$’ ‘2’,‘5’,’$’,‘$’,’$’,‘$’ ‘2’,‘5’,’6’,‘$’,’$’,‘$’ inc di DI 0001 0002 0003 c) 256 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) Tổ chức được vòng FOR 10 điểm
  2. Tổ chức được vòng WHILE 10 điểm So sánh 2 phần tử 5 điểm Chú thích tốt 5 điểm void InsertionSort(short A[], short N) { __asm { mov bx, ss:A mov cx, ss:N shl cx, 1 mov di, 2 FOR: cmp di, cx jae END_FOR mov ax, [bx][di] mov si, di dec si dec si WHILE: test si, 8000h ; hoac cmp si, 0 js END_WHILE ; jb END_WHILE mov dx, [bx][si] cmp dx, ax jbe END_WHILE mov [bx][si+2], dx dec si dec si jmp WHILE END_WHILE: mov [bx][si+2], ax inc di inc di jmp FOR END_FOR: } } Bài 4 (30 điểm). Viết được đoạn main – 5 điểm Cất các thanh ghi – 5 điểm Gán địa chỉ của tham số vào ebx – 5 điểm Kiểm tra điều kiện kết thúc FOR – 5 điểm Đổi mã ký tự – 5 điểm Khôi phục các thanh ghi – 5 điểm
  3. .stack 100 .data STR DB 100 DUP(?) ; char STR[100] .code MAIN PROC mov ax, @data mov ds, ax ; gets(STR) mov ah, 10 lea edx, STR int 21h ; toupper(STR) lea eax, STR push eax CALL TOUPPER ; puts(STR) mov ah, 9 lea edx, STR int 21h ; exit to DOS mov ah, 4Ch int 21h MAIN ENDP TOUPPER PROC ; cất các thanh ghi vào stack, gán địa chỉ offset của tham số cho ebx push ebp mov ebp, esp push eax push edi mov ebx, [ebp + 16] ; duyệt xâu ký tự xor edi, edi FOR: mov al, [ebx][edi] ; al chứa mã ký tự đang duyệt ; kiểm tra điều kiện kết thúc vòng for cmp al, 13 je END_FOR ; đổi ký tự thường thành ký tự in hoa cmp al, 'a' jb NO_CHANGE cmp al, 'z' ja NO_CHANGE sub al, 20h
  4. mov [ebx][edi], al NO_CHANGE: inc edi ; duyệt ký tự tiếp theo jmp FOR END_FOR: ; khôi phục các thanh ghi pop edi pop eax pop ebp TOUPPER ENDP END MAIN
Đồng bộ tài khoản