Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Giáo trình ngôn ngữ lập trình ASSEMBLY
PREMIUM
Số trang
125
Kích thước
24.4 MB
Định dạng
PDF
Lượt xem
1182

Giáo trình ngôn ngữ lập trình ASSEMBLY

Nội dung xem thử

Mô tả chi tiết

s ở GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘ I

NGUYỄN THÀNH TRUNG

GIÁ O TRÌN H

NGÔN NGỮ LẬP TRÌNH

ASSEMBLY

(Dùng trong các trường THCN)

N H À XUẤT BẢN HÀ NỘ I - 2007

N H À XUẤT BẢN H À NÔI

4 - TỐNG DUY TÂN, QUẬN HOÀN KIẾM, HÀ NỘI

ĐT: (04) 8252916, 8286766, - FAX: (04) 9289143

GIÁO TRÌNH

NGÔN NGỮ LẬP TRÌNH ASSEMBLY

NHÀ XUẤT BẢN HÀ NỘI - 2007

Chịu trách nhiệm xuất bản:

NGUYỄN KHẮC OANH

Biên tập:

PHẠM QUỐC TUẤN

NGUYỄN THỊ THU HẰNG

Bìa:

TRẦN QUANG

Kỹ thuật vi tính:

HOÀNG THÚY LUÔNG

Sửa bàn in:

NGUYỄN THỊ THU HẰNG

In 500 cuốn, khổ 17x24cm, tại Nhà in Hà Nội - Công ty Sách Hà Nội. 67 Phó Đức

Chính - Ba Đình - Hà Nội. Quyết định xuất bản: 160-2007/CXB/446GT-27/HN, số

313/CXB ngày 02/3/2007. So in: 294/3. In xong và nộp lưu chiểu quý IU năm 2007.

L ờ i giớ i thiê u

A 7 ước ta đang bước vào thời kỳ công nghiệp hóa, hiện

Ì V đại hóa nhằm đưa Việt Nam trỏ thành nước công

nghiệp văn minh, hiện đại.

Trong sự nghiệp cách mạng to lớn đó, công tác đào tạo

nhân lực luôn giữ vai trò quan trọng. Báo cáo Chính trị của

Ban Chấp hành Trung ương Đãng Cộng sản Việt Nam tại

Đại hội Đáng toàn quốc lần thứ IX đã chỉ rõ: "Phát triển

giáo dục và đào tạo là một trong những động lực quan trọng

thúc đẩy sự nghiệp công nghiệp hóa, hiện đại hóa, là điều

kiện đẽ phát triển nguồn lực con người - yếu tô cơ bản đế

phát triển xã hội, tăng trường kinh tế nhanh và bền vững".

Quán triệt chủ trương, Nghị quyết của Đảng và Nhà nước

và nhận thức đúng đắn vé tầm quan trọng của chương trình,

giáo trình đối với việc nâng cao chất lượng đào tạo, theo đê

nghị của Sỏ Giáo dục và Đào tạo Hà Nội, ngày 23/9/2003,

Úy ban nhân dán thành phố Hà Nội đã ra Quyết định số

5620/QĐ-UB cho phép sỏ Giáo dục và Đào tạo thực hiện đề

án biên soạn chương trình, giáo trình trong các trường Trang

học chuyền nghiệp (THCN) Hà Nội. Quyết định này thể hiện

sự quan tâm sáu sắc của Thành ủy, UBND thành phố trong

việc nâng cao chất lượng đào tạo và phát triển nguồn nhún

lực Thủ đô.

Trên cơ sở chương trình khung của Bộ Giáo dục và Đào

tạo bơn hành và những kinh nghiệm rút ra từ thực tế đào tạo,

Sở Giáo dục và Đào tạo đã chỉ đạo các trường THON tổ chức

biên soạn chương trình, giáo trình một cách khoa học, hệ

3

thống và cập nhật những kiến thức thực tiễn phù hợp với đối

tượng học sinh THCN Hà Nội.

Bộ giáo trình này là lài liệu giáng dạy và học tập trong

các trường THCN ở Hà Nội, đồng thời là tài liệu tham kháo

hữu ích cho các trường có đào tạo các ngành kỹ thuật - nghiệp

vụ và đông đào bạn đọc quan tâm đến vấn đê hướng nghiệp,

