
Bài tập lớn
Vi xử lý
Sinh viên : Mai Đình Thế
Mssv: 20102229
Lớp : đk&tđh 1- k55
Email: maidinhthe@gmail.com

Câu 1: Viết CT đếm số âm trong miền nhớ 100 byte từ ô nhớ 123H tại RAM ngoài
Lưu đồ thuật toán
Chương trình
Main program
Mov dptr,#123h
Mov r2,#00h
Mov r0,#100
Lap:
Movx a,@dptr
Jb Acc.7,tang_bdem
Lap1:
Jnc dptr
Djnz r0,lap
Tang_bdem:
Inc r2
Sjmp lap1
Ret
end
start
dptr←#123h
bdem= 0
r0=100
a←@dptr
Acc.7=1
Dptr+1
R0-1
R0=0
end
Bdem+1
Y
N
Y
N

Câu 2: Viết CT chuyển 2 mảng dữ liệu 10 byte. Biết mảng 1 có địa chỉ 1000H trong RAM ngoài
và mảng 2 có địa chỉ 70H trong RAM trong
Lưu đồ thuật toán
Chương trình
Main program
Mov dptr,#1000h
Mov r0,#70h
Mov r2,#10
Loop:
Movx a,@dptr
Xch a,@r0
Movx @dptr,a
Inc r0
Djnz r1,loop
End
start
A←@DPTR
XCH A,@R0
@DPTR←A
DPTR+1
R0+1
R1-1
R1=0
END

Câu 3: Viết CT cộng hai số BCD 4 chữ số trong RAM trong, kết quả cất vào sô thứ 2 . Biết số
thứ 1 đặt tại ô nhớ 70H, và số thứ 2 đặt tại ô nhớ 60H
Main program
Clr c
Mov r0,#70h
Mov r1,#60h
Loop:
Mov a,@r0
Addc a,@r1
Da a
Inc r0
Inc r1
Cjne r0,#62h,loop
Mov a,#00h
Add a,#00h
Mov @r0,a
end
START
R0←70H
R1←60H
A←@R0
A←A+R1
DA A
R1+1
R0+1
R1=60H
END
A=00H
A=A+00H
@R1←A

Câu 4: Viết CT tính trung bình 10 byte trong Ram ngoài từ ô nhớ 1234H
Main program
Mov r7,#10
Mov r6,#00h
Mov r5,#00h
Mov r0,#1234h
Lap:
Mov a,#@r0
Mov b,#10d
Push b
Div ab
Add a,r6
Mov a,b
Pop b
Div ab
Add a,r6
Mov r6,a
Mov r5,b
Inc r0
Djnz r7,lap
ret
START
A←@R0
B←#10
PUSH B
DIV AB
A+R6
R6←A
A←B
A+R5
POP B
DIV AB
A+R6
R6←A
R5←B R0+1
R7-1
R7=0
R7←#10
R6←#00H
R5←#00H
R0←#1234H
N
END
Y

