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

Tài liệu Lệnh so sánh – Lệnh nhảy – Lệnh lặp ppt
Nội dung xem thử
Mô tả chi tiết
Bài thực hành số 2
Lệnh so sánh – Lệnh nhảy – Lệnh lặp
Mục đích
Hiểu cách so sánh hai số trong hợp ngữ
Hiểu cách thay đổi thứ tự thực hiện các lệnh
Biết cách sử dụng các lệnh so sánh, nhảy và lặp
Tóm tắt lý thuyết
Lệnh so sánh
Trong hợp ngữ, muốn so sánh hai số, ta phải thực hiện một phép toán số học hoặc logic trên hai
số đó và căn cứ vào các bit trong thanh ghi cờ rồi đưa ra kết luận. Để làm việc này, có thể dùng lệnh
CMP và TEST.
Bản chất của lệnh CMP Des,Src là lệnh SUB Des,Src (thực hiện phép tính Des – Src) nhưng
kết quả của phép tính không được lưu vào Des như trong lệnh SUB.
Ví dụ: so sánh hai số nguyên dương
MOV AH,1
MOV AL,2
CMP AH,AL
Sau khi thực hiện hai lệnh trên, cờ Carry (CF) bật, báo hiệu rằng AH < AL
Bản chất của lệnh TEST Des,Src là lệnh AND Des,Src (thực hiện phép tính Des AND Src)
nhưng kết quả của phép tính không được lưu vào Des như trong lệnh AND.
Ví dụ: kiểm tra hai bit cuối cùng của AL
TEST AL,3 ; 3h = 11b
Nếu cờ Zero (ZF) bật, có nghĩa là cả hai bit 0 và 1 của AL đều bằng 0.
L ệnh nhảy
Thông thường, khi một lệnh (instruction) được thực hiện, giá trị của thanh ghi IP (instruction
pointer) được tự động cập nhật để trỏ đến lệnh kế tiếp. Ngoài ra, nội dung của thanh ghi IP chỉ có
thể bị thay đổi thông qua một số lệnh đặc biệt. Đó là: các lệnh nhảy (J*), lệnh lặp (LOOP*), lệnh gọi
hàm (call, ret), lệnh gọi ngắt (int, iret). Các lệnh này được xếp vào nhóm “Lệnh điều khiển luồng”
(Program flow control instructions). Trong bài thực hành này, chúng ta sẽ học cách sử dụng các lệnh
nhảy và các lệnh lặp.
Lệnh nhảy không điều kiện
JMP <target>
Có các trường hợp sau:
• JMP SHORT <tên nhãn> (short jump). Khi đó trong mã lệnh lưu 1 byte khoảng
cách (offset) giữa vị trí hiện tại và vị trí cần nhảy đến. Kiểu này chỉ nhảy trong phạm
vi từ –128 đến +127 byte so với vị trí hiện tại.
Ví dụ: JMP SHORT Calculate
• JMP <tên nhãn> (near jump). Khi đó trong mã lệnh lưu 2 byte khoảng cách