dạy nghê.

Việc tổ chức biên soạn bộ chương trinh, giáo trình này

là một trong nhiều hoạt động thiết thực của ngành giáo dục

và đào tạo Thủ đô để kỷ niệm "50 năm giải phóng Thù đô ",

"50 năm thành lập ngành " và hướng tới kỷ niệm "1000 năm

Thăng Long - Hà Nội".

Sở Giáo dục và Đào tạo Hà Nội chân thành cảm ơn Thành

ủy, UBND, các sở, ban, ngành của Thành phố, Vụ Giáo dục

chuyên nghiệp Bộ Giáo dục và Đào tạo, các nhà khoa học, các

chuyên gia đầu ngành, các giáng viên, các nhà quán lý, các

nhà doanh nghiệp đã tạo điêu kiện giúp đỡ, đóng góp ý kiến,

tham gia Hội đồng phản biện, Hội đồng thẩm định và Hội

đổng nghiệm thu các chương trình, giáo trình.

Đây là lần đầu tiên Sở Giáo dục và Đào tạo Hà Nội tố

chức biên soạn chương trình, giáo trình. Dù đã hết sức cố

gắng nhưng chắc chắn không tránh khỏi thiếu sót, bất cập.

Chúng tôi mong nhận được những ý kiến dóng góp của bạn

đọc đế từng bước hoàn thiện bộ giáo trình trong các lần tái

bản sau.

GIÁM ĐỐC SỚ GIÁO DỤC VÀ ĐÀO TẠO

4

L ờ i nó i đ ẩ u

'gòn ngữ Assembly hay còn gụi là Hợp nqữ lù ngôn ngữ lập trình bậc

Ì V thấp các chí thi lệnh là cúc từ tiếng Anh dược viết tắt cho một hành

dộng nào dó. Các lệnh trong Hợp ngữ tương lác trực tiếp với các thanh ghi

hay các ô nhớ nằm trong phán cứng của hệ thống vi xử lý. Vì vậy, dể viết được

Hợp ngữ người lập trình phải có kiến thức vé phẩn cứng máy tính cũng như hệ

vi xử lý.

Ưu điểm cùa Hợp ngữ là cúc chương trình ứng dụng dược viết bằng ngôn

ngữ này thì tốc độ xử lý tãiiíỊ lên thêm mười đến hai mươi phẩn trăm, mà lại

chiếm ít bộ nhớ hơn các chương trình viết bằng ngôn ngữ bậc cao khác, bén

cạnh đó Hợp ngữ thích nghi một cách chính xác với các đặc điểm của từng hệ

thống máy tính và các thiết bị ngoại vi của nó. Tút cả các chức năng phần cứng

của thiết bị đêu có thể thực hiện dược bằng các chương trình viết bung Hợp

nục. Một ưu điểm nữa của nẹôn ngữ Hợp lì ạ ừ là có thê liên kết với ngôn ngữ

bậc cao khác như c, Pascal tạo ra sự tối ưu trong các chương trình sử dụng.

Ngày nay máy tính được sứ dụng ngày càng rộng rãi trong lĩnh vực đo

lường và diêu khiển tự dộng, trong dớ yêu cẩu về tốc độ, bộ nhớ được ấn định

trước bởi thiết bị thì việc sứ dụng Hợp ngữ là rất cẩn thiết.

Mối loại máy lính đêu có dạng Họp ngữ riêng và trình hợp dịch riêng gọi

lờ Assembler. Với máy tính PC- IDM có hai chương trình hợp dịch đó là

Macro Assembler (MASM) của hãng Microsoỷt và Turbo Assember (TASM)

của hãng Borland. Giữa hai chương trình này có sự khác nhau đôi chút, nhưng

về công dụng như nhau và tương thích với nhau. Trong giáo trình này sẽ đề

cập nhiều đến trình dịch hợp ngữ MASM cửa Microsoỷt, còn gọi là trình dịch

Macvo Assembler.

5

Đối tượng giáo trình này là sinh viên chuyên ngành kỹ thuật viên liu học

