Kiến trúc máy tính và hợp ngữ
Kiến Trúc Máy Tính 2. Kiểu Định Vị và Cờ 3. Lệnh Nhảy và Lặp 4. Thủ Tục 5. Lệnh Luận Lý và Dịch 6. Lệnh Nhân Chia 7. Lệnh Xử Lý Chuỗi
Bạn đang xem trước 20 trang tài liệu Kiến trúc máy tính và hợp ngữ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KiẾN TRÚC MÁY TÍNH
&
HỢP NGỮ
Nguyễn Minh Tuấn
2NMT - HN - V6.8 - Ch1 - Ns79 - 010806
KTMT & HỢP NGỮ
1. Kiến Trúc Máy Tính
2. Kiểu Định Vị và Cờ
3. Lệnh Nhảy và Lặp
4. Thủ Tục
5. Lệnh Luận Lý và Dịch
6. Lệnh Nhân Chia
7. Lệnh Xử Lý Chuỗi
3NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1. KiẾN TRÚC MÁY TÍNH
1. Kiến Trúc PC
2. CPU
3. Qui Trình Thực Hiện Lệnh
4. Tổ Chức Bộ Nhớ
5. Tổ Chức Thanh Ghi
6. Máy Ngữ và Hợp Ngữ
7. Cách Viết Trình Hợp Ngữ
8. Một Số Lệnh Đơn Giản
9. Chạy Trình Hợp Ngữ
4NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Nhìn từ bên ngoài, PC gồm ba khối: máy
chính, màn hình và bàn phím
Máy chínhMàn hình
Bàn phím
5NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Dạng laptop
Màn hình Bàn phím
Máy chính
6NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Màn hình: thiết bị xuất thể hiện kết quả
dạng hình ảnh.
Bàn phím: thiết bị nhập dùng đưa dữ liệu
vào máy.
Máy chính: chứa các mạch điện tử chính
yếu của máy tính và các thiết bị ngoại vi
khác.
7NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Mạch điện tử quan trọng nhất trong máy
chính là bảng mạch chính.
Trên đó có CPU, bộ nhớ và các mạch
khác dưới dạng chip.
Các chip nối với nhau qua đường truyền
gọi là Bus.
8NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Bảng mạch chính
9NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
CPU
10NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Bộ nhớ
11NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Ngoài các thiết bị ngoại vi như màn hình
và bàn phím, hệ thống còn có:
Chuột
Các ổ đĩa cứng, mềm
Các ổ đĩa quang
Hệ thống xử lý âm thanh (mạch điều khiển và
loa)
Máy in
Các thiết bị khác
12NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Cách kết nối hệ thống
13NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.1. Kiến Trúc PC
Cách kết nối hệ thống PC họ Intel
14NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.2. CPU
Tổ chức CPU Intel 8086
Đơn vị
thực
hiện
(EU)
Đơn vị
giao tiếp
Bus
(BIU)
15NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.2. CPU
Đơn vị thực hiện:
thực hiện các lệnh
trong chương trình
ALU: thực hiện các
phép tính số học và
luận lý
Thanh ghi AX, …
chứa dữ liệu
Cờ: thanh ghi trạng
thái
Đơn vị
thực
hiện
(EU)
16NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.2. CPU
Đơn vị giao tiếp Bus:
cầu nối giữa EU và
thiết bị nhập xuất
Gởi địa chỉ, dữ liệu và
tín hiệu điều khiển
vào các Bus.
Các thanh ghi chứa
địa chỉ.
IP: địa chỉ lệnh kế
Đơn vị
giao tiếp
Bus
(BIU)
17NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.3. Qui Trình Thực Hiện Lệnh
Lệnh: dãy bit từ 1 đến 6 bai (8086).
Mỗi CPU bao hàm một tập lệnh cố định
Lệnh chuyển trị 2 vào thanh ghi AH
1011 0100 0000 0010 (lệnh 2 bai)
Lệnh cộng thêm vào thanh ghi DL trị 48
1000 0000 1100 0010 0011 0000 (lệnh 3
bai)
18NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.3. Thực Hiện Lệnh
Qui trình thực hiện lệnh: Nhận lệnh và
Thực hiện lệnh
Nhận lệnh
Nhận lệnh từ bộ nhớ
Giải mã lệnh (xác định thao tác thực hiện)
Nhận dữ liệu từ bộ nhớ (nếu có)
Thực hiện lệnh
Thực hiện thao tác trên dữ liệu
Lưu kết quả vào bộ nhớ (nếu có)
19NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.3. Thực Hiện Lệnh
Thời gian thực hiện lệnh tính theo số xung
đồng hồ.
Xung đồng hồ là tín hiệu được tạo ra từ
mạch đồng hồ.
Mạch đồng hồ tạo ra các xung đồng hồ
theo một nhịp đều đặn.
20NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.3. Thực Hiện Lệnh
Khoảng thời gian xung đồng hồ lặp lại gọi
là chu kỳ.
Số chu kỳ trong một giây gọi là tần số.
Tần số được tính bằng Hertz (Hz).
Bội số của Hz là MHz, GHz,…
Hai tần số quan trọng trong hệ thống là
tần số của CPU và bảng mạch chính.
21NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.4. Tổ Chức Bộ Nhớ
Đơn vị nhớ: Byte
CPU
Số bit
địa chỉ
Dung lượng nhớ
8086/88, 80186/88 20 1 MB
80286, 80386SX 24 16 MB
80386DX..Pentium 32 4 GB
Pentium Pro..P4 36 64 GB
Itanium 44 16 TB
22NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.4. Tổ Chức Bộ Nhớ
Chế độ hoạt động
Thực (mặc nhiên): bộ nhớ tối đa 1MB
Bảo vệ: bộ nhớ tối đa 16 MB / 4 GB / 64 GB
CPU 8086 / 8088 chỉ hoạt động ở chế độ
thực.
CPU 80286 trở lên có thể hoạt động ở cả
hai chế độ.
23NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.4. Tổ Chức Bộ Nhớ
Tổ chức bộ nhớ ở
chế độ thực
FFFFF
00020
00010
00000
Địa
chỉ
tuyệt
đối
24NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.4. Tổ Chức Bộ Nhớ
FFFFF
00020
00010
00000
64KB
64KB
64KB
00000
00010
00020
0000
FFFF
Địa
chỉ ô
Địa chỉ đoạn
0000, 0001,
0002, …
đc đoạn : đc ô = địa chỉ tương đối
25NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.5. Tổ Chức Thanh Ghi
Gồm 4 nhóm:
Thanh ghi đoạn: CS, DS, ES, SS
Thanh ghi đa dụng: AX, BX, CX, DX
Thanh ghi con trỏ và chỉ số: BP, SP, SI, DI
Thanh ghi cờ và con trỏ lệnh IP
26NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.5. Tổ Chức Thanh Ghi
CS: địa chỉ
đoạn mã
DS, ES, FS,
GS: địa chỉ
đoạn dữ liệu
SS: địa chỉ
đoạn ngăn
xếp
15 0
CS
DS
ES
FS
GS
SS
MÃ
DỮ LIỆU
NGĂN XẾP
Chương trình
27NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.5. Tổ Chức Thanh Ghi
AX: Tích lũy
BX: Cơ sở
CX: Đếm
DX: Dữ liệu
31 16 15 8 7 0
EAX AH AL
AX
EBX BH BL
BX
ECX CH CL
CX
EDX DH DL
DX
28NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.5. Tổ Chức Thanh Ghi
SI: Chỉ số
nguồn
DI: Chỉ số
đích
SP: Con
trỏ ngăn
xếp
BP: Con
trỏ cơ sở
31 16 15 0
ESI SI
EDI DI
ESP SP
EBP BP
A B 1 2
3 4 C D
Ngăn xếp
12AB
234F
4F30
29NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.5. Tổ Chức Thanh Ghi
Con trỏ lệnh IP lưu địa chỉ (ô) lệnh sẽ
được thực hiện kế tiếp.
Thanh ghi cờ ghi nhận trạng thái và kết
quả hoạt động của hệ thống
30NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.6. Máy Ngữ và Hợp Ngữ
Lệnh Dạng Máy Ngữ Dạng Hợp Ngữ
1 B402 MOV AH, 02h
2 80C230 ADD DL, 30h
3 50 PUSH AX
Trình nguồn
(hợp ngữ)
Trình đích
(máy ngữ)
Trình
hợp dịch
(Assembly language) (Assembler) (Machine language)
31NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Chương trình hợp ngữ đơn giản
.MODEL SMALL ; Kiểu chương trình
.STACK ; Khai báo ngăn xếp
.DATA ; Phần khai báo dữ liệu
...
.CODE ; Phần lệnh
...
END ; Lệnh cuối cùng
32NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Lệnh
Chỉ thị: lệnh thi hành
Chỉ dẫn: hướng dẫn
trình dịch
Dạng lệnh tổng quát
ADD AX, BX
.MODEL SMALL
Tên TácTử TácTố ;GhiChú
DoAdd: ADD AX, DX ;AX = AX + DX
33NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Tên
A…Z, a...z, 0...9, ?, ., @, _, $, %
. phải là ký tự đầu tiên (nếu có)
không bắt đầu số 0…9
định nghĩa một lần và khác nhau (không phân
biệt A…Z, a…z)
Nhãn: vị trí trong chương trình (có dấu : theo
sau), tên thủ tục, địa chỉ vùng nhớ
Ký hiệu: tên hằng (số, chuỗi)
34NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Tên
DoAdd: ADD AX, DX
HelloMess DB “Xin chao!”
ThuTuc PROC
CR EQU 13
Mess EQU “Co tiep tuc khong?”
35NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Tác tử
DoAdd: ADD AX, DX
HelloMess DB “Xin chao!”
36NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Tác tố
DoAdd: ADD AX, DX
HelloMess DB “Xin chao!”
Array DW 10, 20, 30, 40, 50
INC Word1
37NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Ghi chú
DoAdd: ADD AX, DX ;AX = AX + DX
; ===================
; Nhap ky tu
; ===================
MOV AH, 1
INT 21h
38NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số nguyên thập phân
Byte
¾Có dấu: -128 … 127
¾Không dấu: 0 … 255
Word
¾Có dấu: -32768 … 32767
¾Không dấu: 0 … 65535
39NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số nguyên nhị phân không dấu
Byte: 00000000 – 11111111 (0-255)
Word: 000…000 – 111…111 (0-65535)
Đổi số nhị phân sang thập phân
00101011 = 0x27 + 0x26 + 1x25 + 0x24 +
1x23 + 0x22 + 1x21 + 0x20
= 32 + 8 + 2 + 1
= 43
40NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số nguyên nhị phân có dấu
Biểu diễn theo dạng bù-2
Số bù-2 = số bù-1 + 1
Bù-1 (0011 0110) = 1100 1001
Bù-2 (0011 0110) = 1100 1010
41NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số dương
0100100
Bit dấu
là 0
Phần còn lại là
số không dấu
= +36
42NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số âm = bù-2 (số dương)
0100100
Bit dấu
là 1
= +36
1011100 = -36
43NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Một số giá trị nhị phân đặc biệt
Byte
¾ 0111 1111b = +127d
¾ 1000 0000b = -128d
¾ 1111 1111b = -1d
Word
¾ 0111 1111 1111 1111b = +32767d
¾ 1000 0000 0000 0000b = -32768d
¾ 1111 1111 1111 1111b = -1d
44NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Số nguyên thập lục
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111
1A4Fh = 0001101001001111b
= 6735d
8000h = -32768d
7FFFh = +32767d
FFFFh = -1d
45NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Ký tự / chuỗi ký tự
‘A’ “A” ‘Hello!’ “Hi!”
”Don’t forget me!”
‘”Forget me not!”’
’Don’’t forget me!’
46NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Khai báo vùng nhớ dữ liệu
Tên DB Trị1, Trị2,… ; Kiểu Byte
Tên DW Trị1, Trị2,… ; Kiểu Word
47NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
B1 DB 5
+0 +1 +2 +3 +4 +5 +6 +7 +8
B1 05
48NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
B2 DB ?
+0 +1 +2 +3 +4 +5 +6 +7 +8
B2
49NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
BA1 DB 10, 11, 12
+0 +1 +2 +3 +4 +5 +6 +7 +8
BA1 0A 0B 0C
50NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
W1 DW 10 ; 10 = 000Ah
+0 +1 +2 +3 +4 +5 +6 +7 +8
W1 0A 00
51NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
W2 DW 10, 20 ; 000Ah
; 0014h
+0 +1 +2 +3 +4 +5 +6 +7 +8
W2 0A 00 14 00
52NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
S1 DB “ABC”
+0 +1 +2 +3 +4 +5 +6 +7 +8
S1 41 42 43
53NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
S2 DB 13, 10, ‘Hello!’, 10, ‘$’
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9
S2 0D 0A 48 65 6C 6C 6F 21 0A 24
13 10 H e l l o ! 10 $
54NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
BA2 DB 6 DUP (0)
+0 +1 +2 +3 +4 +5 +6 +7 +8
BA2 00 00 00 00 00 00
55NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.7. Cách Viết Trình H.Ngữ
Định nghĩa hằng số / chuỗi
Tên EQU Hằng
Ví dụ
CR EQU 0Dh
LF EQU 0Ah
MESS EQU ‘Du lieu nhap sai!’
S1 DB CR, LF, MESS, ‘$’
56NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Sao chép dữ liệu từ Nguồn sang Đích
MOV Đích, Nguồn
Đích, nguồn: vùng nhớ / thanh ghi cùng cỡ
Nguồn có thể là hằng
Không đưa hằng vào thanh ghi đoạn
Đích, Nguồn không là vùng nhớ cùng lúc
57NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
MOV AX, BX ; AX ← BX
MOV DX, W1 ; DX ← W1
MOV AH, ‘A’ ; AH ← 41h
MOV CX, ‘A’ ; CX ← 0041h
MOV BX, 12 ; BX ← 000Ch
MOV DX, OFFSET Mess ; DX ← đc ô
; (Mess)
MOV AX, SEG Mess ; AX ←
; đc đoạn
; (Mess)
58NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Tráo đổi dữ liệu Nguồn với Đích
XCHG Đích, Nguồn
Đích, nguồn: vùng nhớ / thanh ghi cùng cỡ
Đích, Nguồn không là vùng nhớ cùng lúc
59NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
XCHG AX, BX ; AX ↔ BX
XCHG DX, W1 ; DX ↔W1
XCHG AL, BL ; AL ↔ BL
60NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Cộng thêm vào Đích một trị Nguồn
ADD Đích, Nguồn
Đích, nguồn: vùng nhớ / thanh ghi cùng cỡ
Nguồn có thể là hằng
Đích, Nguồn không là vùng nhớ cùng lúc
Đích, Nguồn có thể là số nguyên có hoặc
không dấu
61NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
ADD AX, BX ; AX ← AX + BX
ADD DX, W1 ; DX ← DX + W1
ADD DL, 2 ; DL ← DL + 2
MOV AL, 127
ADD AL, 1 ; AL = 128 (không dấu )
; AL = -128 (có dấu)
62NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Trừ bớt Đích một trị Nguồn
SUB Đích, Nguồn
Đích, nguồn: vùng nhớ / thanh ghi cùng cỡ
Nguồn có thể là hằng
Đích, Nguồn không là vùng nhớ cùng lúc
Đích, Nguồn có thể là số nguyên có hoặc
không dấu
63NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
SUB AX, BX ; AX ← AX - BX
SUB DX, W1 ; DX ← DX – W1
SUB DL, 2 ; DL ← DL - 2
64NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Tăng Đích lên 1
INC Đích
Đích: vùng nhớ / thanh ghi
Đích là số nguyên không dấu
65NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
INC AX ; AX ← AX + 1
INC W1 ; W1← W1 + 1
INC DL ; DL ← DL + 1
66NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Giảm Đích bớt 1
DEC Đích
Đích: vùng nhớ / thanh ghi
Đích là số nguyên không dấu
67NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
DEC AX ; AX ← AX - 1
DEC W1 ; W1← W1 - 1
DEC DL ; DL ← DL - 1
68NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Đổi dấu tác tố Đích
NEG Đích
Đích: vùng nhớ / thanh ghi
Nếu Đích là số âm nhỏ nhất (-128 hoặc
−32768) thì trị không đổi khi thực hiện lệnh
69NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
NEG AX ; AX ← -AX
NEG W1 ; W1 ← -W1
NEG DL ; DL ← -DL
MOV BL, -128 ; BL = -128
NEG BL ; BL = -128
MOV CX, -32768 ; CX = -32768
NEG CX ; CX = -32768
70NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Nhập ký tự từ bàn phím và đưa vào AL
MOV AH, 1
INT 21h
41A
AL
MOV AH, 1
INT 21h
71NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Hiển thị ký tự trong DL
MOV AH, 2
MOV DL, KyTu
INT 21h
3F
DL
MOV AH, 2
MOV DL, ‘?’
INT 21h
?
72NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Hiển thị chuỗi ký tự
MOV AH, 9
; DS:DX Ö Chuoi
MOV BX, SEG Chuoi
MOV DS, BX
MOV DX, OFFSET Chuoi
; Xuat Chuoi
INT 21h
73NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Ví dụ
.DATA
S DB “Hello!$”
.CODE
MOV AH, 9
MOV BX, SEG S
MOV DS, BX
MOV DX, OFFSET S
INT 21h
74NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
S H E L L O ! $
DS:DX
MOV AH, 9
MOV BX, SEG S
MOV DS, BX
MOV DX, OFFSET S
INT 21h
HELLO!
S DB ‘HELLO!$’
75NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.8. Một Số Lệnh Đơn Giản
Kết thúc
MOV AH, 4Ch
INT 21h
Xóa màn hình
MOV AX, 3
INT 10h
76NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.9. Chạy Trình Hợp Ngữ
Qui trình
1. Soạn chương trình (nguồn)
2. Dịch chương trình (nguồn)
3. Liên kết chương trình (đối tượng)
4. Chạy chương trình (đích)
77NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.9. Chạy Trình Hợp Ngữ
Trình nguồn
mov ax, 2…
Trình soạn thảo
NotePad…
Trình nguồn
CT.ASM
Trình hợp dịch
C > TASM CT
Trình liên kết
C > TLINK CT
Trình đích
C > CT
Tập đối tượng
CT.OBJ
Trình đích
CT.EXE
Kết quả
???
78NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.9. Chạy Trình Hợp Ngữ
Chương trình
HELLO1.ASM
hiển thị câu chào
“Xin cha`o!”
Xin cha`o!
HELLO1.ASM
79NMT - HN - V6.8 - Ch1 - Ns79 - 010806
1.9. Chạy Trình Hợp Ngữ
Chương trình
HELLO2.ASM
hiển thị ba câu
chào
Cha`o Anh!
Cha`o Chi.!
Cha`o Em!
HELLO2.ASM
Cha`o Anh!
Cha`o Chi.!
Cha`o Em!