Hãy chỉ ra trạng thái của các cờ trong thanh ghi cờ sau khi thực hiện các lệnh trên.. Giải thích cách xác định địa chỉ vật lý của một ô nhớ trong bộ nhớ.. Giải thích cách xác định địa ch
Trang 1TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
Trang 2TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN TIN HỌC CÔNG NGHIỆP
-o0o -
SÁCH GIAO BÀI TẬP TÊN HỌC PHẦN: VI XỬ LÝ – VI ĐIỀU KHIỂN
MÃ HỌC PHẦN: TEE408
Thái nguyên, ngày … tháng… năm 2014
TRƯỞNG BỘ MÔN THCN NGƯỜI BIÊN SOẠN
NGUYỄN TUÁN LINH
Lưu hành nội bộ
Trang 3CHƯƠNG 1 TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN
1.1 Hãy chuyển đổi các số nguyên dương thập phân sau đây ra nhị phân 1 byte:
1.9 Hãy chuyển đổi các số thập lục phân lẻ sau đây ra thập phân :
AF.22 , 20.E , A5.2F , CF.04 , B8.9 , D9.E , E5.A
1.10 Đổi các số sau từ hệ thập phân sang hệ nhị phân:
Trang 41.21 Cho biết kết quả khi thực hiện trên máy tính các phép cộng sau (8 bit) và giải thích:
a) 56 + 78 (không dấu); b) 121 + 40 (không dấu)
1.26 Tính tổng sau: 4A9Bh + 97A2h
1.27 Đổi các giá trị sau thành byte
Trang 6Hãy chỉ ra trạng thái của các cờ trong thanh ghi cờ sau khi thực hiện các lệnh trên
2.5 Giải thích cách xác định địa chỉ vật lý của một ô nhớ trong bộ nhớ
- Giả sử địa chỉ một ô nhớ được xác định qua thanh ghi đoạn DS và thanh ghi lệch BX với DS=0F35h, BX=150Dh Hãy xác định địa chỉ vật lý và địa chỉ logic của ô nhớ trên Ô nhớ trên thuộc đoạn nào trong bộ nhớ
2.6 Giải thích cách xác định địa chỉ vật lý của một ô nhớ trong bộ nhớ
- Giả sử địa chỉ một ô nhớ được xác định qua thanh ghi đoạn CS và thanh ghi lệch IP với CS=4530h, IP=49A6h Hãy xác định địa chỉ vật lý và địa chỉ logic của ô nhớ trên Ô nhớ trên thuộc đoạn nào trong bộ nhớ
2.7 Giải thích cách xác định địa chỉ vật lý của một ô nhớ trong bộ nhớ
- Giả sử địa chỉ một ô nhớ được xác định qua thanh ghi đoạn ES và thanh ghi lệch DI với ES=1793h, DI=2004h Hãy xác định địa chỉ vật lý và địa chỉ logic của ô nhớ trên Ô nhớ trên thuộc đoạn nào trong bộ nhớ
2.8 Giải thích cách xác định địa chỉ vật lý của một ô nhớ trong bộ nhớ
- Giả sử địa chỉ một ô nhớ được xác định qua thanh ghi đoạn SS và thanh ghi lệch SP với SS=11080, SP=2004 Hãy xác định địa chỉ vật lý và địa chỉ logic của ô nhớ trên Ô nhớ trên thuộc đoạn nào trong
bộ nhớ
2.9 Giả sử có một ngăn xếp có địa chỉ đáy là FFFEh
Trang 7- Hãy giải thích và xác định địa chỉ đỉnh của ngăn xếp sau khi thực hiện đẩy vào các giá trị sau: 05F3h, 4D3Ch,796Ah,418Bh
- Giải thích và xác định địa chỉ đỉnh của ngăn xếp và giá trị của các thanh ghi AX, BX, CX, DX sau khi thực hiện các lệnh:
Hãy cho biết giá trị của các thanh ghi AX, BX, CX sau khi thực hiện các lệnh này
2.11 Giải thích các lệnh trong đoạn chương trình sau:
MOV AX,02B5h
MOV CX,5
SHL AX,CX
Hãy cho biết giá trị của thanh ghi AX sau mỗi lần dịch
2.12 Giải thích các lệnh trong đoạn chương trình sau:
MOV AX,0446h
MOV CX,4
SHR AX,CX
Hãy cho biết giá trị của thanh ghi AX sau mỗi lần dịch
2.13 Giải thích các lệnh trong đoạn chương trình sau:
Trang 82.17 Hãy giải thích và chỉ ra chế độ địa chỉ của các lệnh sau:
a/ MOV AX,058Dh b/ MOV AL,[BX] c/ MOV AX,[BP]+[SI]+0100h d/ MOV BL,[0653h] e/ MOV AX,[SI]+50 f/ ADD DX,53h[BX][SI]
g/ ADD AL,3Bh[SI] h/ MOV BX,7Ch[BP] i/ SUB AL,BL
j/ AND AX,[BX+10] k/ OR CX,[DI+30h]
2.18 Giải thích các lệnh trong đoạn chương trình sau:
2.19 Thanh ghi AX bằng bao nhiêu sau khi thực hiện những câu lệnh sau
MOV AX, Array1
Trang 9ADD Array2, Array1 ; Array2=
…
…
Array1 DW AAh, BBh Array2 DW 01h, 02h
2.21 Khi thực hiện câu lệnh sau, hãy điền giá trị HEX thích hợp vào chỗ trống
…
…
Array1 DW 20h, 10h Array2 DW 30h, 40h 2.22 Khi thực hiện câu lệnh sau, hãy điền giá trị HEX thích hợp vào chỗ trống
PUSH AX ; POP BX
AX= …
BX
…
…
Array1 DB 1Fh, 62h Array2 DB 2Fh, 49h 2.23 Khi thực hiện câu lệnh sau, hãy điền giá trị HEX thích hợp vào chỗ trống
PUSH AX ; POP BX
AX= …
BX
Trang 10ADD AH, BL ; AX= …
…
…
Array1 DB 1Fh, 62h Array2 DB 2Fh, 49h
2.24 Xác định giá trị trong thanh ghi AL và BL sau khi thực hiện xong đoạn chương trình sau
Trang 122.30 Sau khi thực hiện đoạn chương trình, thanh ghi AX có giá trị bằng bao nhiêu ?
org 100h mov AX,0 Mov BX,0 mov al, 5 mov bl, 10h add al, bl xor bl, 55h
2.31 Sau khi thực hiện đoạn chương trình :
mov al, 5 mov bl, 10 add bl, al sub bl, 1 Giá trị trong thanh ghi BL bằng bao nhiêu ?
2.32 Sau khi thực hiện đoạn chương trình :
mov al, 5 mov bl, 10 add bl, al sub bl, 1 Giá trị trong thanh ghi AL bằng bao nhiêu ?
2.33 Giả sử cho: AX=1000H; BX=2000H; CX=3000H Sau khi thực hiện các lệnh:
PUSH AX PUSH BX PUSH CX POP AX POP BX POP CX Cho biết giá trị trong các thanh ghi AX, BX, CX
2.34 Giả sử cho: AX=FF00H; BX=0001H; CX=1000H Sau khi thực hiện các lệnh:
PUSH CX PUSH BX PUSH AX POP AX POP BX POP CX Cho biết giá trị trong các thanh ghi AX, BX, CX
2.35 Giả sử cho: AX=1234H; BX=3456H; DX=1111H Sau khi thực hiện các lệnh:
MOV AX, CX PUSH BX PUSH AX POP AX POP BX POP DX Cho biết giá trị trong các thanh ghi AX, BX, CX
2.36 Xác định nội dung của các thanh ghi AX, BX và các ô nhớ1000h, 1001h, 1002h, 1003h
Trang 13sau khi thực thi các đoạn chương trình sau:
c MOV AX,12h
MOV DS:[1001h],AX MOV BX,AX
ADD BH,10h MOV DS:[1002h],BH
HD: xác định các chế độ địa chỉ được sử dụng trong mỗi ý
2.37 Giả sử có một đoạn chương trình C++ được thực hiện như sau:
if ( (AL>=0x41) && (AL<=0x5A) )
AL=AL+0x20;
Hãy chuyển đoạn chương trình trên thành mã lệnh gợi nhớ của bộ vi xử lý 8086
2.38 Giả sử có một đoạn chương trình C++ được thực hiện như sau:
if ( (AL=0x43) | (AL=0x63) )
printf(chr(AL));
Hãy chuyển đoạn chương trình trên thành mã lệnh gợi nhớ của bộ vi xử lý 8086
2.39 Giả sử có một đoạn chương trình C++ được thực hiện như sau:
for (AL=100; AL> 0;AL )
AL=AL+50;
Hãy chuyển đoạn chương trình trên thành mã lệnh gợi nhớ của bộ vi xử lý 8086
2.40 Giả sử có một đoạn chương trình C++ được thực hiện như sau:
AX=1000;
WHILE (AX > 0) {AX=AX-100;}
Hãy chuyển đoạn chương trình trên thành mã lệnh gợi nhớ của bộ vi xử lý 8086
2.41 Giả sử có một đoạn chương trình C++ được thực hiện như sau:
AL=0x61;
CX=0x1A;
do{
Trang 14AL=AL-0x20;
printf(chr(AL));
CX=CX-1;
while ( CX>0);
Hãy chuyển đoạn chương trình trên thành mã lệnh gợi nhớ của bộ vi xử lý 8086
2.42 Viết chương trình nhập vào từ bàn phím 1 kí tự Kiểm tra xem, nếu kí tự đó là chữ cái hoa hoặc thường thì in ra màn hình
2.43 Viết chương trình nhập vào từ bàn phím 1 kí tự In kí tự đó ra toàn màn hình
2.44 Viết chương trình in ra màn hình các kí tự trong bảng mã ASCII
2.45 Viết chương trình nhập vào hai số nguyên In ra màn hình tổng, hiệu, tích, thương của hai số đó
2.46 Viết chương trình nhập vào từ bàn phím một mảng Sắp xếp mảng theo thứ tự tăng dần, giảm dần
2.47 Viết chương trình nhập vào một mảng Tìm min, max của mảng và in ra màn hình 2.48 Viết chương trình nhập vào một xâu kí tự In xâu kí tự theo chiều ngược lại
2.49 Viết chương trình nhập vào một xâu họ và tên Tách tên và in ra màn hình
2.50 Viết chương trình nhập vào 3 số thực a,b,c
Giải và biện luận phương trình bậc 2: ax2 + bx +c =0
2.51 Viết chương trình trong C/C++ thực hiện xóa màn hình, tính tổng, hiệu, tích thương của hai số nhập vào từ bàn phím (Các thao tác này thực hiện bằng mã lệnh của
ASSEMBLY)
2.52 Viết chương trình liên kết giữa ASSEMBLY và C/C++ thực hiện tìm min, max của một mảng; sắp xếp mảng
2.53 Viết các chương trình con thực hiện các thao tác cơ bản (tùy giáo viên ra cụ thể)
2.54 Viết các MACRO thực hiện các thao tác cơ bản (tùy giáo viên ra cụ thể)
2.55 Điền giá trị vào (…) để chương trình thực hiện việc in một chuỗi ký tự màn hình? MODEL SMALL
MOV AX,… ; INT …
MOV …,02h ; MOV …,0C15h ; INT …
LEA DX,… ; MOV AH,… ; INT …
MOV AH,4Ch ; INT 21h
main ENDP END main
HD: quan tâm đến các ngắt sử dụng trong chương trình
Trang 152.56 *Viết chương trình in giá trị trong thanh ghi đa năng ra màn hình dưới dạng số nhị phân
HD: dựa vào thuật toán đổi một số từ hệ mười sang hệ 2 và sử dụng hàm 01h của ngắt 21h
2.57 *Viết chương trình in giá trị trong thanh ghi đa năng ra màn hình dưới dạng số thập phân
HD: dựa vào thuật toán đổi một số từ hệ 2 sang hệ 10 và sử dụng hàm 01h của ngắt 21h
2.58 *Viết chương trình in giá trị trong thanh ghi đa năng ra màn hình dưới dạng số hệ 16
HD: dựa vào thuật toán: lấy số cần đổi chia cho 10, nếu số dư nhỏ hơn hoặc 9 thì in ra màn hình, còn số dư lớn hơn 9 và nhỏ hoặc bằng 15 thì lấy số dư cộng với 37H Sử dụng hàm 01h của ngắt 21h
2.59 *Viết chương trình nhập một số hệ thập phân có 3 chữ số vào thanh ghi đa năng
HD: dựa vào thuật toán: chia số cần chuyển cho 10, lấy số dư chuyển vào thanh ghi và sử dụng hàm 02h của ngắt 21h để nạp vào thanh ghi
2.60 *Viết chương trình nhập một số hệ nhị phân có 8 chữ số vào thanh ghi AL
HD: sử dụng các lệnh dịch quay
2.61 *Viết chương trình nhập một số hệ hexa có 4 chữ số vào thanh ghi AX
2.62 *Khai báo ba mảng A, B, C kích thước 10 phần tử, mỗi phần tử có kích thước 1 byte, giá trị khởi tạo tùy ý Hãy viết chương trình thực hiện C=A+B
2.63 *Viết chương trình nhập một xâu, độ dài 5 ký tự, in ra màn hình xâu đó dưới dạng chữ hoa
2.64 Thực hiện nhập vào từ bàn phím một kí tự, nếu không phải là ký tự số thì nhập lại Sau
đó hiển thị ký tự vừa nhập trên dòng tiếp theo
2.65 Thực hiện nhập vào từ bàn phím 2 ký tự trong đó phải có 1 ký tự là số, 1 ký tự là chữ in thường
2.66 Thực hiện nhập vào 2 số tự nhiên nhỏ hơn 10 Tìm số lớn nhất trong 2 số và in kết quả
ra màn hình trên dòng tiếp theo
2.67 Thực hiện nhập vào 2 số tự nhiên nhỏ hơn 10 Tìm số nhỏ nhất trong 2 số và in kết quả
ra màn hình trên dòng tiếp theo
2.68 Thục hiện nhập vào từ bàn phím một chữ cái in thường 'ch' và in ra các chữ in thường
2.72 Cho trước 2 chữ cái in hoa ch1 và ch2 (ch1<ch2), thực hiện đếm số chữ cái trong đoạn
từ ch1 đến ch2 và lưu kết quả vào thanh ghi BX
2.73 Cho trước 2 chữ thường ch1 và ch2 (ch1<ch2), thực hiện đếm số chữ cái trong đoạn từ ch1 đến ch2 và lưu kết quả vào thanh ghi BX
2.74 Nhập vào một chuỗi ký tự bất kỳ từ bàn phím, và nhập vào một ký tự ch bất kỳ Đếm
số lượng ký ch trong chuỗi và lưu kết quả vào AX
2.75 Nhập vào một chuỗi ký tự bất kỳ từ bàn phím, đếm số lượng ký tự là chữ cái và nhập vào AX, số lượng ký tự là số nhập vào thanh ghi BX
Trang 162.76 Thực hiện nhập vào một số tự nhiên N<8, tính N! và lưu kết quả vào BX
2.77 Thực hiên in dạng biểu diễn nhị phân của thanh ghi BX
2.78 Cho trước 2 số tự nhiên trong 2 thanh ghi AX và BX kiểm tra số nhỏ nhất nằm trong thanh ghi nào?
2.79 Cho trước 2 số tự nhiên trong 2 thanh ghi AX và BX, kiểm tra số lớn nhất nằm trong thanh ghi nào?
2.80 Cho trước 2 số tự nhiên trong 2 thanh ghi AX và BX, kiểm tra hiệu của 2 số, nếu có trị tuyệt đối nhỏ hơn 10 thì in trị tuyệt đối ra màn hình, ngược lại in kết quả vào thanh ghi
2.87 Cho 2 xâu ký tự S1 và S2, kiểm tra xem S1 và S2 có bằng nhau hay không?
2.88 Cho xâu ký tự S, kiểm tra xem S có phải là xâu đối xứng hay không?
2.89 Cho xâu ký tự S, đếm số ký tự là chữ số có trong S
2.90 Nhập vào từ bàn phím một xâu ký tự và lưu độ dài của xâu vào thanh ghi BX
2.91 Cho xâu ký tự S độ dài l, tạo ra xâu S1 từ xâu S bằng cách lấy trong S từ vị trí thứ i(0<i<l) n ký tự (0<n<l-i)
2.92 Thực hiện nhập một ký tự ch vào từ bàn phím và in ra màn hình 10 dòng, mỗi dòng chưa 10 kí tự ch
2.93 Cho xâu ký tự S, thực hiện tạo xâu S1 từ xâu S bằng cách loại bỏ trong xâu S các ký tự
là dấu cách
2.94 Cho xâu ký tự S, nhập từ bàn phím một ký tự ch và kiểm tra xem ch có trong xâu S hay không?
2.95 Cho xâu ký tự S, đếm số lượng ký tự 'A' có trong xâu S
2.96 Cho xâu ký tự S, tính tổng của các ký tự số có trong xâu S và lưu kết quả vào thanh ghi
BX
Trang 17CHƯƠNG 3 HỌ VI ĐIỀU KHIỂN 8051
3.1 Nếu thanh ghi A được sử dụng để chứa kết quả của các phép toán, hãy cho biết giá trị của thanh ghi A sau khi thực hiện các phép toán sau:
Trang 18c A=00h
d A=FFh
Các bit không chịu ảnh hưởng có giá trị mặc định
3.7 Nếu chuyển các giá trị sau đây vào thanh ghi A, thanh ghi PSW có giá trị bằng bao nhiêu nếu thanh ghi A chưa kết quả của phép toán
3.10 Cho trước bảng sau:
Lệnh 8051 Cách định địa chỉ của toán hạng
Thứ nhất Thứ hai ORG 0
Điền vào các chỗ trống trong cột các cách địa chỉ cho toán hạng thứ nhất và thứ 2
3.11 Cho trước bảng sau:
Lệnh 8051 Cách định địa chỉ của toán hạng
Thứ nhất Thứ hai ORG 0
Trang 19Điền vào các chỗ trống trong cột các cách địa chỉ cho toán hạng thứ nhất và thứ 2
3.12 Viết chương trình để sao chép giá trị 55H vào ngăn nhớ RAM tại địa chỉ 40H đến 44H
sử dụng:
a Chế độ đánh địa chỉ trực tiếp
b Chế độ đánh địa chỉ gián tiếp thanh ghi không dùng vòng lặp
3.13 Xác định chế độ địa chỉ để cộng nội dung của 2 ô nhớ 30h và 31h, kết quả lưu vào ô nhớ 32h trong RAM nội
3.14 Xác định chế độ địa chỉ để cộng nội dung của 2 ô nhớ 30h và 31h, kết quả lưu vào thanh ghi A trong RAM nội
3.15 Xác định chế độ địa chỉ để cộng nội dung của 2 thanh ghi R1 với R2, kết quả ghi vào ô nhớ 30h
3.16 Xác định chế độ địa chỉ để cộng nội dung của 2 thanh ghi R1 với R2, kết quả ghi vào ô nhớ 30h
3.17 Nạp giá trị 0FFh vào thanh ghi R1,lấy nội dung trong ô nhớ 35h cộng với nội dung trong thanh ghi R1, kết quả lưu vào thanh ghi R2 Hãy xác định các chế độ địa chỉ để thực hiện các thao tác trên
3.18 Nạp giá trị 0ABh vào ô nhớ 34h, nạp giá trị 1Dh thanh ghi R1, cộng nội dung trong ô nhớ 34h với nội dung trong thanh ghi R1, kết quả lưu vào ô nhớ 30h Hãy xác định các chế độ địa chỉ để thực hiện các thao tác trên
3.19 Câu 18 Địa chỉ của ô nhớ 40h được chứa trong thanh ghi R5, hãy cho biết các chế độ địa chỉ được sử dụng để cộng nội dung của ô nhớ được lưu trong R5 với nội dung của ô nhớ 41H Kết quả byte cao được đưa vào thanh ghi A, byte thấp được chứa trong ô nhớ 42h
3.20 Cộng nội dung của 5 ô nhớ liên tiếp, biết rằng địa chỉ của ô nhớ đầu tiên được lưu trong thanh ghi R1 và R1 bằng 42h Kết quả byte cao được lưu trong ô nhớ 30h, byte thấp lưu trong 31h Hãy xác định các chế độ địa chỉ của các thao tác trên
3.21 Hãy cho biết giá trị của các thanh ghi R0, R1, R2 sau khi thực hiện xong đoạn chương trình dưới đây
Trang 203.25 Write a program to move (write) 40H to location 30H in internal RAM using 2
methods of addressing: direct addressing and indirect addressing
3.26 Write a program to clear location 31H in internal RAM using 2 methods of addressing: direct addressing and indirect addressing
Hint: to clear means to reset the data to zero
7Fh R0
30h
A
00h
Trang 213.27 Write a program to move (read) the content of location 33H in internal RAM to register
A using 2 methods of addressing: direct addressing and indirect addressing
3.28 Write a program to move the content of registerA to location 0033H in external RAM
b Định địa chỉ ô nhớ gián tiếp
3.31 Viết các câu lệnh để ghi nội dung thanh ghi A vào ô nhớ 32H của RAM nội theo 2 cách:
a Định địa chỉ ô nhớ trực tiếp
b Định địa chỉ ô nhớ gián tiếp
3.32 Viết các câu lệnh để đọc ô nhớ33H của RAM nội vào thanh ghi A của RAM nội theo 2 cách:
a Định địa chỉ ô nhớ trực tiếp
b Định địa chỉ ô nhớ gián tiếp
3.33 Viết các câu lệnh để chuyển dữ liệu ô nhớ 34H của RAM nội vào ô nhớ 35H của RAM nội theo 2 cách:
DJNZ R1, L1
3.35 Viết chương trình nạp 32 byte trong vùng dữ liệu ngoại từ địa chỉ 20H với giá trị là 32h
MOV A,#CONST2 MOVDPTR,#20H