Professional Documents
Culture Documents
KỸ THUẬT VI XỬ LÝ
Giáo viên giảng dạy : Chu Thị Ngọc Quỳnh
Bộ môn : Điện tử máy tính
Khoa : Điện tử - Viễn thông
Điện thoại DĐ : 0988831450
Email : ctnquynh@gmail.com
NỘI DUNG MÔN HỌC
TỔNG QUAN VỀ BỘ VI XỬ LÝ VÀ HỆ VI XỬ LÝ
BỘ VI XỬ LÝ INTEL 8086
1.1. BỘ VI XỬ LÝ
Khái niệm về quá trình phát triển
Phân loại bộ vi xử lý
1.2. HỆ VI XỬ LÝ
Cấu trúc phần cứng
Phần mềm
Bộ vi xử lý (MP-Microprocessor) là
một vi mạch logic chế tạo theo công
nghệ LSI cho đến VLSI, hoạt động
dưới sự điều khiển của chương trình
đặt trong bộ nhớ. Bộ vi xử lý là hạt
nhân của hệ vi xử lý, kiểm soát toàn
bộ các thành phần có trong hệ thống,
thực hiện các phép toán số học, logic,
đưa ra các quyết định và thông tin với
thế giới bên ngoài qua các cổng
vào/ra dưới sự điều khiển của chương
trình cài đặt trong bộ nhớ.
Bộ vi xử lý đầu tiên của Intel là
4004, được giới thiệu vào năm
1971. Bộ vi xử lý này xử lý dữ
liệu 4 bit và có 45 lệnh.
4004 chứa 2300 transistor.
Bộ vi xử lý Pentium 4 chứa 55
triệu transistor.
Bộ vi xử lý mới nhất hiện nay là
core i9 dùng cho các máy tính
để bàn PC
QUÁ TRÌNH PHÁT TRIỂN
• Các bộ vi xử lý đại diện cho thế hệ này là 8 bít: 8080 và 8085 của
intel, z80 của Zilog…
• Tốc độ từ 1-8us/lệnh với tần số đồng hồ Fclk = 1-5Mhz.
GIAI ĐOẠN 1978-1982
• Các bộ VXL đại diện cho thế hệ này 16 bít: 8086/80186/80286 của
intel, 86000/86100 của motorola.
• Tốc độ đạt từ 0,1-1us/lệnh với tần số đồng hồ Fclk = 1-10MHZ.
• Các vi xử lý intel trong thời gian này thể hiện quan điểm nâng
cao hiệu năng của bộ vi xử lý và hệ thống máy tính bằng việc
nâng cao xung nhịp. Phiên bản Pentium 4 đã tăng xung nhịp từ
1,5Ghz năm 2000 tới 3 Ghz năm 2002.
• Một sự kiện quan trọng trong giai đoạn này là sự ra đời của các
bộ vi xử lý 2 nhân cho các máy vi tính. Năm 2005 Intel đưa ra vi
xử lý đa nhân đầu tiên Pentium D với hai nhân vi xử lý riêng
biệt trên cùng một vi mạch.
GIAI ĐOẠN 2007 ĐẾN NAY
• Giai đoạn này các hãng Intel hay AMD tiếp tục ra tăng số nhân
bên trong bộ vi xử lý.
• Intel giới thiệu vi kiến trúc nhân thay thế vi kiến trúc netburst và
đưa ra bộ vi xử lý 2 nhân thế hệ mới Core-2.
• Phát triển dòng vi xử lý nhúng cho các thiết bị tính toán các
nhân. Ưu thế của các vi xử lý nhúng so với vi xử lý kể trên là
mức tiêu thụ điện năng, năng lực xử lý và chi phí.
PHÂN LOẠI BỘ VI XỬ LÝ
• Khối đệm lệnh: gồm 1 hay vài thanh ghi tùy theo từng loại bộ
vi xử lý để chứa tạm thời các byte lệnh trước khi đưa vào giải
mã lệnh.
• Khối giải mã lệnh: chức năng giải mã byte mã lệnh, xác định
thao tác của lệnh để đưa thông tin đến khối điều khiển. Các
thông tin này là các vi lệnh hay vi chương trình.
KHỐI ĐIỀN KHIỂN (CU – Control Unit
Điều khiển hệ thống thực hiện lệnh khi chạy một chương
trình.
Nhận tín hiệu yêu cầu điều khiển từ bên ngoài, tạo ra tín
hiệu điều khiển đáp ứng yêu cầu đó.
CÁC THANH GHI (REGISTERS)
Thanh ghi là nơi mà bộ vi xử lý có thể lưu trữ được một
số nhị phân (Kích cỡ của thanh ghi tính bằng bit).
Các thanh ghi có thể được truy cập bằng các câu lệnh
ngôn ngữ máy.
Các thanh ghi điều khiển và các thanh ghi trạng thái được
CU dùng để điều khiển việc thực hiện chương trình.
CÁC THANH GHI CƠ BẢN
Thanh ghi lệnh: chức năng lưu mã lệnh đang thực hiện. Mã lệnh
được nạp vào bộ vi xử lý và lưu vào thanh ghi lệnh. Kích cỡ của
VXL quyết định kích cỡ của thanh ghi này.
Thanh ghi điều chỉnh bộ nhớ: Chứa địa chỉ dữ liệu VXL, sử
dụng địa chỉ này như là các con trỏ trực tiếp tới bộ nhớ. Nội
dung của ô nhớ có địa chỉ này chính là dữ liệu được trao đổi và
xử lý.
Thanh ghi tích lũy: kích thước 8,16,32,64 bit thường dùng để
lưu kết quả tính toán của đơn vị xử lý số học và logic ALU,
dùng để trao đổi dữ liệu với các thiết bị vào ra.
KHỐI SỐ HỌC VÀ LOGIC (ALU
Bus: tập hợp các đường kết nối dùng để vận chuyển
thông tin giữa các thành phần.
Độ rộng bus: là số đường dây của bus có thể truyền
Chức năng:
◦ Vận chuyển lệnh từ bộ nhớ chính đến bộ vi xử lý.
◦ Vận chuyển dữ liệu giữa các thành phần của hệ vi xử lý với
nhau.
Độ rộng bus dữ liệu: Xác định số bit dữ liệu có thể
được trao đổi đồng thời.
◦ Nếu độ rộng bus dữ liệu là M bit (gồm M đường dây
DM-1, DM-2, ... , D2, D1, D0) thì nghĩa là đường bus dữ liệu đó
có thể vận chuyển đồng thời được M bit dữ liệu.
◦ M thường là 8, 16, 32, 64 bit.
VÍ DỤ
phân.
Ngôn ngữ chương trình duy nhất mà máy tính hiểu
Là ngôn ngữ lập trình gần với ngôn ngữ máy nhất.
Sử dụng các kí hiệu gợi nhớ để biểu diễn các lệnh máy.
Chương trình dịch hợp ngữ sang ngôn ngữ máy gọi là
Gồm 4 bước:
Bước 1: Phân tích chức năng nhiệm vụ của hệ vi xử lý cần
thiết kế.
Bước 2: Tổ chức phần cứng cho hệ vi xử lý cần thiết kế.
Bước 3: Xây dựng phần mềm cho hệ vi xử lý cần thiết kế.
Bước 4: Nạp chương trình cho hệ vi xử lý là hiệu chỉnh hệ
thống.
CHƯƠNG 2: BỘ VI XỬ LÝ INTEL 8086
Khối điều
khiển Bus
Các thanh ghi tạm thời Bus
ngoài
Điều khiển
ALU EU
Chức năng:
◦ BIU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển để truy
cập tới bộ nhớ và các thiết bị vào ra.
◦ Chức năng quan trọng nhất của BIU là tự động kích hoạt quá
trình lấy lệnh từ bộ nhớ bằng bộ tiền truy cập lệnh.
◦ Cho phép quá trình lấy lệnh từ bộ nhớ thực hiện song song với
các quá trình khác nhờ hàng đợi lệnh 6 byte.
BIU bao gồm:
◦ Các thanh ghi đoạn (Registes Segment).
◦ Con trỏ lệnh IP (Instruction Pointer).
◦ Bộ điều khiển logic BUS (Bus Control logic-BCL)
◦ Giao diện BIU con có bộ nhớ đệm cho mã lệnh, bộ nhớ này có
chiều dài 6 byte.
KHỐI THỰC HIÊN LỆNH (EU)
Chức năng: EU cung cấp thông tin về địa chỉ cho BIU để
khối này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã
thực hiện lệnh.
EU bao gồm:
◦ Khối điều khiển (CU – Control Unit):
◦ Khối số học và logic(ALU – Arithmatic and Logic Unit)
◦ Các thanh ghi đa năng (dữ liệu) và thanh ghi cờ.
Khối điều khiển CU: Khối này có mạch giải mã lệnh.
Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của
bộ giải mã. Các thông tin thu được từ đầu ra của nó sẽ
được đưa đến mạch tạo xung điều khiển, kết quả thu
được là các dãy xung khác nhau tùy theo mã lệnh để
điều khiển hoạt động bên trong và bên ngoài CPU.
AX BX CX DX
AH AL BH BL CH CL DH DL
THANH GHI CON TRỎ VÀ CHỈ SỐ
Chức năng: Các thanh ghi này chứa các giá trị offset
(độ lệch) cho các phần tử định địa chỉ trong một phân
đoạn. Địa chỉ sử dụng trong các phép toán số học và
logic.
Bao gồm 4 thanh ghi 16 bit:
SP – Stack Pointer Cho phép truy suất dễ dàng đến các phần
tử đang ở trong ngăn xếp hiện hành
BP – Base Pointer
Chức năng: Xác định địa chỉ vùng nhớ bằng cách chia
thành 16 đoạn 64KB.
Bao gồm các thanh ghi:
15 0
x x x x OF DF IF TF SF ZF x AF x PF x CF
Các cờ điều khiển được lập hay xóa thông qua các lệnh
đặc biệt trong chương trình người dùng.
Cờ bẫy – Trap Flag (TF): TF =1 thì CPU sẽ chờ ngắt từ
thiết bị ngoài.
Cờ ngắt – interrupt flag (IF): được sử dụng để cho phép
nhất 20 bit
Trong hoạt động truy cập một ô nhớ, Địa chỉ vật lý của
Bảng mã chế độ địa chỉ cho các toán hạng của lệnh:
MOD 00 01 10 11
R/M W=1 W=0
Chế độ địa chỉ tức thì: Toán hạng đích là 1 thanh ghi hay 1 ô nhớ, toán
hạng nguồn là hằng số. Chế độ địa chỉ này có thể được dùng để nạp dữ liệu
cần thao tác vào bất kỳ thanh gi nào hoặc bất kì ô nhớ nào trong đoạn dữ
liệu DS.
◦ Ví dụ: MOV CL,100; chuyển 100 vào CL
Chế độ địa chỉ trực tiếp: Trong chế độ này một hằng là địa chỉ lệch của ô
nhớ làm một toán hạng, còn toán hạng kia chỉ có thể là thanh ghi mà không
được là ô nhớ.
◦ Ví dụ: MOV AL,[1234]; chuyển nội dung ô nhớ DS:[1234] vào AL
Chế độ địa chỉ gián tiếp: Trong chế độ địa chỉ này, một toán hạng là một
thanh ghi được sử dụng để chứa địa chỉ lệch của ô nhớ chứa dữ liệu, còn
toán hạng kia chỉ có thể là thanh ghi là không được là ô nhớ.
◦ Ví du: MOV AL,[BX]; chuyển nội dung ô nhớ có địa chỉ DS:BX và AL
Chế độ địa chỉ tương đối cơ sở: Các thanh ghi cơ sở như BX hoặc BP
và hằng số biểu diễn giá trị dịch chuyển địa chỉ dùng để tính địa chỉ
hiệu dụng của 1 toán hạng trong vùng nhớ DS hoặc SS. Sự có mặt của
các giá trị dịch chuyển xác định tính tương đối của địa chỉ so với địa
chỉ cơ sở.
◦ Ví dụ MOV CX,[BX] + 10;
Chế độ địa chỉ tương đối chỉ số: Trong chế độ địa chỉ này các thanh
ghi chỉ số như SI hoặc DI và hằng số biểu diễn giá trị dịch chuyển
được dùng để tính địa chỉ hiệu dụng của toán hạng trong vùng nhớ DS
hoặc ES.
◦ Ví dụ MOV CX,[SI] +10;
Chế độ địa chỉ tương đối chỉ số cơ sở: Là sự kết hợp của địa chỉ tương
đối cơ sở và địa chỉ tương đối chỉ số. Trong chế độ này ta dùng cả
thanh ghi cơ sở lẫn thanh ghi chỉ số và một hằng số biểu diễn sự dịch
chuyển của địa chỉ để tính địa chỉ của toán hạng.
◦ Ví dụ MOV AX,[BX][SI] + 8
TẬP LỆNH TRONG VXL 8086
Bộ VXL 8086 có tập lệnh gồm 116 lệnh chiều dài của
lệnh từ 1 byte đến vài byte.
Tập lệnh bao gồm:
MOV:
◦ Cú pháp: MOV đích, nguồn
◦ Thực hiện: Đích ←Nguồn
◦ Toán hạng sử dụng
trong lệnh:
Đích Nguồn Ví dụ
Reg Reg MOV AH,BH
Reg Mem MOV CL,
[1000H]
Reg Imm MOV DH,10
Mem Reg MOV table,BX
Mem Imm MOV X1,25H
Seg.reg Reg16 MOV DS,AX
Seg.reg Mem16 MOV ES,X2
NHÓM CÁC LỆNH TRAO ĐỔI DỮ LIỆU
XCHG:
◦ Cú pháp: XCHG đích,nguồn
◦ Thực hiện đích ↔ nguồn
◦ Các toán hạng sử dụng trong lệnh:
ĐíchXCHG Nguồn Ví dụ
AX Reg XCHG AX,BX
Mem Reg XCHG SUM,BX
Reg Reg XCHG CL,DL
XLAT:
◦ Cú pháp: XLAT
◦ Thực hiện: AL←[DS*10H+BX+AL]
◦ Lấy giá trị thứ n trong bảng dữ liệu vào thanh ghi AL với BX giữ địa chỉ đầu bảng.
AL giữ khoảng cách từ đầu bảng tới giá trị cần lấy.
NHÓM CÁC LỆNH TRAO ĐỔI DỮ LIỆU
LEA:
◦ Đây là lệnh để tính địa chỉ lệch của biến hoặc địa chỉ của ô nhớ
chọn làm gốc rồi nạp vào thanh ghi đã chọn, lệnh này không
tác động đến cờ
◦ Cú pháp: LEA đích, nguồn
◦ Trong đó:
Đích thường là một trong các thanh ghi: BX,CX,DX,BP,SI,DI.
Nguồn là tên biến trong đoạn DS được chỉ rõ trong lệnh hoặc ô
nhớ cụ thể.
◦ Thực hiện:
Đích ← địa chỉ lệch của nguồn.
Đích ← địa chỉ hiệu dụng của nguồn.
NHÓM CÁC LỆNH TRAO ĐỔI DỮ LIỆU
PUSH:
◦ Cú pháp: PUSH Nguồn
◦ Thực hiện: Cất dữ liệu chỉ thị bởi toán hạng nguồn vào đỉnh ngăn
xếp và tự động giảm SP tùy theo số byte của toán hạng nguồn.
◦ Toán hạng sử dụng: là bộ nhớ hoặc thanh ghi.
◦ Ví dụ: PUSH AX
POP:
◦ Cú pháp: POP đích
◦ Thực hiện: lấy dữ liệu từ đỉnh ngăn xếp ra toán hạng đích và tăng giá
trị của SP lên một lượng tương ứng với số byte chứa trong toán hạng
đích
◦ Toán hạng sử dụng: là bộ nhớ hoặc thanh ghi.
◦ Ví dụ: POP BX
NHÓM CÁC LỆNH TRAO ĐỔI DỮ LIỆU
Đặc điểm:
◦ Kết quả sau khi thực hiện lệnh chứa trong toán hạng đích.
◦ Trạng thái kết quả ảnh hưởng tới các cờ
Nhóm các lệnh cộng:
ADD: Cộng hai toán hạng
◦ Cú pháp: ADD đích, gốc
◦ Thực hiện: Đích ← đích + gốc
◦ Các toán hạng sử dụng trong lệnh: thanh ghi và bộ nhớ
◦ Ví dụ ADD AX, BX
◦ ADD DL,[SI]
◦ ADD CL, 09
◦ Các cờ bị thay đổi AF, CF, OF, PF, SF, ZF
NHÓM CÁC LỆNH TÍNH TOÁN SỐ HỌC
JA/JNBE (nhảy nếu cao hơn/nhảy nếu không thấp hơn hoặc bằng)
◦ Cú pháp: JA nhan
JNBE nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: CMP AX, 12ABH; so sánh AX với 12ABH
JA THOI; nhảy đến THOI nếu AX cao hơn 12ABH
JAE/JNB/JNC (nhảy nếu lớn hơn hoặc bằng/ nhảy nếu không thấp
hơn/ nhảy nếu không có nhớ
◦ Cú pháp: JAE nhan
JNB nhan
JNC nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: CMP AL, 10H; so sánh AL với 10H
JAE THOI; nhảy đến THOI nếu AL lớn hơn hoặc bằng 10H
NHÓM CÁC LỆNH NHẢY
JB/JC/JNAE (nhảy nếu thấp hơn/ nhảy nếu có nhớ/ nhảy nếu không
cao hơn hoặc bằng.
◦ Cú pháp: JB nhan
JC nhan
JNAE nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: CMP AL,10H
JB THOI
JBE/JNA (nhảy nếu thấp hơn hoặc bằng/ nhảy nếu không cao hơn
◦ Cú pháp: JBE nhan
JNA nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: CMP AL,10H
JBE THOI
NHÓM CÁC LỆNH NHẢY
JE/JZ ( nhảy nếu bằng nhau/ nhảy nếu kết quả bằng không)
◦ Cú pháp JE nhan
JZ nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: SUB AL,10H
JE THOI
JNE/JNZ (nhảy nếu không bằng nhau/ nhảy nếu không bằng
không)
◦ Cú pháp JNE nhan
JNZ nhan
◦ Thực hiện: IP ← IP + dịch chuyển
◦ Ví dụ: SUB AL,10H
JNE THOI
NHÓM CÁC LỆNH NHẢY
phục vụ ngắt)
NOP (CPU không làm gì)
RET (Trở về chương trình chính từ chương trình con
BÀI TẬP
1. Hãy cho biết chế độ địa chỉ và mô tả hoạt động của 8086
khi thực hiện các lệnh sau:
a. MOV AX, BX k. MOV CX,[1234H]
b. SUB AX,DX l. XOR CL,BH
c. AND AH,CH m. SHL DX,CL
d. DEC BP n. POP DS
e. MOV BX,6783H o. LEA CX,[BX+DI]
f. NEG AH p.PUSH AX
g. XLAT q. XCHG DX,CX
h. ROR BL,1 r. MUL CX
i. DIV CL
2. Viết các lệnh hợp ngữ thực hiện công các công việc sau:
a. Nạp số 3654H vào thanh ghi BP.
b. Sao chép nội dung thanh ghi BP vào thanh ghi SP.
c. Sao chép nội dung thanh ghi AX tới ô nhớ có địa chỉ offset =
9876H.
d. Tăng nội dung thanh ghi CX lên 1.
f. Lập bit MSB của AX lên 1 nhưng không làm ảnh hưởng tới các
bit khác,
g. Lập bit LSB của AX lên 1 nhưng không làm ảnh hưởng tới các
bit khác.
h. Che 4 bit cao của CL
Ví Dụ:
TIÊP: MOV AH,[BX] [SI]; nạp vào AH ô nhớ có địa chỉ DS:
[BX+SI]
Dữ liệu cho chương trình:
Dữ liệu chương trình đa dạng: có thể được cho dưới dạng hệ hai, hệ 10,
hệ 16 hoặc dưới dạng kí tự. Khi cung cấp số liệu cho chương trình, số
cho ở hệ nào phải được kèm đuôi của hệ đó.
Biến
Biến trong chương trình hợp ngữ được định nghĩa kiểu dữ liệu là kiểu byte hay
kiểu từ và sẽ được chương trình dịch gán cho một địa chỉ nhất định trong bộ nhớ.
Ví Dụ: B1 DB 4
B2 DB ?
Biến từ (DW):
TÊNchiếm hai byte
DW trong bộ nhớ
GIÁ TRỊ KHỞI ĐẦU
Ví dụ: W1 DW 40
Biến mảng: Biến mảng là biến hình thành từ một dãy liên tiếp các phần tử cùng loại byte
hoặc từ.
Ví dụ: M1 DB 4,5,6,7,8,9
M2 DB 100 DUP(0)
Biến kiểu sâu kí tự: Biến kiểu xâu kí tự là một trường hợp đặc biệt của biến mảng, trong đó
các phần tử của mảng là các kí tự. Một xâu kí tự có thể được định nghĩa bằng các kí tự hoặc
bằng mã ASCII của các kí tự đó.
Ví dụ: STR1 DB ‘string
STR DB 73h,74h,72h,69h,6Eh,67h
Hằng có tên: Các hằng trong chương trình hợp ngữ thường được gán tên để làm cho
chương trình trở nên dễ đọc hơn. Hằng có thể là kiểu số hay kiểu kí tự. Việc gán tên
hằng nhờ lệnh giả EQU
◦ Ví dụ: CR EQU 0DH
CHAO EQU ‘hello’
Một số toán tử:
Toán tử DUP
Cú pháp: <Số lần> DUP (<giá trị>)
Ý nghĩa: Giá trị sẽ được lặp lại n lần, thường dùng toán tử DUP để khai
báo một dãy (mảng).
VD: Mang1 DB 10 DUP(0)
Mảng 2 DB 12,13,5 DUP(10)
Mảng 3 DB 5,4,2 DUP (2,3 DUP(0),1)
Toán tử PTR:
Cú pháp: <Kiểu> PTR <biểu thức>
Ý nghĩa: Thay đổi dạng của <biểu thức> sang <kiểu>
Toán tử LABEL:
Cú pháp: <Tên biến> Label <byte/word)
Ý nghĩa: Dùng để khai báo biến giúp người sử dụng tránh được mâu
thuẫn kiểu khi sử dụng.
Toán tử $: Cho giá trị hiện thời của bộ đếm và giá trị bộ nhớ. Thường
dùng để tính độ dài của một chuỗi.
Khung của một chương trình hợp ngữ: Một chương trình mã máy trong bộ nhớ
thường bao gồm các vùng nhớ khác nhau để chứa mã lệnh, chứa dữ liệu của
chương trình và một vùng nhớ khác được dùng làm ngăn xếp phục vụ hoạt động
của chương trình.
Khai báo quy mô sử dụng bộ nhớ:
Cú pháp: .Model kiểu_kích_thước_bộ nhớ
Các kiểu kích thước bộ nhớ trong chương trình hợp ngữ :
Kiểu kích thước Mô tả
Small(nhỏ) Mã lệnh gói gọn trong một đoạn. Dữ liệu nằm trong 1 đoạn
Medium Mã lệnh không gói gọn trong một một đoạn. Dữ liệu nằm trong
một đoạn
Compact Mã lệnh gói gọn trong một đoạn. Dữ liệu không gói gọn trong một
đoạn
Large Mã lệnh không gói gọn trong một đoạn. Dữ liệu không gói gọn
trong một đoạn. Không có mảng nào lớn hơn 64KB
Huge Mã lệnh không gói gọn trong một đoạn. Dữ liệu không gói gọn
trong một đoạn. Các mảng có thể lớn hơn 64KB
Khai báo đoạn ngăn xếp: Việc khai báo đoạn ngăn xếp cốt
để dành ra một vùng nhớ đủ lớn dùng làm ngăn xếp phục vụ
cho hoạt động của chương trình khi có chương trình con
Cú pháp: .Stack kích_thước
Ví dụ: . Stack 100
Khai báo dữ liệu: Đoạn dữ liệu chứa toàn bộ các định nghĩa
cho các biến của chương trình. Các hằng cũng nên được
định nghĩa ở đây để đảm bảo tính hệ thống mặc dù ta có thể
để chúng ở trong chương trình như đã nói ở phần trên.
Ví dụ: .Data
MSG DB ‘hello!$’
CR DB 13
LF EQU 10
Khai báo dữ liệu: Đoạn dữ liệu chứa toàn bộ các định
nghĩa cho các biến của chương trình. Các hằng cũng
nên được định nghĩa ở đây để đảm bảo tính hệ thống
mặc dù ta có thể để chúng ở trong chương trình như đã
nói ở phần trên.
Ví dụ: .Data
MSG DB ‘hello!$’
CR DB 13
LF EQU 10
Khai báo đoạn mã:Đoạn mã chứa mã lệnh của chương trình.
Việc khai báo đoạn mã được thực hiện nhờ hướng dẫn
chương trình dịch.
Cú pháp: .Code
Chương trình mẫu:
tên_CTC Proc
; các lệnh của thân chương trình chính
…
Call tên_ctc
…
tên_CTC Endp
Khung chương trình hợp ngữ để dịch ra chương trình .EXE:
.Model small
.Stack 100
.Data
; các định nghĩa cho biến và hằng
.Code
Main Proc
; Khởi đầu cho DS
MOV AX,@DaTa
MOV DS,AX
; Các lệnh của chương trình chính để tại đây
; trở về DOS dùng hàm 4CH của ngắt int 21H
MOV AH,4CH
INT 21H
MAIN ENDP
; các chương trình con để tại đây
END MAIN
Khung chương trình hợp ngữ để dịch ra chương trình .COM
.Model Tiny
.Code
Org 100h
Start: JMP Continue
; các định nghĩa cho biến và hằng đặt tại đây
Continue:
Main Proc
; Các lệnh chương trình đặt tại đây.
INT 20H; Trở về DOS
Main Endp
; Các chương trình con (nếu có) đặt tại đây.
END Start
Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ:
Cấu trúc tuần tự.
Cấu trúc lựa chọn (IF-THEN-ELSE)
Cấu trúc lặp (WHILE-DO)
Ngoài ra còn có 4 kiểu cấu trúc khác khi thay đổi 3 kiểu cấu
trúc trúc trên:
◦ Cấu trúc chọn kiểu IF-THEN
◦ Cấu trúc chọn kiểu CASE
◦ Cấu trúc lặp kiểu REPEAT-UNTIL
◦ Cấu trúc lặp kiểu FOR-DO
Cấu trúc tuần tự
Cách thực hiện: Lệnh được sắp xếp tuần tự, lệnh này kế tiếp lệnh ki
cho đến khi công việc được hoàn thành.
Lệnh 1
Lệnh 2
Lệnh 3
…..
Lệnh n
Ví dụ: Các thanh ghi CX và BX chứa các giá trị biến c và b. Hãy tính
giá trị biểu thức a = 2x(c+b) và chứa kết quả trong thanh ghi AX.
Bài làm:
XOR AX,AX
ADD AX,BX
ADD AX,CX
SHL AX,1
RA:
Cấu trúc IF – THEN:
Cú Pháp: If Điều kiện Then Công việc
Lưu đồ thuật toán
Điều
kiện Ví dụ: Gán cho BX giá trị tuyệt đối của AX
Giải:
CMP AX,0
JNL GAN
NEG AX
Công việc
GAN: MOV BX,AX
Cấu trúc IF – THEN – ELSE
IF Điều kiện THEN Công việc 1 ELSE Công việc 2
Điều
Kiện