1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiến trúc máy tính PHẦN II HỢP NGỮ - Chương 1 pps

49 403 0

Đ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

Thông tin cơ bản

Tiêu đề Tổng Quan Về Hợp Ngữ
Chuyên ngành Hợp Ngữ
Thể loại Tài liệu học tập
Định dạng
Số trang 49
Dung lượng 222,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đặt tên• Tên hằng, tên biến, tên nhãn… do người lậptrình đặt ra • Bắt đầu của tên không là số • Tên không được trùng với từ khóa • Tên tối đa 31 ký tự... - Người lập trình tự đặt - Từ gợ

Trang 1

PHẦN II

HỢP NGỮ

Trang 2

Chương 5 TỔNG QUAN VỀ HỢP NGỮ

Trang 4

MOV AH, 2 ADD DL,30 PUSH AX

Trang 5

Hợp ngữ

• Ngôn ngữ lập trình cấp thấp, dùng dạng gợinhớ của tập lệnh

mnemonic [operand1 [,operand2]

Trang 8

Từ khóa

• Tên dành riêng của hợp ngữ

– Tên các thanh ghi

– Tên gợi nhớ

– Tên toán tử

– …

Trang 9

Đặt tên

• Tên hằng, tên biến, tên nhãn… do người lậptrình đặt ra

• Bắt đầu của tên không là số

• Tên không được trùng với từ khóa

• Tên tối đa 31 ký tự

Trang 10

Cú pháp của một lệnh hợp

ngữ

[label:] mnemonic [operand1 [,operand2]] [; comment]

- Nhãn thay thế địa chỉ câu lệnh.

- Người lập trình tự đặt

- Từ gợi nhớ xác định hành động của câu lệnh

- Tra trong tập lệnh

- Các toán hạng, ngăn cách bởi dấu ,

- Chú thích

Trang 11

• Chỉ dẫn biên dịch (assembler directive)

– >không có lệnh nhị phân tương ứng

– >Tuân theo cú pháp của assembler

Trang 12

Tổ chức bộ nhớ

• Địa chỉ ô nhớ

• Các đơn vị

Trang 13

Tổ chức thanh ghi

• CPU16bit và CPU 32bit

Trang 14

Thanh ghi của CPU 8086

• Gồm 14 thanh ghi, mỗi thanh ghi 16 bit

• Chia làm 5 nhóm:

– Nhóm thanh ghi đoạn

– Nhóm thanh ghi đa dụng

– Nhóm thanh ghi con trỏ và chỉ mục

– Thanh ghi con trỏ lệnh

– Thanh ghi cờ hiệu

Trang 15

Nhóm 1: các thanh ghi đoạn

• Segment registers

• Chứa địa chỉ đoạn (segment)

• 4 thanh ghi:

– CS (Code segment register)

– DS (Data segment register)

– ES (Extra data segment register)

– SS (Stack segment register)

Trang 16

Quản lý bộ nhớ với thanh ghi

đoạn

Trang 17

Nhóm 2: các thanh ghi đa

dụng

• General purpose registers

• Chứa các toán hạng, dữ liệu

• Gồm 4 thanh ghi 16 bit

– AX (Accumulator Register)

– BX (Base Register)

– CX (Count Register)

– DX (Data Register)

Trang 18

Nhóm thanh ghi đa dụng (t.t)

• Mỗi thanh ghi đa dụng 16bit có thể được sửdụng như 1 cặp thanh ghi 8bit

Thanh ghi 16bit 8bit cao 8 bit thấp

Trang 19

Nhóm 3: Các thanh ghi con trỏ và chỉ

mục

• Gồm 4 thanh ghi

– SI (Source Indexed register)

– DI (Destination Indexed register)

– SP (Stack Pointer register)

– BP (Base Pointer register)

Trang 20

Nhóm 4: Thanh ghi con trỏ chương trình

• IP (Instruction Pointer register)

• Lệnh kế tiếp sẽ thực hiện ở địa chỉ:

CS:IP

Trang 21

Nhóm 5: Thanh ghi cờ hiệu

IF: Interupt Enable Flag

Trang 22

Tổ chức ngắt

• Ngắt cứng: (hard interupt)

àcác ngắt này có thể chắn được bởi lệnh CLI

• Ngắt không chắn được NMI

– độ ưu tiên cao nhất

– báo sự nguy hiểm như sụt áp hay hư hỏng bộ nhớ

Trang 23

Tổ chức ngắt (t.t)

• Ngắt nội bộ (internal interupt)

– phát sinh bởi CPU

– “divide by zero”, “overflow”, “trap”

• Ngắt mềm (soft interupt)

– gọi 1 chương trình con có sẳn trong ROM hay RAM

Trang 24

Bảng vector ngắt

• bảng chiều dài 1KB nằm trong bộ nhớ bắt đầu

từ 0000:0000 đến 0000:03FF

• gồm 256 phần tử, mỗi phần tử chiếm 4 byte

chứa giá trị segment và offset của chương trình

xử lý ngắt

00h ÷ 1Fh : ngắt trong ROM

20h ÷ 2Fh: ngắt mềm của DOS

30h ÷ FFh: ngắt mềm do người dùng định nghĩa

Trang 25

Sử dụng ngắt mềm 21h cho các thao

tác xuất nhập

• Sử dụng các lệnh IN / OUT cho các thao tác

xuất nhập các thiết bị ngoại vi ?

– đòi hỏi người lập trình phải am hiểu phần cứng

– tùy theo các loại máy tính mà số hiệu cổng của các thiết bị ngoại vi có thể khác

• Các nhà sản xuất máy tính đã cung cấp sẳn cácchương trình phục vụ vào ra cơ bản

– người lập trình sẽ gọi thông qua lời gọi ngắt:

INT số_hiệu_ngắt

Trang 26

Một số hàm xuất/nhập đơn giản

qua ngắt 21h

• INT 21h/AH=1: Nhập 1 ký tự từ bàn phím

• INT 21h/AH=2: Xuất 1 ký tự ra màn hình

• INT 21h/AH=8: Nhập 1 ký tự từ bàn phímkhông hiển thị ký tự này lên màn hình

• INT 21h/AH=9: Xuất 1 chuỗi ký tự ra mànhình

• INT 21h/AH=0Ah: Nhập 1 chuỗi ký tự từ bànphím

è tham khảo tài liệu “The x86 interupts’ list”

Trang 27

Gọi ngắt 21h

• Gán AH là số hiệu hàm muốn gọi

Ví dụ: MOV AH,9 ; gọi hàm xuất chuỗi

• Gán các tham số khác nếu cần thiết

Ví dụ: MOV DX, offset chuoikitu

• Gọi ngắt 21h

INT 21h

Trang 29

• Trị trả về: AL = mã ASCII của ký tự vừanhập

Trang 30

INT 21h/AH=0Ah

• Nhập một chuỗi ký tự từ bàn phím với chiềudài tối đa 255, dùng phím BACKSPACE đểsửa ký tự, ENTER để kết thúc việc nhập

• Gọi với:

AH=0AhDS:DX = địa chỉ của vùng đệm lưu chuỗiINT 21h

• Trị trả về: không có

Trang 31

INT 21h/AH=0Ah (t.t)

• Vùng đệm lưu chuỗi phải có dạng sau:

– Byte đầu tiên: kích thước của vùng đệm, thể hiện

số byte tối đa cần đọc

• cần phải gán trước khi gọi hàm

– Byte thứ hai: số byte thực sự đọc

• được trả về sau khi gọi hàm

– Các byte tiếp theo: lưu các ký tự đã nhập vào

• được gán sau khi gọi hàm

10 ? 10 bytes vùng đệm chứa chuỗi nhập

10 5 h e l l o

Trang 32

INT 21h/AH=2

• Hiển thị ký tự có mã ASCII chứa trong DL ramàn hình

• Gọi với: AH=2

DL = Mã ASCII của ký tự muốn xuấtINT 21h

• Trị trả về: không có

Trang 33

INT 21h/AH=9

• Xuất một chuỗi ký tự ra màn hình Chuỗi phảikết thúc bằng ký tự ‘$’

• Gọi với: AH=9

DS:DX = Địa chỉ của chuỗi cần xuấtINT 21h

• Trị trả về: không có

Trang 35

Các dạng hằng (t.t)

• Thập phân:

– Gồm một dãy các chữ số từ 0 đến 9, có thể thêm các ký tự + , - để biểu thị dấu

– có thể kết thúc bằng ký tự D hoặc không cần

– Ví dụ:

9871d hay 9871

Trang 36

Các dạng hằng (t.t)

• Thập lục phân(hệ 16 hay hex):

– Gồm một dãy các chữ số từ 0 đến 9 và các ký tự từ A-F (a-f), kết thúc bằng ký tự H

– Nếu ký tự bắt đầu không phải là số thì phải thêm 0 vào đầu.

– Ví dụ:

45h số hex 8bit 5AF8H số hex 16 bit 0A28FH bắt đầu bằng A nên phải thêm 0 vào đầu

Trang 38

Dữ liệu cho chương trình

Trang 39

Khai báo biến

<tên biến> dw <giá trị khởi đầu>

• Biến từ gấp đôi (double word)

<tên biến> dd <giá trị khởi đầu>

Trang 40

Khai báo biến (t.t)

Trang 41

b_array là tên gán cho byte đầu tiênb_array+1 là tên của byte thứ hai

b_array+2 là tên của byte thứ ba

Trang 43

Mảng (t.t)

• Ví dụ mảng W_ARRAY 4 phần tử

W_ARRAY DW 1000,40,29887,329

• • Giả sử mảng bắt đầu tại 0300h:

SYMBOL ADDRESS CONTENTSW_ARRAY 300h 1000d

W_ARRAY+2 302h 40d

W_ARRAY+4 304h 29887d

W_ARRAY+6 306h 329d

Trang 44

Gọi ngắt 20h để kết thúc chương trình COM

Trang 45

Chuỗi kết thúc

bởi $

Trang 46

Chương trình 16bit dạng EXE

small/

medium/ compact/ large/

h để kết thúc chương trình EXE

Trang 47

Các kiểu kích thước bộ nhớ cho

chương trình hợp ngữ

Trang 48

Ví dụ: HelloE.ASM.model small

end batdau

Trỏ thanh ghi DS vào đoạn data

Ngày đăng: 12/08/2014, 10:20

HÌNH ẢNH LIÊN QUAN

Bảng vector ngắt - Kiến trúc máy tính PHẦN II HỢP NGỮ - Chương 1 pps
Bảng vector ngắt (Trang 24)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm