Networks Business Online Việt Nam & International VH2

HƯỚNG DẪN THỰC HÀNH MÔ PHỎNG VI XỬ LÝ DÙNG EMU 8086 ppt – Tài liệu text

Đăng ngày 09 November, 2022 bởi admin

HƯỚNG DẪN THỰC HÀNH MÔ PHỎNG VI XỬ LÝ DÙNG EMU 8086 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (385.86 KB, 12 trang )

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
1

MỤC ĐÍCH:
– Giúp sinh viên khảo sát các vần đề sau
– Sử dụng phần mềm Emu8086 để mô phỏng hoạt động của vi xử lý 8086.
THIẾT BỊ SỬ DỤNG
– Máy vi tính.

Phần mềm EMU8086
.
1. GIỚI THIỆU
Phần mềm EMU8086 là phần mềm cho phép mô phỏng hoạt động của vi xử lý 8086
bao gồm các câu lệnh cơ bản của 8086, xử lý ngắt mềm, giao tiếp với các thiết bị ngoại vi…
Khởi động chương trình:

Hình 1.1 Khởi động chương trình Emu8086
PHẦN MỀM MÔ PHỎNG 8086
MICROPROCESSOR EMULATOR 8086
(EMU8086)

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
2

Hình 1.2 Cửa sổ chương trình sau khi khởi động

Hình 1.3 Thanh công cụ chuẩn
Các thao tác trên thanh công cụ chuẩn cũng có thể được thực hiện thông qua menu
File và menu Emulator.
Tạo và thực hiện chương trình.
Nhấn
[
[[
[New
NewNew
New]
]]
]
trên thanh công cụ sẽ xuất hiện cửa sổ chọn loại file.

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
3

Hình 1.4 Cửa sổ chọn loại file
Chương trình của chúng ta thường có dạng .COM hoặc .EXE do đó ta thường chọn
file dạng .COM hoặc .EXE
Nhấn phím
[
[[
[

OK

OKOK
OK

]
]]
] cửa sổ soạn thảo của chương trình sẽ xuất hiện
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
4

Hình 1.5 cửa sổ soạn thảo chương trình
Sau khi soạn thảo xong chương trình hợp ngữ, ấn vào nút Emulate để biên dịch và
mô phỏng chương trình.
Sau khi biên dịch nếu có lỗi cửa sổ thông báo lỗi sẽ xuất hiện.

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
5

Hình 1.6 Cửa sổ thông báo lỗi
Nhấn [
[[
[

close
closeclose

close

]
]]
] để quay về cửa sổ soạn thảo để sửa lại lỗi.
Trong trường hợp không có lỗi EMU8086 sẽ mở thêm 2 cửa sổ: Cửa sổ chương trình
và cửa sổ mô phỏng.
Chương trình gốc:

Hình 1.7 Cửa sổ chương trình gốc

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
6

Hình 1.8 Cửa sổ mô phỏng
Chương trình mô phỏng có 2 chế độ là chạy từng lệnh và chạy tất cả các lệnh.
Nếu muốn chạy từng lệnh nhấn phím
[
[[
[

Single step
Single stepSingle step
Single step

]
]]

] hoặc ấn phím nóng F8
F8F8
F8
Nếu muốn chạy từng lệnh nhấn phím
[ Run ]
[ Run ][ Run ]
[ Run ]

hoặc ấn phím nóng Shift + F8
Shift + F8Shift + F8
Shift + F8
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
7

Ch ế độ chạy
tất cả lệnh

Chế độ chạy
từng lệnh

Hình 1.9 Hướng dẫn chạy lệnh
Tùy thuộc vào yêu cầu của chương trình chúng ta có thể xem nội dung của stack,
flags…

2. MỘT SỐ CHƯƠNG TRÌNH
a. Một số hàm thường dùng đơn giản.
Hàm 1

Vào một phím
Vào AH = 1
Ra: AL = mã ASCII nếu một phím ký tự được ấn
= 0 Nếu một phím điều khiển hay chức năng được ấn.

Hàm 2

Hiển thị một ký tự hay thi hành một chức năng điều khiển
Vào: AH = 2
DL = mã ASCII của ký tự hiển thị hay điều khiển.
Ra: AL = mã ASCII của ký tự hiển thị hay điều khiển.
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
8

Hàm 9

Hiển thị một chuỗi
Vào: AH = 9
DX = Địa chỉ offset của chuỗi cần hiển thị, chuỗi phải kết thúc bằng ký tự $
Ra: Không

Hàm 4CH

Thoát khỏi chương trình
Vào: AH = 4CH
Ra: Không

b. Một số ví dụ
Ví dụ 1:
Viết chương trình hiển thị “welcome to assembly language…” lên màn hình.
Bài làm
.model small
.stack 100h
.data
Mess DB ‘welcome to assembly language… $’
CRLF DB 10,13,’$’
.Code
Main Proc
; khởi đầu đoạn DS
Mov AX,@Data
Mov DS,AX
Mov ES,AX ; Nếu cần
; Hàm hiển thị chuỗi ký tự lên màn hình
Mov AH,9
Lea DX,Mess
Int 21h
; Thoát khỏi chương trình
Mov AH,4CH
Int 21h
Main Endp
End Main

Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
9

Ví dụ 2:
Nhập vào 2 số có tổng nhỏ hơn 10, tính tổng và hiển thị lên màn hình.
Bài làm

.model small
.stack 100h
.data
Mess1 DB ‘Nhap vao so thu nhat… $’
Mess2 DB ‘Nhap vao so thu hai… $’
Mess3 DB ‘Tong hai so vua nhap la… $’
CRLF DB 10,13,’$’
.Code
Main Proc
; khởi đầu đoạn DS
Mov AX,@Data
Mov DS,AX
Mov ES,AX ; Nếu cần
; Hàm hiển thị chuỗi ký tự lên màn hình
Mov AH,9
Lea DX,Mess1
Int 21h
; Hàm nhập vào số thứ nhất
Mov AH,1
Int 21h ; Mã ASCII nằm trong AL
Mov BL,AL ; lưu AL vào BL
; Hàm xuống dòng, hiện thông báo nhập số thứ hai
Mov AH,9
Lea DX,CRLF
Int 21h

; Hiển thị dòng thông báo thứ 2
Lea DX,Mess2
Int 21h
; Hàm nhập vào số thứ hai
Mov AH,1
Int 21h ; Mã ASCII nằm trong AL
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
10

ADD BL,AL ; BL = BL + AL (Tính tổng)
SUB BL,30H ; Trừ tổng để lấy mã ASCII
; Hàm xuống dòng,
Mov AH,9
Lea DX,CRLF
Int 21h
; Hàm xuống dòng, hiện thông báo nhập số thứ hai
Mov AH,9
Lea DX,Mess3
Int 21h
; Hàm hiển thị một ký tự
Mov AH,2
Mov DL,BL
Int 21h
; Thoát khỏi chương trình
Mov AH,4CH
Int 21h
Main Endp
End Main

Ví dụ 3:
Giả thiết thanh ghi AX có dạng sau:

Thực hiện chương trình chuyển AX thành dạng sau

Ví dụ trước chương trình AX = 1234h.
Sau chương trình AX= 4321h.
Bài làm

.model small
.stack 100h
.data
.Code
Main Proc
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
11

; khởi đầu đoạn DS
Mov AX,@Data
Mov DS,AX
Mov ES,AX ; Nếu cần

Mov CL,8
Rol AX,CL ; đổi nội dung 2 thanh ghi AH và AL
; Xchg AH,AL
Mov Cl,4
Rol AH,cl

Rol AL,cl

; Thoát khỏi chương trình
Mov AH,4CH
Int 21h
Main Endp
End Main

Ví dụ 4:
Nhập vào một số n < 10 bất kỳ. Tính N! kết quả được lưu trong BX
Bài làm:

.model small
.stack 100h
.data
Mess1 DB ‘Nhap vao so muon tinh… $’
CRLF DB 10,13,’$’
.Code
Main Proc
; khởi đầu đoạn DS
Mov AX,@Data
Mov DS,AX
Mov ES,AX ; Nếu cần
; Hàm hiển thị chuỗi ký tự lên màn hình
Mov AH,9
Tài liêu thực hành Vi xử lý

Nguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội
12

Lea DX,Mess1
Int 21h
; Hàm nhập vào số thứ nhất
Mov AH,1
Int 21h ; Mã ASCII nằm trong AL

Mov BL,AL ; lưu AL vào BL
And BL,0Fh ; Chuyển BL sang dạng số
; SUB BL,30H
Mov AX,1
Xor CX,CX
Mov CL,BL ; chuyển số vào CX để thực hiện tính giai thừa
Nhan:
Mul CX
Loop Nhan ; DXAX chua N!
Mov BX,AX
; Thoát khỏi chương trình
Mov AH,4CH
Int 21h
Main Endp
End Main

Hình 1.3 Thanh công cụ chuẩnCác thao tác trên thanh công cụ chuẩn cũng hoàn toàn có thể được thực thi trải qua menuFile và menu Emulator. Tạo và triển khai chương trình. Nhấn [ [ [ NewNewNewNew ] ] ] trên thanh công cụ sẽ Open hành lang cửa số chọn loại file. Tài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiHình 1.4 Cửa sổ chọn loại fileChương trình của tất cả chúng ta thường có dạng. COM hoặc. EXE do đó ta thường chọnfile dạng. COM hoặc. EXENhấn phím [ [ OKOKOKOK ] ] ] hành lang cửa số soạn thảo của chương trình sẽ xuất hiệnTài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiHình 1.5 hành lang cửa số soạn thảo chương trìnhSau khi soạn thảo xong chương trình hợp ngữ, ấn vào nút Emulate để biên dịch vàmô phỏng chương trình. Sau khi biên dịch nếu có lỗi hành lang cửa số thông tin lỗi sẽ Open. Tài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiHình 1.6 Cửa sổ thông tin lỗiNhấn [ [ [ closeclosecloseclose ] ] ] để quay về hành lang cửa số soạn thảo để sửa lại lỗi. Trong trường hợp không có lỗi EMU8086 sẽ mở thêm 2 hành lang cửa số : Cửa sổ chương trìnhvà hành lang cửa số mô phỏng. Chương trình gốc : Hình 1.7 Cửa sổ chương trình gốcTài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiHình 1.8 Cửa sổ mô phỏngChương trình mô phỏng có 2 chính sách là chạy từng lệnh và chạy toàn bộ những lệnh. Nếu muốn chạy từng lệnh nhấn phím [ [ Single stepSingle stepSingle stepSingle step ] ] ] hoặc ấn phím nóng F8F8F8F8Nếu muốn chạy từng lệnh nhấn phím [ Run ] [ Run ] [ Run ] [ Run ] hoặc ấn phím nóng Shift + F8Shift + F8Shift + F8Shift + F8Tài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiCh ế độ chạytất cả lệnhChế độ chạytừng lệnhHình 1.9 Hướng dẫn chạy lệnhTùy thuộc vào nhu yếu của chương trình tất cả chúng ta hoàn toàn có thể xem nội dung của stack, flags … 2. MỘT SỐ CHƯƠNG TRÌNHa. Một số hàm thường dùng đơn thuần. Hàm 1V ào một phímVào AH = 1R a : AL = mã ASCII nếu một phím ký tự được ấn = 0 Nếu một phím tinh chỉnh và điều khiển hay công dụng được ấn. Hàm 2H iển thị một ký tự hay thi hành một tính năng điều khiểnVào : AH = 2DL = mã ASCII của ký tự hiển thị hay điều khiển và tinh chỉnh. Ra : AL = mã ASCII của ký tự hiển thị hay tinh chỉnh và điều khiển. Tài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiHàm 9H iển thị một chuỗiVào : AH = 9DX = Địa chỉ offset của chuỗi cần hiển thị, chuỗi phải kết thúc bằng ký tự USD Ra : KhôngHàm 4CHT hoát khỏi chương trìnhVào : AH = 4CHR a : Khôngb. Một số ví dụVí dụ 1 : Viết chương trình hiển thị “ welcome to assembly language … ” lên màn hình hiển thị. Bài làm. model small.stack 100 h. dataMess DB ‘ welcome to assembly language … $ ’ CRLF DB 10,13, ’ $ ’. CodeMain Proc ; khởi đầu đoạn DSMov AX, @ DataMov DS, AXMov ES, AX ; Nếu cần ; Hàm hiển thị chuỗi ký tự lên màn hìnhMov AH, 9L ea DX, MessInt 21 h ; Thoát khỏi chương trìnhMov AH, 4CHI nt 21 hMain EndpEnd MainTài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà NộiVí dụ 2 : Nhập vào 2 số có tổng nhỏ hơn 10, tính tổng và hiển thị lên màn hình hiển thị. Bài làm. model small.stack 100 h. dataMess1 DB ‘ Nhap vao so thu nhat … $ ’ Mess2 DB ‘ Nhap vao so thu hai … $ ’ Mess3 DB ‘ Tong hai so vua nhap la … $ ’ CRLF DB 10,13, ’ $ ’. CodeMain Proc ; khởi đầu đoạn DSMov AX, @ DataMov DS, AXMov ES, AX ; Nếu cần ; Hàm hiển thị chuỗi ký tự lên màn hìnhMov AH, 9L ea DX, Mess1Int 21 h ; Hàm nhập vào số thứ nhấtMov AH, 1I nt 21 h ; Mã ASCII nằm trong ALMov BL, AL ; lưu AL vào BL ; Hàm xuống dòng, hiện thông tin nhập số thứ haiMov AH, 9L ea DX, CRLFInt 21 h ; Hiển thị dòng thông tin thứ 2L ea DX, Mess2Int 21 h ; Hàm nhập vào số thứ haiMov AH, 1I nt 21 h ; Mã ASCII nằm trong ALTài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội10ADD BL, AL ; BL = BL + AL ( Tính tổng ) SUB BL, 30H ; Trừ tổng để lấy mã ASCII ; Hàm xuống dòng, Mov AH, 9L ea DX, CRLFInt 21 h ; Hàm xuống dòng, hiện thông tin nhập số thứ haiMov AH, 9L ea DX, Mess3Int 21 h ; Hàm hiển thị một ký tựMov AH, 2M ov DL, BLInt 21 h ; Thoát khỏi chương trìnhMov AH, 4CHI nt 21 hMain EndpEnd MainVí dụ 3 : Giả thiết thanh ghi AX có dạng sau : Thực hiện chương trình chuyển AX thành dạng sauVí dụ trước chương trình AX = 1234 h. Sau chương trình AX = 4321 h. Bài làm. model small.stack 100h.data. CodeMain ProcTài liêu thực hành Vi xử lýNguyễn Anh Dũng – Khoa Điện Tử Đại Học Công Nghiệp Hà Nội11 ; khởi đầu đoạn DSMov AX, @ DataMov DS, AXMov ES, AX ; Nếu cầnMov CL, 8R ol AX, CL ; đổi nội dung 2 thanh ghi AH và AL ; Xchg AH, ALMov Cl, 4R ol AH, clRol AL, cl ; Thoát khỏi chương trìnhMov AH, 4CHI nt 21 hMain EndpEnd MainVí dụ 4 : Nhập vào một số ít n < 10 bất kể. Tính N ! hiệu quả được lưu trong BXBài làm :. model small.stack 100 h. dataMess1 DB ‘ Nhap vao so muon tinh … $ ’ CRLF DB 10,13, ’ $ ’. CodeMain Proc ; khởi đầu đoạn DSMov AX, @ DataMov DS, AXMov ES, AX ; Nếu cần ; Hàm hiển thị chuỗi ký tự lên màn hìnhMov AH, 9T ài liêu thực hành Vi xử lýNguyễn Anh Dũng - Khoa Điện Tử Đại Học Công Nghiệp Hà Nội12Lea DX, Mess1Int 21 h ; Hàm nhập vào số thứ nhấtMov AH, 1I nt 21 h ; Mã ASCII nằm trong ALMov BL, AL ; lưu AL vào BLAnd BL, 0F h ; Chuyển BL sang dạng số ; SUB BL, 30HM ov AX, 1X or CX, CXMov CL, BL ; chuyển số vào CX để thực thi tính giai thừaNhan : Mul CXLoop Nhan ; DXAX chua N ! Mov BX, AX ; Thoát khỏi chương trìnhMov AH, 4CHI nt 21 hMain EndpEnd Main

Source: https://vh2.com.vn
Category : Tin Học