Assembly Language Programming, Lecture notes of Assembly Language Programming

this coourse made by powerpoint

Typology: Lecture notes

2020/2021

Uploaded on 12/27/2021

muhammad-ayaz-12
muhammad-ayaz-12 🇵🇰

5

(1)

1 document

1 / 83

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
LẬP TRÌNH HỢP NGỮ
Intel 8086
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53

Partial preview of the text

Download Assembly Language Programming and more Lecture notes Assembly Language Programming in PDF only on Docsity!

LẬP TRÌNH HỢP NGỮ

Intel 8086

Khái niệm

Ngôn ngữ máy (ML - Machine Language)

  • (^) CPU trực tiếp “hiểu” và thực thi được
  • (^) Dạng nhị phân
  • (^) Độ dài lệnh do CPU qui định 

Hợp ngữ (Assembly Language)

  • (^) Giúp lập trình viên dễ viết hơn ngôn ngữ máy
  • (^) Thay thế lệnh dạng nhị phân bằng ký hiệu tượng trưng

Tương đương logic giữa các ngôn ngữ

HLL^ HLL^ ASMASM ASM^ ASM ASM^ ASM ML^ ML ML^ ML ML^ ML

Tại sao phải lập trình hợp ngữ?

Chương trình nhanh, nhỏ gọn

Khai thác trực tiếp thiết bị

Làm việc ở cấp độ thấp

  • (^) Thiết kế máy tính
  • (^) Viết trình dịch (compiler), trình điều khiển thiết bị (driver)
  • (^) Reverse Engineering 

Lập trình hệ thống nhúng (embedded system)

  • (^) Tài nguyên hạn chế
  • (^) Tối ưu phần mềm

Biểu diễn dữ liệu trong bộ nhớ

Byte (8 bit)

  • (^) Giá trị: 0..255 hoặc -128.. 

Word (16 bit)

  • (^) Giá trị: 0..65535 hoặc -32768..
  • (^) Lưu trữ trong bộ nhớ: byte cao lưu địa chỉ cao, byte thấp lưu địa chỉ thấp
  • Ví dụ: (20400) 10
= (4FB0)

16 Địa chỉ Giá trị ô nhớ i B i + 1 4F

Biểu diễn dữ liệu trong bộ nhớ (2)

Ký tự

  • (^) Cách viết: ‘a’, “a”
  • (^) Lưu trong bộ nhớ dạng mã ASCII 8 bit
  • (^) Ví dụ: ‘a’  

Chuỗi

  • (^) Cách viết: ‘abc’, “abc”
  • (^) Lưu trong bộ nhớ dạng dãy ký tự
  • (^) Ví dụ: “abc”  (^) 97 98 99 97

Giới thiệu CPU Intel 8086/

Được Intel sản xuất năm 1978

Sử dụng trong máy IBM-PC năm 1981

Phổ biến, phát triển thành họ kiến trúc x

CPU 8086 16 bit CPU 8086 16 bit Bộ nhớ Bộ nhớ Bus địa chỉ 20 bit Bus dữ liệu 16 bit

Tổ chức bộ nhớ

Địa chỉ 20 bit  Bộ nhớ tối đa 1MB

Tổ chức bộ nhớ thành từng đoạn (segment),

mỗi đoạn 64KB (

16

Lập trình truy xuất ô nhớ theo địa chỉ logic

  • (^) Dạng: segment:offset
  • (^) Segment, offset có kích thước 16 bit, viết dạng hex 

Chuyển từ địa chỉ logic  địa chỉ vật lý (20bit)

  • (^) Segment * 16 + offset

Tổ chức thanh ghi

Có 14 thanh ghi 16 bit

Nhóm thanh ghi đoạn: CS, DS, SS, ES

  • (^) CS (Code Segment): chứa địa chỉ segment của đoạn mã chương trình đang thực hiện
  • (^) DS (Data Segment): chứa địa chỉ segment đoạn dữ liệu chính của chương trình
  • (^) SS (Stack Segment): chứa địa chỉ segment đoạn stack của chương trình đang thực hiện
  • (^) ES (Extra Segment): đoạn dữ liệu bổ sung

Tổ chức thanh ghi (2)

Nhóm thanh ghi đa dụng: AX, BX, CX, DX

  • (^) AX (Accumulator) - Thanh ghi tích lũy: thường lưu kết quả của các lệnh tính toán
  • (^) BX (Base) – Thanh ghi cơ sở: thường đùng định vị địa chỉ offset khi truy xuất bộ nhớ
  • (^) CX (Count) – Thanh ghi đếm: thường dùng xác định số lần lặp trong các lệnh lặp
  • (^) DX (Data) – Thanh ghi dữ liệu: thường dùng lưu dữ liệu trong các lệnh tính toán

Tổ chức thanh ghi (4)

Nhóm thanh ghi con trỏ và chỉ mục: SP, BP, SI, DI

  • (^) SP (Stack Pointer): địa chỉ offset của phần tử trên đỉnh stack
  • (^) BP (Base Pointer): dùng định vị offset khi truy xuất stack
  • (^) SI (Source Index): dùng định vị offset chuỗi nguồn trong các lệnh về chuỗi
  • (^) DI (Destination Index): dùng định vị offset chuỗi đích trong các lệnh về chuỗi

Tổ chức thanh ghi (5)

Thanh ghi con trỏ lệnh: IP (Instruction Pointer)

  • (^) Chứa địa chỉ offset của lệnh sẽ được CPU thực hiện
  • (^) Được tự động thay đổi để trỏ đến lệnh kế tiếp
  • (^) CS:IP  segment:offset của lệnh kế tiếp được CPU thực hiện 

Thanh ghi cờ hiệu (Flag Register)

  • (^) Phản ánh trạng thái thực hiện lệnh của CPU
  • (^) Có 9 cờ (9 bit)

Tổ chức thanh ghi (7)

AH AL AX Nhóm thanh ghi đa dụng BH BL BX CH CL CX DH DL DX CS Nhóm thanh ghi đoạn DS SS ES SP Nhóm thanh ghi con trỏ BP SI Nhóm thanh ghi chỉ mục DI IP Thanh ghi con trỏ lệnh Flag Thanh ghi cờ hiệu

Các kiểu định vị

Định vị

  • (^) Cách thức CPU xác định vị trí lưu trữ giá trị của toán hạng trong câu lệnh 

Các kiểu toán hạng

  • (^) Toán hạng hằng/tức thì
  • (^) Toán hạng thanh ghi
  • (^) Toán hạng bộ nhớ