của các trường Trung học kỹ thuật và dạy nghề. Đế học (lược món này người

đọc Cấn có các kiến thức vé kỹ thuật vi xử lý. kiến trúc máy tính vù cũng dã

học qua ngôn ngữ lập trình Pascal. Nội dung chương trình dược chia làm bấn

chương với các nội dim% sau:

Chương l: Giới thiệu tóm tắt một số phần về bộ vi xử lý 8086, 8088 như

các loại dữ liệu, cấu trúc chung của các bộ vi xử lý 80x8, số lượng và công

dụng của các thanh ghi, khái niệm và tác dụng về ngắt, các kiểu định địa chi

cho các toán họng và khuôn dạng tệp lệnh.

Chương 2: Trình bày vê cú pháp của hợp li gí?, cách khai báo bộ nhớ. các

biến, các hằng và cấu trúc cơ bản của chương trình Assưìììh dơn giàn, các

bước lập trình cần thực hiện, cách sử dụng các cấu trúc cơ bản khi vào viết

Hợp ngữ, Phân biệt ý ưa hơi chương trình EXE và .COM.

Chương 3: Trình bày các phương pháp liên kết giữa ngôn ngữ bậc cao

Pascal với ngôn ngữ Assetnbly.

Chương 4: Các bài toán lập trình với số nguyên, lập trình cho các chuỗi

và thiết bị vào/ra.

Phụ lục: Giới thiệu các ngắt của DOS và BIOS gi úp người học tra cứu, sử

dụng trong các bài toán lập trình.

Tóm lại, giáo trình này nhầm giúp cho sinh viên các kiên thức cơ bàn vé

lập trình Hợp ngữ, đồng thời củng cố thêm các kiến thức đã dược học về phần

cứng máy tính, cũng như kỹ thuật vi xử lý nói chung.

6

Chươn g Ì

Tổ CHỨC CỦA BỘ VI XỬ LÝ 8086

ì. CÁC DẠNG Dữ LIỆU c ơ BẢN CỦA BỘ VI x ử LÝ

1. Dạng số và hệ đếm

Ngày nay chúng la thường dùng 10 chữ số 0, 1,2, 3, 4, 5, 6, 7, 8, 9 đổ biểu

diễn trong các phép tính toán và trao đổi trong công việc. Nó là hệ cơ số mười

hay nói gọn là hệ mười.

Trong máy tính thì khác. Máy tính được cấu tạo và liên kết bởi một hệ

thống các chất bán dẫn và các hệ mạch điện tử. Vì vậy mọi hoạt động của máy

trên hai trạng thái có điện và không có điện của các mạch điện tử. Do vậy để

biếu diễn một giá trị số chúng ta phải dùng hệ cơ số hai (Binary number sys￾tem, viết tắt là hệ B). 0 và Ì cũng là giá trị có thể có của một chữ số hệ hai

(Binary digit, viết tắt là bít). Hệ hai là hệ đếm dùng trong các máy tính.

Một số hệ hai gồm một cụm 8 bít gọi là Byte, cụm 16 bít tạo thành một từ

là (Word), 32 bít tạo thành một từ kép (double vvord). Chữ số đầu tiên bên trái

trong dãy các số hệ hai gọi là bít có ý nghĩa lớn nhất (Most significant bít,

MSB), còn bít cuối cùng trong dãy hệ hai có ý nghĩa bé nhất (Least significant

bít, LSB).

Một số hệ mười viết như sau: 78342,56, sẽ có giá trị bằng tổng cùa các

tích 7, 8, 3, 4, 2, 5, 6 với các trọng số 10' tương ứng như sau:

78342,56 = 7xl04

+ 8x10-*+ 3xl02

+ 4X101

+ 2x10° + 5x10"'+ 6x10-2

Tương tự như vậy, một số hệ hai viết như sau: 10110,01, sẽ có giá trị bằng

tổng của các tích 1,0,1,1,0,0,1 với các trọng số 2' tương ứng như sau:

10110,01 = Ì X 24

+ 0 X 23

+ Ì X 22

+ Ì X 21

+ 0 X 2° + 0 X 2-' + Ì X 2-2

7

Giữa hệ mười và hệ hai còn tồn tại một hệ lai. hệ BCD cho các số hệ mười

mã hoa bằng hệ hai (Binary Coded Decimal number). rất thích hợp cho các

thiết bị đo cho phần hiển thị số ở đầu ra dùng các loại đèn hiện số khác nhau.

ở đây ta dùng 4 số hệ hai để mã hoa một số hệ mười có giá trị năm tron°

khoảng 0...9. Như vậy ờ đây ta không dùng hết các tổ hợp có thế có cùa 4 bít.

Vì tầm quan trọng cùa các sỏ BCD nên các bộ vi xử lý thưừng có các lệnh thao

tác với chúng.

Ví dụ: Số 840 nếu biểu diễn theo kiểu số BCD thì được 1000 0100 0000.

Kết quả này cũng gợi ý cho ta cách thức chuyến đổi giữa 2 loại sô.

Nếu ta dùng hệ hai để biểu diễn các số có giá trị lớn ta sẽ gặp điều bất tiện

là số hệ hai thu được quá dài. Ví dụ để biểu diễn số 255 ta cần đến 8 bít viết

như sau:

255 = li u li u B

Trong thực tế để viết kết quả biêu diễn cùa các số cho gọn lại người ta tìm

các nhóm 4 số hệ hai (Ì nibble) thành một số hệ mười sáu. Khác với hệ BCD

vừa nói, hệ 16 dùng hết các tổ hợp có thể của 4 bít để biểu diễn các giá trị số.

Để làm được điều này người ta sử dụng các chữ số sẵn có của hệ muôi 0...9

để biểu diễn các giá trị số ứng với 0...9 và dùng thêm các chữ cái A...F để biếu

diễn các giá trị còn lại ứng với 10...15. Đế phân biệt một số hệ mười sáu với

các số hệ khác ta kèm thêm chữ H ở cuối. Ta cũng dễ nhận thấy rằng số mười

chỉ là một bộ phận của hệ 16.

Hệ hai Hệ 16 Hệ hai Hệ 16

0000 0 1000 8

0001 1 1001 9

0010 2 1010 A

0011 3 l o n B

0100 4 1100 c

0101 5 noi D

0110 6 mo E

o m 7 n u F

8

2. Chuyền đổi giữa các hệ đêm

Đổi sỏ hệ mười sang hẹ hai

Quy tắc: Lấy số cần đổi chia cho 2 và ghi nhớ phần dư. tiếp theo lá)

