Chương trình hợp ngữ 8086 đơn giản với giải thích

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Lập trình cấp hợp ngữ là rất quan trọng đối với cấp thấp hệ thống nhúng thiết kế được sử dụng để truy cập các lệnh của bộ xử lý để thao tác phần cứng. Nó là một ngôn ngữ cấp độ máy nguyên thủy nhất được sử dụng để tạo mã hiệu quả tiêu thụ ít số chu kỳ xung nhịp hơn và chiếm ít bộ nhớ hơn so với ngôn ngữ lập trình cấp cao . Nó là một ngôn ngữ lập trình hướng phần cứng hoàn chỉnh để viết một chương trình, lập trình viên phải biết về phần cứng nhúng. Ở đây, chúng tôi đang cung cấp những kiến ​​thức cơ bản về lập trình cấp hợp ngữ 8086.

Lập trình mức hợp ngữ 8086

Lập trình mức hợp ngữ 8086



Lập trình mức hợp ngữ 8086

Các hợp ngữ lập trình là một ngôn ngữ cấp thấp được phát triển bằng cách sử dụng kỹ năng ghi nhớ. Bộ vi điều khiển hoặc bộ vi xử lý chỉ có thể hiểu ngôn ngữ nhị phân như 0’s hoặc 1’s, do đó trình hợp dịch chuyển đổi ngôn ngữ hợp ngữ sang ngôn ngữ nhị phân và lưu trữ nó trong bộ nhớ để thực hiện các tác vụ. Trước khi viết chương trình, các nhà thiết kế nhúng phải có đủ kiến ​​thức về phần cứng cụ thể của bộ điều khiển hoặc bộ xử lý, vì vậy trước tiên chúng ta cần biết phần cứng của bộ xử lý 8086.


Phần cứng của Bộ xử lý

Phần cứng của Bộ xử lý



Kiến trúc bộ xử lý 8086

8086 là bộ xử lý được đại diện cho tất cả các thiết bị ngoại vi như bus nối tiếp, RAM và ROM, thiết bị I / O, v.v. tất cả đều được kết nối bên ngoài với CPU bằng cách sử dụng bus hệ thống. Bộ vi xử lý 8086 có Kiến trúc dựa trên CISC và nó có các thiết bị ngoại vi như 32 I / O, Truyền thông nối tiếp , ký ức và bộ đếm / bộ hẹn giờ . Bộ vi xử lý yêu cầu một chương trình để thực hiện các hoạt động yêu cầu bộ nhớ để đọc và lưu các chức năng.

Kiến trúc bộ xử lý 8086

Kiến trúc bộ xử lý 8086

Lập trình mức hợp ngữ 8086 dựa trên các thanh ghi bộ nhớ. Sổ đăng ký là phần chính của bộ vi xử lý và bộ điều khiển được đặt trong bộ nhớ cung cấp cách thu thập và lưu trữ dữ liệu nhanh hơn. Nếu chúng ta muốn thao tác dữ liệu với bộ xử lý hoặc bộ điều khiển bằng cách thực hiện phép nhân, phép cộng, v.v., chúng ta không thể thực hiện điều đó trực tiếp trong bộ nhớ nơi cần các thanh ghi để xử lý và lưu trữ dữ liệu. Bộ vi xử lý 8086 chứa nhiều loại thanh ghi khác nhau có thể được phân loại theo hướng dẫn của chúng, chẳng hạn như

Sổ đăng ký mục đích chung : CPU 8086 bao gồm 8 thanh ghi đa năng và mỗi thanh ghi có tên riêng như trong hình như AX, BX, CX, DX, SI, DI, BP, SP. Tất cả đều là thanh ghi 16-bit, trong đó bốn thanh ghi được chia thành hai phần như AX, BX, CX và DX được sử dụng chủ yếu để giữ số.

Thanh ghi mục đích đặc biệt : CPU 8086 bao gồm 2 thanh ghi chức năng đặc biệt như thanh ghi IP và thanh ghi cờ. Thanh ghi IP trỏ đến lệnh đang thực thi hiện tại và luôn hoạt động để tập hợp với thanh ghi phân đoạn CS. Chức năng chính của thanh ghi cờ là sửa đổi các hoạt động của CPU sau khi các chức năng cơ học được hoàn thành và chúng ta không thể truy cập trực tiếp
Thanh ghi phân đoạn: CPU 8086 bao gồm 4 thanh ghi phân đoạn như CS, DS, ES, SS được sử dụng chủ yếu để có thể lưu trữ bất kỳ dữ liệu nào trong thanh ghi phân đoạn và chúng ta có thể truy cập một khối bộ nhớ bằng cách sử dụng thanh ghi phân đoạn.


Chương trình hợp ngữ đơn giản 8086

