Vi xử lý vi điều khiển

13 355 2
Vi xử lý   vi điều khiển

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Vi Xử Lý – Vi Điều Khiển VI XỬ LÝ – VI ĐIỀU KHIỂN MỤC LỤC VI XỬ LÝ – VI ĐIỀU KHIỂN .1 MỤC LỤC NỘI DUNG Bước Mục đích, yêu cầu tập Bước 3: Sơ đồ thuật toán Bước Các câu lệnh dùng Bước 5: Trình bày chương trình thực chức chính: Bài làm chính: .5 Bước 6: Trình bày đoạn mã lệnh ý nghĩa dùng chúng .9 NỘI DUNG Tên đề tài: Viết chương trình nhập xâu ký tự, độ dài 10 ký tự, In hình số lần xuất ký tự ‘B’ xâu Bước Mục đích, yêu cầu tập  Mục đích: Nhập xâu ký tự từ bàn phím In hình số lần xuất ký tự “B” xâu  Yêu cầu: Viết chương trình nhập xâu, in hình số lần xuất ký tự “B” xâu Bước Cách tiếp cận đề tài  Nhập xâu ký tự từ bàn phím: thông qua việc dùng ghi AL để nhập tạm thời ký tự vào từ chúng chuyển vào ghi SI Và từ Vi Xử Lý – Vi Điều Khiển ký tự hiển thị hình sau để kiểm tra (so sánh) với ký tự “B” Việc nhập kết thúc gõ phím Enter bàn phím  So sánh ký tự xâu với “B”: Dùng vòng lặp để so sánh ký tự xâu SI với mã Hex ký tự “a” 42h  Đếm số lượng chữ “B” xâu: Sau so sánh với “B” xong thông qua biến dem mà liệu số lượng chữ “B” có xâu lưu vào ghi AL dùng lệnh DIV để làm tròn số số nguyên, sau hiển thị hình số  Hiện thị hình số lượng chữ “B” xâu chữ số: Sử dụng lệnh ngắt để in hình Bước 3: Sơ đồ thuật toán Bước Các câu lệnh dùng  MOV (chuyển buyte hay từ ) Dạng lệnh: MOV Đích, Nguồn Mô tả: Đích Nguồn Ý nghĩa: di chuyển liệu từ toán hạng nguồn đến toán hạng đích Vi Xử Lý – Vi Điều Khiển Toán hạng nguồn đích tìm theo chế đọc địa khác nhau, phải có độ dài không phép đồng thời hai ô nhớ hai ghi đoạn Các cờ bị thay đổi: không Ví dụ: MOV AL,AH ;ALAH MOV CX,50 ;CX50 MOV DL,[SI] ;DL{DL:SI}  LEA Dạng lệnh: LEA Đích,Nguồn Trong Đích ghi: BX, CX, DX, PB, SI, DI Nguồn tên biến đoạn DS rõ lệnh ô nhớ cụ thể Đíchđịa lệch nguồn Đíchđịa hiệu dụng nguồn Đây lệnh tinhd địa lệch biến địa ô nhớ chọn làm Nguồn nạp vào ghi chọn Các cờ bị thay đổi: không Ví dụ: LEA DX, Label ;nap dia chi cua lech Label vao DX LEA CX, [BX][DI] ;nap vao CX dia chi hieu dung ;BX va DI chi EA=BX+DI  INT (lệnh gọi ngắt) Dạng lệnh: INT N (N= 0…FFH) Các thao tác 8086 chạy lệnh INT Tạo địa Stack, cất ghi cờ vào Stack: SPSP-2, {FR}SP Cấm ngắt khác tác động vào vi xử lý, cho vi xử lý chay chế độ lệnh: IF0, TF0 Tao địa Stack, cất địa đaonj địa trở vào Stack: SPSP-2, SPCS Tạo địa Stack, cất địa lệch địa trở vào Stack : SPSP-2, SPIP Vi xử lý lấy lệnh địa mới, đại trỏ ngắt tinhd toán sau: {Nx4}IP, {Nx4+2}CS Ví dụ: với N=8 CS{0022H} {0020H}  CMP (so sánh) Dạng lệnh : CMP Đích, Nguồn CMP trừ toán hạng đích cho toán hạng nguồn, chúng byte từ, không lưu trữ kết Các toán hạng không bị thay đổi Kết lệnh dùng để cập nhật cờ dùng để làm điều kiện cho lệnh nhảy có điều kiện Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF  INC (tăng toán hạng lên 1) Dạng lệnh: INC Đích Mô tả: Đích  Đích + Lệnh tăng Đích lên Các cờ bị thay đổi: AF, OF, PF, SF, ZF Vi Xử Lý – Vi Điều Khiển Ví dụ: INC AL INC BX  JMP (lệnh nhảy không điều kiện) JMP trao quyền điều khiển cho vùng mục tiêu cách không điều kiện Lệnh phân biệt nhảy gầnn nhảy xa Dạng lênh: sau cách viết lệnh không điều kiện: JMP NHAN Lệnh bắt đầu địa với NHAN Chương trình cú vào khoảng dịch NHAN lệnh nhảy để xác định xem là: + Nhảy ngắn : trường hợp NHAN nằm cách xa (dịch khoảng) -128…127 byte so với lệnh sau lệnh JMP Chương trình vào vị trí NHAN để xác định giá trị dịch chuyển Do đó: IPIP+dịch chuyển Đây lệnh nhảy trực tiếp dịch chuyển để trực tiếp mã lệnh Để định hướng cho chương trình dịch làm việc nên viết lệnh dạng: JMP SHORT NHAN + Nhảy gần: : trường hợp NHAN nằm cách xa (dịch khoảng) -32768…+32768 byte so với lệnh JMP Chương trình vào vị trí NHAN để xác định giá trị dịch chuyển Do IPIP+dịch chuyển Đây lệnh nhảy trực tiếp dịch chuyển để trực tiếp mã lệnh Để định hướng cho chương trình dịch làm việc nên viết lệnh dạng: JMP NEAR NHAN + Nhảy xa: : trường hợp NHAN nằm đoạn mã khác so với lệnh sau lệnh JMP Chương trình vào vị trí NHAN để xác định giá trị địa nhảy đến (CS:IP NHAN) SAu đó: IPIP NHAN CSCS NHAN Các cờ bị thay đổi: không  JE (nhảy nhau) Dạng lệnh: JE NHAN Mô tả: IPIP+dịch chuyển Lệnh biểu diễn thao tác nhảy cso điều kiện với NHAN ZF=1 NHAN phải nằm cách xa khoảng -128…+127 byte so với lệnh sau lệnh JE Chương trình vào vị trí NHAN để xác định giá trị dịch chuyển Các cờ bị thay đổi: không Ví dụ: SUB AL,10H ;tru AL cho 10H JE THOI ;nhay den THOI neu AL bang 10H  LOOP (lặp CX #0) Dạng lệnh: LOOP NHAN Mô tả: lệnh dùng để lặp lại đoạn chương trình(gồm lệnh nằm khoảng từ NHAN đến hết lệnh LOOP NHAN) số lần lặp CX=0 NHAN phải nằm cách xa tối đa -128byte so với lệnh sau lệnh LOOP Các cờ bị thay đổi: không Ví dụ: Vi Xử Lý – Vi Điều Khiển MOV AL, ;xoa AL MOV CX, 10 ;nap so lan lap vao CX LAP: INC AL ;tang AL len LOOP LAP ;lap lai 10 lan, AL=10  DIV (chia không dấu) Dạng lệnh: DIV Nguồn Toán hạng Nguồn số chia Tùy theo độ dài toán hạng Nguồn ta có hai trương hợp bố trí phép chia: + Nếu Nguồn so bit: AX/Nguồn, thương để vào AL, số dư để vào AH + Nếu Nguồn so 16 bit: AX/Nguồn, thương để vào AX, số dư để vào DX Nếu thương số nguyên làm tron theo số sát Nếu Nguồn thương thu lớn FFH FFFFH(tùy theo đọ dài toán hạng nguồn) thi 8086 thực lệnh ngắt INT Các cờ bị thay đổi : không Ví dụ: MOV AX, 0033H ;chuyen 0033H vao AX MOV BL, 25 ;AL=02 va AH=01H  POP (lấy lại từ vào ghi từ đỉnh ngăn xếp) Dạng lệnh: POP Đích Mô tả: Đích{SP} SPSP+2 Toán hạng đích đích ghi đa năng, ghi đoạn (nhưng không ghi đoạn mã CS) ô nhớ Các cờ bị thay đổi: không Ví dụ: POP DX ;lay byte vao dinh ngan xep dua vao DX  XOR (lệnh logic XOR (hoặc đảo)) Dạng lệnh: XOR Đích, Nguồn Lệnh XOR thực logic XOR (hoặc đảo) giưac hai toán hạng kết lưu vào đích Nếu toán hạng đích trung toán hạng nguồn kết 0, lệnh dùng để xóa ghi kèm theo cờ CF Ò bị xóa Các cờ bị thay đổi: CF, OF, PF, SF, ZF Ví dụ: XOR AX, AX XOR BX, BX MOV AX, 5857H MOV BX, 58A8H XOR AX, BX Bước 5: Trình bày chương trình thực chức chính: Bài làm chính: model small stack 100 Vi Xử Lý – Vi Điều Khiển data tb1 db 'nhap vao chuoi ky tu:$' tb2 db 13,10,'so lan ky tu xuat hien xau la:$' tb3 db 13,10,'ban co muon nhap tiep khong y/n?:$' A db 100 dup(?) n db c db 10 dem db code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h lea si,A xor cx,cx nhap: mov ah,1 int 21h cmp al,13 je thoinhap mov [si],al inc si inc cx jmp nhap Vi Xử Lý – Vi Điều Khiển thoinhap: mov n,cl lai: mov cl,n xor ax,ax mov dem,0 lea si,A sosanh: cmp [si],61h je tangdem jmp lap tangdem: inc dem lap: inc si loop sosanh ; hienthi mov ah,9 lea dx,tb2 int 21h xor ax,ax mov al,dem chia: div c xor bx,bx mov bl,ah push bx Vi Xử Lý – Vi Điều Khiển inc cx cmp al,0 je hienthi xor dx,dx mov dl,al xor ax,ax mov ax,dx jmp chia hienthi: xor dx,dx layra: pop dx add dl,30h mov ah,2 int 21h loop layra mov ah,9 lea dx,tb3 int 21h mov ah,1 int 21h cmp al,79h je lai ; ve dos mov ah,4ch int 21h main endp Vi Xử Lý – Vi Điều Khiển end main Bước 6: Trình bày đoạn mã lệnh ý nghĩa dùng chúng .model small khai báo kiểu chương trình (kiểu small) stack 100 khai báo kích thước ngăn xếp data tb1 db 'nhap vao chuoi ky tu:$' tb2 db 13,10,'so lan ky tu xuat hien xau la:$' tb3 db 13,10,'ban co muon nhap tiep khong y/n?:$' A db 100 dup(?) n db c db 10 Khai báo biến dùng Khai báo Khai báo thông báo thông báo hiển thịthị hiển hình hình 10 Vi Xử Lý – Vi Điều Khiển dem db code main proc Chương trình mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h Hiển thị hình dòng thông báo tb1 đưa kích thước xâu A vào SI, đặt cx=0 lea si,A xor cx,cx nhap: mov ah,1 int 21h cmp al,13 je thoinhap đặt trỏ vào vị trí xâu Ngắt để chuyển sang hình bắt đầu nhập kí tự kiểm tra ký tự vừa nhập vào al kết thúc chưa, (kết thúc nhập việc ấn phím Enter), kết thúc phím Enter sau nhập hiển thị hết kí tự nhảy tới thoinhap mov [si],al inc si inc cx jmp nhap thoinhap: mov n,cl lai: mov cl,n xor ax,ax Nhập ký tự mà nhập từ bàn phím vào SI thông qua al 11 Vi Xử Lý – Vi Điều Khiển mov dem,0 đặt giá trị cho dem = lea si,A sosanh: cmp [si],61h je tangdem Kiểm tra xâu ký tự nhập SI với ký tự “a” =61h Nếu mà có ký tự trùng với a nhảy đến tangdem không nhảy đến lap jmp lap tangdem: inc dem lap: inc si loop sosanh Tăng SI thêm 1( tức đến ký tự tiếp theo) lặp lại đoạn chương trình sosanh ; hienthi mov ah,9 lea dx,tb2 Hiển thị thông báo tb2 int 21h xor ax,ax mov al,dem chia: div c xor bx,bx mov bl,ah push bx inc cx Chuyển số lần đếm ký tự “a” thành ký tự (là từ) cất từ vào ngăn xếp, al mà (tức không nhập từ bàn phím) nhảy tới hienthi 12 Vi Xử Lý – Vi Điều Khiển cmp al,0 je hienthi xor dx,dx mov dl,al xor ax,ax mov ax,dx jmp chia hienthi: xor dx,dx layra: pop dx Chuyển số vừa nhận sang dạng chữ (hay chữ số) add dl,30h mov ah,2 Lấy chức in ký tự hình int 21h loop layra mov ah,9 lea dx,tb3 Hiển thị thông báo tb3 hình đưa trỏ vị trí int 21h mov ah,1 int 21h cmp al,79h So sánh ký tự vừa nhập có phải “y” = 79h không, nhảy lai je lai ; ve dos mov ah,4ch Thoát chương trình Vi Xử Lý – Vi Điều Khiển 13 int 21h main endp end main Tài Liệu tham khảo: Bài giảng Vi Xử Lý – Vi Điều Khiển, Bộ môn Kỹ Thuật Máy Tính, Trường ĐHKTCN Thái Nguyên, năm 2011 Tống Văn On, Họ vi điều khiển 8051, NXB KH&KT, 2005 Mạng Internet, tailieuit.com, diendantdh.forum.com [...]... có phải là “y” = 79h không, nếu đúng thì nhảy về lai je lai ; ve dos mov ah,4ch Thoát chương trình Vi Xử Lý – Vi Điều Khiển 13 int 21h main endp end main 6 Tài Liệu tham khảo: 1 Bài giảng Vi Xử Lý – Vi Điều Khiển, Bộ môn Kỹ Thuật Máy Tính, Trường ĐHKTCN Thái Nguyên, năm 2011 2 Tống Văn On, Họ vi điều khiển 8051, NXB KH&KT, 2005 3 Mạng Internet, tailieuit.com, diendantdh.forum.com ... bx,bx mov bl,ah push bx inc cx Chuyển số lần đếm được ký tự “a” thành ký tự (là một từ) và cất từ đó vào ngăn xếp, nếu al mà bằng 0 (tức là không nhập gì từ bàn phím) thì nhảy tới hienthi 12 Vi Xử Lý – Vi Điều Khiển cmp al,0 je hienthi xor dx,dx mov dl,al xor ax,ax mov ax,dx jmp chia hienthi: xor dx,dx layra: pop dx Chuyển số vừa nhận được sang dạng chữ (hay chữ số) add dl,30h mov ah,2 Lấy chức năng...11 Vi Xử Lý – Vi Điều Khiển mov dem,0 đặt giá trị cho dem = 0 lea si,A sosanh: cmp [si],61h je tangdem Kiểm tra xâu ký tự đã nhập trong SI với ký tự “a” =61h Nếu mà có ký tự trùng với a thì nhảy đến tangdem còn không ... trình Vi Xử Lý – Vi Điều Khiển 13 int 21h main endp end main Tài Liệu tham khảo: Bài giảng Vi Xử Lý – Vi Điều Khiển, Bộ môn Kỹ Thuật Máy Tính, Trường ĐHKTCN Thái Nguyên, năm 2011 Tống Văn On, Họ vi. .. thay đổi: AF, OF, PF, SF, ZF Vi Xử Lý – Vi Điều Khiển Ví dụ: INC AL INC BX  JMP (lệnh nhảy không điều kiện) JMP trao quyền điều khiển cho vùng mục tiêu cách không điều kiện Lệnh phân biệt nhảy... vào vi xử lý, cho vi xử lý chay chế độ lệnh: IF0, TF0 Tao địa Stack, cất địa đaonj địa trở vào Stack: SPSP-2, SPCS Tạo địa Stack, cất địa lệch địa trở vào Stack : SPSP-2, SPIP Vi xử lý lấy

Ngày đăng: 26/04/2016, 19:06

Mục lục

  • VI XỬ LÝ – VI ĐIỀU KHIỂN

  • Bước 4. Các câu lệnh dùng trong bài

  • Bước 5: Trình bày các chương trình con thực hiện các chức năng chính:

    • Bài làm chính:

Tài liệu cùng người dùng

Tài liệu liên quan