Viết lai thân hàm InsertionSortshort A[].. short N cho dưới đây bằng ASSEMBLY cho 8086... mov |ebxjJledij, al NO CHANGE: inc edi — ; duyệt ký tự tiếp theo END FOR: , khôi phục các thanh
Trang 1KHOA Đ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
Bai 1 (20 diém) Cho trạng thái của một hệ vi xử lý 8086 nhu sau:
Cac thanh ghi: AX = 4A86, DX = FF6A, BX = 075C, SI = 0008, DI = 000A, CS = 8BBO,
DS = 4636, IP = 0003, FLAGS = 0000
Bộ nhớ:
Địa chỉ vật lý: Giá trị § ô nhớ
Muc a: 15 điểm
Muc b: 5 điêm
a)
CS:0003 02 00
; cong 6 nhé DS:[BX + SI] vao AL
; Label = IP + 04h vi CF=1
b) AX=4AI9h và FLAGS =0011h
Bài 2 (20 điểm)
Muc a: 10 điểm
Mục b: Š di¢m
Muc c: 5 diém
ADD AL, [BX + SI]
Label
ADD AH,[BX + DI + 4|
; công ô nhớ DS:[|BX + DI + 4| vào AH
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)
mov [bx][di], al | STR | 2-9 S'S VPS? | VSS VSP LSS | DVS VOL LPG
c) 256
Bài 3 (30 điểm) Viết lai thân hàm InsertionSort(short A[] short N) cho dưới đây bằng
ASSEMBLY (cho 8086)
Trang 2Tổ chức được vòng WHILE
So sánh 2 phân tử
Chú thích tốt
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
mov ax, [bx]|[di]
mov Si, di dec SI dec SI
WHILE:
test si, 8000h
mov dx, [bx][s1]
cmp dx, ax
mov [bx][si+2], dx dec sĩ
dec Si
END_WHILE:
mov [bx][si+2], ax inc di
inc di
END_ FOR:
}
}
Bai 4 (30 diém)
Viét duoc doan main —
Cất các thanh ghi —
Gán địa chỉ của tham số vào ebx —
Kiểm tra điều kiện kết thúc FOR —
Đổi mã ký tự —
Khôi phục các thanh ghi —
10 điểm
5 điểm
5 diém
5 diém
5 diém
5 diém
5 diém
5 diém
5 diém
;hoac cmp
s1, 0
END_ WHILE
Trang 3stack 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
; toupper(STR)
lea eax, STR
push eax
CALL TOUPPER
; puts(STR)
mov ah, 9
lea edx, STR
int 2th
, exit to DOS
mov ah, 4Ch
int 2th
MAIN ENDP
TOUPPER PROC
; cat cdc thanh ghi vao stack, gdn dia chi 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 chia ma ky tu dang duyét
; kiểm tra điều kiện kết thúc vòng for
cmp — al, 13
; đổi ký tự thường thành ký tự in hoa
cmp al, ‘a’
cmp al, Z'
sub al, 20h
Trang 4mov |ebxjJledij, al
NO CHANGE:
inc edi — ; duyệt ký tự tiếp theo
END FOR:
, khôi phục các thanh ghi
pop edi
TOUPPER ENDP
END MAIN