TRƯỜNG ĐIỆN - ĐIỆN TỬBài tập dài MicroProcessorLê Huy Hoànghoang.lh200239@sis.hust.edu.vnMSSV: 20200239Ngành Kỹ thuật Điều khiển và Tự động hóaGiảng viên hướng dẫn: TS... 3.1 Viết chương
Trang 1TRƯỜNG ĐIỆN - ĐIỆN TỬ
Bài tập dài MicroProcessor
Lê Huy Hoàng
hoang.lh200239@sis.hust.edu.vn MSSV: 20200239
Ngành Kỹ thuật Điều khiển và Tự động hóa
Giảng viên hướng dẫn: TS Nguyễn Tuấn Ninh
Trường: Điện - Điện tử
Hà Nội, 11/2023
Trang 2MỤC LỤC
1.1 Viết chương trình đếm số dương trong miền nhớ 50 byte từ ô nhớ 38H tại RAM trong 1
2.1 Viết chương trình chuyển 2 mảng dữ liệu Biết mảng 1 có địa chỉ từ 1000H đến 1009H trong RAM ngoài và mảng 2 có địa chỉ từ 50-59H trong RAM trong 2
3.1 Viết chương trình xóa 10byte trong vùng nhớ RAM trong có địa chỉ đầu là 6CH 4
Trang 3Hình 1.1 Lưu đồ thuật toán bài 1 2 Hình 2.1 Lưu đồ thuật toán bài 2 4 Hình 3.1 Lưu đồ thuật toán bài 3 6
i
Trang 4Bài 1
1.1 Viết chương trình đếm số dương trong miền nhớ 50 byte từ ô nhớ 38H tại RAM trong
Cách nhận biết số dương: Trong sơ đồ mã hóa, bit ngoài cùng bên trái hay MSB bit là bit dấu Nó cho bộ xử lý biết về dấu của số - bit MSB bằng 1 thì là số âm, ngược lại bit MSB bằng 0 thì là số dương
Chọn R0 làm biến điếm số dương, R1 làm biến đếm số vòng lặp
Listing 1: Code bài 1
1 ORG 0
2 INIT :
6 COUNT_LOOP :
10
11 NOT_POSITIVE :
14END
Trang 5Bài 2
2.1 Viết chương trình chuyển 2 mảng dữ liệu Biết mảng 1 có địa chỉ từ 1000H đến 1009H trong RAM ngoài và mảng 2 có địa chỉ từ 50-59H trong RAM trong
Ta sử dụng:
2
Trang 61 R0 - con trỏ cho mảng RAM trong
2 R1 - biến đếm vòng lặp
3 DPTR - con trỏ mảng RAM ngoài
Listing 2: Code bài 2
1 ORG 0
2 INIT :
6 LOOP:
10 ; Increment the pointers
13 ; Decrement loop counter
15END
Trang 7Bài 3
3.1 Viết chương trình xóa 10byte trong vùng nhớ RAM trong có địa chỉ đầu là 6CH
Ta chọn R0 làm biến con trỏ địa chỉ bắt đầu (6CH), R1 là biến đếm vòng lặp
4
Trang 8Listing 3: Code bài 3
1 ORG 0
2 INIT :
5 CLEAR_LOOP :
9 END
Trang 96