Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
320,28 KB
Nội dung
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S97
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
CHƯƠNG 6
Hợp ngữ
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S98
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
Nguồn 1
Chương trình
nguồn (.ASM)
MASM.EXE
Mã đối tượng (.OBJ)
Liệt kê (.LST)
Tham khảo chéo (.CRF)
LINK.EXE
Mã thực thi (.EXE)
Mã thực thi (.COM)
Bản đồ (.MAP)
/Tiny
Nguồn 2 Nguồn 3
Đối tượng 1 Đối tượng 2 Đối tượng 3
Chương trình
dịch hợp ngữ
Chương trình
liên kết
Chương trình
thực thi .COM
Chương trình
thực thi .EXE
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S99
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
Trị mặc nhiên :
. Chương trình nguồn
Source
.ASM
. Tâp tin đối tượng
Source
.OBJ
. Bản liệt kê chương trình NUL.LS
T
. Tập tin tham khảo chéo NUL.CRF
MASM [options] source,[object],[listing],[crossref][;]
LINK [options] objects,[exec],[map],[libraries][;]
Trị mặc nhiên :
. Tập tin đối tượng objects.OBJ
. Chương trình thực thi object1.COM
hoặc object1.EXE
. Bản đồ sử dụng bộ nhớ NUL.MAP
. Tập tin thư viện name.LIB
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S100
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
Chương trình nguồn :
* Là tập tin văn bản (.ASM):
Filename
.ASM
* Dạng lệnh : [<
nhãn
>] <
mã lệnh
> <
thông số
>
;
<
chú thích
>
* Các ký tự dùng để đặt tên cho nhãn :
a
-
z
A
- Z
0
-
9
?
@
_
$
.
và bắt đầu bằng một
ký tự khác số
.
* Số hệ 2
:
×
××
××
××
××
××
××
××
××
××
××
××
××
××
××
××
×
B
(10110101B)
* Số hệ 8
:
×
××
××
××
××
××
×
Q
hoặc
×
××
××
××
××
××
×
O
(123Q, 705O)
* Số hệ 10
:
mặc định
hoặc
×
××
××
××
××
××
××
××
××
××
×
D
(32767, 4509D)
* Số hệ 16
:
×
××
××
××
××
××
××
××
×
H
và bắt đầu bằng
số
. (1A97H, 0E05BH)
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S101
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
Biến
Hằng
Nhãn
- Do người sử dụng đặt.
- Không phân biệt chữ lớn
chữ nhỏ.
- Chiều dài tùy ý nhưng chi
có 31 ký tự đầu có nghĩa.
Tên
NEAR
FAR
BYTE
WORD
DWORD
QWORD
TBYTE
ABS
Thay địa chỉ bộ nhớ
Để chứa dữ liệu.
<tên>:
<tên> LABEL <thuộc tính nhãn>
<tên> PROC [<thuộc tính>]
. . .
<tên> ENDP
EXTRN <tên>:<thuộc tính nhãn>[, . . .]
<tên> Dx <biểu thức> [, . . .]
<tên> <tên cấu trúc> <biểu thức>
<tên> <tên máu tin> <biểu thức>
<tên> LABEL <thuộc tính biến>
EXTRN <tên>:<thuộc tính biến>[, . . .]
<
tên> EQU <biểu thức>
<tên> = <biểu thức>
EXTRN <tên>:ABS [, . . .]
Thay địa chỉ bộ nhớ
Để đánh dấu vị trí.
Thay cho giá trị.
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S102
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
Biểu thức
tên
hằng
(trị)
nhãn
(địa chỉ)
biến
(địa chỉ)
trị tức thời
số
ký tự
Toán hạng
Toán tử
Thay đổi thuộc tính
:
PTR, :, SHORT, THIS, HIGH, LOW
Trả trị
:
SEG, OFFSET, TYPE, LENGTH, SIZE
Mẫu tin
:
số dịch, MASK, WIDTH
Số học
:
+ -
∗
∗∗
∗
/ MOD SHR SHL
Quan hệ
:
EQ, NE, LT, LE, GT, GE
Luận lý
:
NOT, AND, OR, XOR
Các toán tử
có độ ưu tiên.
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S103
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
DOSSEG
.
model
small
.
stack
<Số byte>
.
data
<Các khai báo biến và hằng>
.
code
main
proc
<Thân chương trình chính>
<Kết thúc, trở về DOS>
main
endp
<Các khai báo chương trình con>
end
title
<Tên chương trình>
code
segment para public '
code
'
assume
cs:code,ds:code,ss:code
<Các chương trình con>
main
proc
<Thân chương trình chính>
<Kết thúc, trở về DOS>
main
endp
<Các chương trình con>
code
ends
data
segment para public '
data
'
<Các khai báo biến và hằng>
data
ends
stack
segment stack '
stack
'
<Khai báo vùng đệm>
stack
ends
end
main
Dạng chương trình
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S104
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
<tên>
SEGMENT
[<align>] [<combine>] [
'
<class>
'
]
<thân segment>
<tên>
ENDS
<combine>
<align>
<align> Địa chỉ bắt đầu
BYTE
XXXX
xxxx
(1 byte)
WORD
XXXX
xxx0
(2 byte)
DWORD
XXXX
xx00
(4 byte)
PARA
XXXX
0000
(16 byte)
PAGE
XXX0
0000
(256 byte)
X
4 bit
x
1 bit
0 1 2 3 4 5 6 7 8 9 A B C D E F
Bộ nhớ
BYTE
WORD
DWORD
PARA & PAGE
A
B
B
A
0
COMMON
0
0
PUBLIC
A
B
AB
0
0
0
Không có
0
0
0
0
A
B
A
B
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S105
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
ASSUME
<thanh ghi đoạn>
:
<tên>[, ]
<tên>
PROC
[
NEAR
/
FAR
]
<thân chương trình>
<tên>
ENDP
Kết thúc chương trình
mov AX,4C00h
int 21h
hoặc
int 20h
chính
ret
con
iret
con phục vụ ngắt quãng
1.Tên chương trình.
Tiêu đề
2.Chương trình làm gì ?
3.Các thông số vào - ra.
4.Các thanh ghi bị đổi nội dung.
assume CS:code,DS:code,SS:code
Giả định cho .COM
assume CS:code,DS:data,SS:stack
. . .
mov AX,data
mov DS,AX
Giả định cho .EXE
Tổ chức cấutrúcmáytính C6 Hợp ngữ / S106
Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM
Biên soạn : Nguyễn Xuân Minh
EXTRN <
tên
>:<
thuộc tính
>[, . . .]
1. Các mô đun phụ trong một chương
trình có nhiều mô đun.
2. Tạo thư viện.
3. Tạo dữ liệu.
END
[<biểu thức
>
]
Các trường hợp không có địa chỉ bắt đầu
<
tên biến
> Dx <
biểu thức
>[,<
biểu thức
>. . .]
<
tên hằng
> EQU <
biểu thức hằng
>
<
tên hằng
> = <
biểu thức hằng
>
<
tên
> LABEL <
thuộc tính
>
Xem lại mục "tên"
[...]... chương trình có nhiều mô đun 2 Tạo thư viện 3 Tạo dữ liệu EQU = Dx [, .] Xem lại mục "tên" LABEL EXTRN Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM : [, ] Biên soạn : Nguyễn Xuân Minh C6 Hợp ngữ / S107 Tổ chức cấu trúcmáytính dgroup GROUP ASSUME MOV MOV PUBLIC [,... [, .] data1,data2,data3 EXTRN : [, .] DS:dgroup AX,dgroup DS,AX ORG INCLUDE [] COMMENT @ Khoa Công nghệ thông tin Đại học Bách khoa tp.HCM Biên soạn : Nguyễn Xuân Minh C6 Hợp ngữ / S108 Tổ chức cấu trúcmáytính MACRO ENDM [, ] . thức hằng
>
<
tên
> LABEL <
thuộc tính
>
Xem lại mục "tên"
Tổ chức cấu trúc máy tính C6 Hợp ngữ / S107
Khoa Công nghệ. tp.HCM
Biên soạn : Nguyễn Xuân Minh
CHƯƠNG 6
Hợp ngữ
Tổ chức cấu trúc máy tính C6 Hợp ngữ / S98
Khoa Công nghệ thông tin Đại học Bách khoa