thương của phép chia trước đó chia cho 2 và ghi nhớ phần dư. Làm như vậy

cho tới khi được thương bằng 0. Đáo ngược thứ tự dãy các sỏ dư sẽ dược các

chữ số của hệ hai cần tìm.

Trong trường hợp số hệ mười cần đổi có thêm phán lé cho dâu phay thì đầu

tiên ta phải đổi rẽ từng phần rồi sau đó cộng các kết quá lại. Đỏi với phần

nguyên ta có thể làm theo 2 cách đã nói ở liên. Riêng đỏi với phần sau dấu

phay ta đổi theo quy tắc trình bày sau đây.

Lấy số cần đổi nhân với 2. tích nhận được sẽ gồm phần nguyên và phần lé

nhị phân. lấy phần lé nhị phân của tích thu được nhân liếp với 2. Làm như vậy

cho tới khi tích chẩn bằng 1. Chọn riêng các phần nguyên (phần trước dấu

phẩy) của các tích thu được và sắp xếp lại sẽ được các chữ sô sau dấu phẩy

của hệ hai cần tìm.

Ví dụ: Đổi 0,125 ra số hệ hai.

Ta thực hiện phép nhân lần lượt theo các bước trên:

0.125 X 2 0,250

0,250 X 2 0,500

0,500 X 2 1,000

và thu được kết quả là 0,125 = 0,001 B (phần được đóng trong khung).

Kết hợp các ví dụ trên lại, nếu phải đổi số 34,125 ra hệ hai ta thu được kết

quả cuối cùng là 34,125 = 100010,001 B.

Đổi sô hệ hai và hệ sô Hex:

Ví dụ: 2B3Ch đổi ra hệ hai

2 B 3 c

0010 lon 0011 1100

Đổi sô hệ thập phản và hệ sò Hex

Ví dụ: Đổi số 1978 ra hệ Hex

9

Đầu tiên chia 1978 cho 16 nhân được thương số 123 và số dư là 10

1978 = 123 X 16 + 10

số dư chính là hàng đơn vị của số biêu diễn dạng số Hex. 10 = Ah