Lập trình hợp ngữ 8086 có một số quy tắc như

  • Mức độ lắp ráp lập trình 8086 mã phải được viết bằng chữ hoa
  • Các nhãn phải được theo sau bởi dấu hai chấm, ví dụ: label:
  • Tất cả các nhãn và ký hiệu phải bắt đầu bằng một chữ cái
  • Tất cả các bình luận đều được nhập bằng chữ thường
  • Dòng cuối cùng của chương trình phải được kết thúc bằng lệnh END

Bộ xử lý 8086 có hai lệnh khác để truy cập dữ liệu, chẳng hạn như WORD PTR - cho từ (hai byte), BYTE PTR - cho byte.

Op-Code và Toán hạng

Op-Code và Toán hạng

Mã op: Một lệnh đơn được gọi là mã op có thể được thực thi bởi CPU. Ở đây, lệnh ‘MOV’ được gọi là mã op.

Toán hạng: Một phần dữ liệu đơn lẻ được gọi là toán hạng có thể được vận hành bởi mã op. Ví dụ, phép toán trừ được thực hiện bởi các toán hạng bị trừ bởi toán hạng.
Cú pháp: SUB b, c

8086 chương trình hợp ngữ bộ vi xử lý

Viết chương trình để đọc ký tự từ bàn phím

MOV ah, 1h // chương trình con nhập liệu bằng bàn phím
INT 21h // đầu vào ký tự
// ký tự được lưu trữ trong al
MOV c, al // sao chép ký tự từ alto c

Viết chương trình để đọc và hiển thị một ký tự

MOV ah, 1h // chương trình con nhập liệu bằng bàn phím
INT 21h // đọc ký tự thành al
MOV dl, al // sao chép ký tự sang dl
MOV ah, 2h // chương trình con xuất ký tự
INT 21h // hiển thị ký tự trong dl

Viết chương trình sử dụng thanh ghi mục đích chung

ORG 100 giờ
MOV AL, VAR1 // kiểm tra giá trị của VAR1 bằng cách di chuyển nó đến AL.
LEA BX, VAR1 // lấy địa chỉ của VAR1 trong BX.
MOV BYTE PTR [BX], 44h // sửa đổi nội dung của VAR1.
MOV AL, VAR1 // kiểm tra giá trị của VAR1 bằng cách di chuyển nó đến AL.
ĐÚNG
VAR1 DB 22h
KẾT THÚC

Viết chương trình để hiển thị chuỗi bằng các hàm của thư viện

include emu8086.inc // Khai báo macro
ORG 100 giờ
IN 'Hello World!'
GOTOXY 10, 5
PUTC 65 // 65 - là mã ASCII cho ‘A’
PUTC ‘B’
RET // quay lại hệ điều hành.
END // chỉ thị để dừng trình biên dịch.

Hướng dẫn số học và logic

Các quy trình 8086 của đơn vị logic và số học đã tách thành ba nhóm như phép toán cộng, phép chia và phép cộng. Phần lớn Hướng dẫn số học và logic ảnh hưởng đến thanh ghi trạng thái bộ xử lý.

Các thuật ngữ lập trình hợp ngữ 8086 ở dạng mã op, chẳng hạn như MOV, MUL, JMP, v.v., được sử dụng để thực hiện các hoạt động. Lập trình hợp ngữ 8086 ví dụ

Thêm vào
ORG0000 giờ
MOV DX, # 07H // di chuyển giá trị 7 vào thanh ghi AX //
MOV AX, # 09H // di chuyển giá trị 9 sang bộ tích lũy AX //
Thêm AX, 00H // thêm giá trị CX với giá trị R0 và lưu trữ kết quả trong AX //
KẾT THÚC
Phép nhân
ORG0000 giờ
MOV DX, # 04H // di chuyển giá trị 4 vào thanh ghi DX //
MOV AX, # 08H // di chuyển giá trị 8 sang bộ tích lũy AX //
MUL AX, 06H // Kết quả được nhân được lưu trữ trong Bộ tích lũy AX //
KẾT THÚC
Phép trừ
ORG 0000h
MOV DX, # 02H // di chuyển giá trị 2 sang thanh ghi DX //
MOV AX, # 08H // di chuyển giá trị 8 sang bộ tích lũy AX //
SUBB AX, 09H // Giá trị kết quả được lưu trong Bộ tích lũy A X //
KẾT THÚC
Sư đoàn
ORG 0000h
MOV DX, # 08H // di chuyển giá trị 3 để đăng ký DX //
MOV AX, # 19H // di chuyển giá trị 5 đến bộ tích lũy AX //
DIV AX, 08H // giá trị cuối cùng được lưu trữ trong Accumulator AX //
KẾT THÚC

Do đó, đây là tất cả các chương trình ví dụ đơn giản về Lập trình cấp độ lắp ráp 8086, Kiến trúc bộ xử lý 8086 cho bộ xử lý 8086, Hướng dẫn số học và logic. Ngoài ra, mọi thắc mắc liên quan đến bài viết này hoặc các dự án điện tử, bạn có thể liên hệ với chúng tôi bằng cách bình luận trong phần bình luận bên dưới.