Cứ liếp tục chia cho đến khi thương số bằng 0. Chuyển đổi các số dư

Hcx và ghép chúng lại với nhau theo thứ tự ngược lại.

1978 = 123 X 16 + 10(Ah) 1978 = 7BAh

123= 7xl6+ll(Bh )

7 = 0 X 16 + 7(7h)

3. Các phép tính vối số nhị phân và hệ Hexa

Sô nhị phân:

- Phép cộng:

0 + 0 = 0

0 +1 = 1

1+0= 1

1 + 1=0 dư Ì

Ví dụ:

no

+ 011

no phần dư

1001

- Phép trừ:

0-0 = 0

0-1 = 1 nợ Ì

1-0=1

1-1=0

Ví dụ:

no

-011

li phần nợ

011

10

Sô Hexa:

Bảng cộng số Hex

0 ỉ 2 3 4 5 6 7 8 9 A B c D li F

0 0 1 2 3 4 5 6 7 8 9 Ả B c D F. F

1 1 2 3 4 5 6 7 8 9 A B c D E F 10

2 2 3 4 5 6 7 8 9 A B c D E F lo n

3 3 4 5 6 7 8 9 A B c D E F 10 l i 12

4 4 5 6 7 8 9 A B c D E F 10 11 12 13

5 5 6 7 8 9 A B c D E F 10 l i 12 13 14

6 6 7 8 9 A B c D E F 10 l i 12 13 14 15

7 7 8 9 A B c D E F 10 l i 12 13 14 15 16

8 8 9 A B c D E F 10 l i 12 13 14 15 16 17

9 9 A B c D E F 10 l i 12 13 14 15 16 17 18

A A B c D E F 10 11 12 13 14 15 16 17 18 19

B B c D E F 10 l i 12 13 14 15 16 17 18 19 1A

c c D E F 10 l i 12 13 14 15 16 17 18 19 1A1B

D D E F 10 l i 12 13 14 15 16 17 18 19 1A1B 1C

E E F 10 l i 12 13 14 15 16 17 18 19 1A1B 1C1D

F F 10 l i 12 13 14 15 16 17 18 19 1A1B 1C1D1E

Ví dụ: 5B39h

+ 7AF4h

D62Dh

Sử dụng bảng cộng ta có thê tra ra các phép trừ

Ví dụ: D26F

BA94

17DB

4. Dạng ký tự

Được lưu nữ theo dạng mã ASCII (American Standard Codc information

Intcrchangc) Mã chuẩn, mồi ký tự chiếm một byte. Máy tính không biết sì vé

ký lự ASCII mà chi xem chúng như là một byte bất kỳ. với một ngoại lệ.

Trong báng mã ASCII tiêu chuẩn người la dùng 7 bít để mã hoa các ký tự

thỏníi dụng. như vậy bảng mã này sẽ có 128 ký tự ứng với mã số từ 0-127. Khi

tra các bàng này ta đọc mã của ký tự theo thứ lự cột-hàng.

Bàng mã ASCII (American Standcưd Code inỊonnaiion Interchange -

Mã tiên chuẩn /rao dổi thỏm; liu)

Hexa￾deđmal

0 1 2 ì 4 5 6 7

0 <ML>

0

<DLE>

16

<SP>

32

0

48

@

64

p

80 96

p

112

ì <SOH>

1

<DC1>

17

t

33

1

49

A

65

Q

81

a

97

q

113

2 <srx>

2

<DC2>

18 34

2

50

b

66

R

82

b

98

r

114

3 <ETX>

3

<DC3>

19

#

35

3

51

c

67

s

83

c

99

s

115

4 <EOT>

4

<DC4>

20

$

36

4

52

D

68

T

84

d

100

t

116

5 <ENQ>

5

<NAK>

21

%

37

5

53

E

69

u

85

e

loi

u

117

6 <ACK>

6

<SYN>

22

&

38

6

54

F

70

V

86

f

102

V

118

7 <bel>

7

<etb>

23

í

39

7

55

G

71

w

87

g

103

w

119

8 <bs>

8

<CAN>

24

(

40

8

56

H

72

X

88

h

104

X

120

12

Tải ngay đi em, còn do dự, trời tối mất!