Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị dịch bit Cú pháp: [nhãn] Chỉ thị dịch Thanh ghi/từ nhớ, CL 1... Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị dịch bit C
Trang 1Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN
Chỉ thị CALL và RET
Các chỉ thị gọi thủ tục
• Chỉ thị CALL: Chuyển điều khiển đến thủ tục bị gọi
* Cú pháp: [nhãn] CALL <Tên thủ tục>
* Thực hiện các cơng việc:
- Giảm nội dung SP bởi 2
- Cất nội dung IP vào Stack
- Đưa offset thủ tục bị gọi lên IP
• Chỉ thị RET: Chuyển điều khiển trở về chương trình gọi từ thủ tục bị
gọi
* Cú pháp: [nhãn] RET
* Thực hiện các cơng việc:
- Lấy giá trị cũ của IP từ Stack nạp cho IP
- Tăng nội dung SP bởi 2
Trang 2Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN
Chỉ thị CALL và RET
Các chỉ thị gọi thủ tục
Ví dụ:
.CODE
BEGIN PROC FAR
CALL B10 ;gọi thủ tục B10
MOV AX,4CH INT 21H
BEGIN ENDP B10 PROC NEAR
CALL C10 ;gọi thủ tục C10
B10 ENDP C10 PROC NEAR
C10 ENDP
Trang 3Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị logic
- Các chỉ thị logic bao gồm: AND, OR, XOR, TEST và NOT
- Chức năng: Xĩa hoặc thiết lập các bit để quản lý dữ liệu ASCII cho các mục đích tính tốn số học
- Cú pháp tổng quát:
[nhãn] Chỉ thị (Thanh ghi/từ nhớ),[Thanh ghi/từ nhớ]
* Đặc trưng:
- AND: Hai bit tương ứng là 1 thì kết quả là 1, ngược lại kết quả là 0
- OR: Một trong 2 bit (Hoặc cả 2 bit) là 1 thì kết quả là 1, ngược lại kết quả là 0
- XOR: Hai bit tương ứng khác nhau kết quả là 1, ngược lại giống nhau thì kết quả là 0
- TEST: Tương tự AND, nhưng khơng lưu kết quả
- NOT: Kết quả là nghịch đảo của các bit
Trang 4Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị logic
Ví dụ 1: AL=1100 0101, BH=0101 1100
• Chỉ thị AND: AND AL,BH ;AL=0100 0100
AND AL,00h ;AL=0000 0000
• Chỉ thị OR: OR BH,AL ;BH=1101 1101
• Chỉ thị XOR: XOR AL,AL ;AL=0000 0000
• Chỉ thị TEST: TEST BL,11000000b ;Kiểm tra cĩ bit nào
JNZ ;bên trái khơng?
TEST AL,00000001b ;Cĩ phải AL chứa 1
Trang 5Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị logic
Ví dụ 2: Viết chương trình đổi chữ thường thành chữ HOA
Nhận xét:
- Chữ HOA từ A Z cĩ giá trị ASCII từ 41H 5AH
- Chữ thường từ a z cĩ giá trị ASCII từ 61H 7AH
- Sự khác nhau duy nhất: Bit thứ 5 (bằng 0 - chữ HOA và bằng 1 - chữ thường)
A= 01 0 0 0001 a= 01 1 0 0001 Z= 01 0 1 1010 z= 01 1 1 1010
Trang 6Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị logic
Ví dụ 2: Viết chương trình đổi chữ thường thành chữ HOA
Phương pháp:
- Sử dụng chỉ thị AND để xĩa đi bit số 5
AH=0100 0001
AND AH,11011111b
- Mã ví dụ:
;nhập ký tự MOV AH,1 INT 21h
;đổi từ thường qua HOA AND AL,11011111b
;in ra màn hình MOV AH,2
MOV DL,AL INT 21h
Trang 7Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị dịch bit
Cú pháp:
[nhãn] Chỉ thị dịch (Thanh ghi/từ nhớ), (CL)
1 Dịch bit sang phải:
- Chỉ thỉ SHR: Dịch phải logic, sử dụng bit 0 để làm đầy
- Chỉ thị SAR: Dịch phải số học, sử dụng bit dấu để làm đầy
- Các bit được định lần lượt đặt vào cờ CF
- Sử dụng cho phép chia 2: Dịch phải n bit tương đương chia 2 n bit
Ví dụ:
MOV AL, B7h ;AL=1011 0111 MOV AL,B7h ;AL=1011 0111 SHR AL,1 ;AL= 0 101 1011 SAR AL,1 ;AL= 1 101 1011 SHR AL,CL ;AL= 000 0 1011 SAR AL,CL ;AL= 111 1 1011
Trang 8Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị dịch bit
Cú pháp:
[nhãn] Chỉ thị dịch (Thanh ghi/từ nhớ), (CL)
2 Dịch bit sang trái:
- Chỉ thỉ SHL,SAL: Dịch trái logic, sử dụng bit 0 để làm đầy và hoạt động như nhau Các bit được định lần lượt đặt vào cờ CF
- Sử dụng cho phép nhân 2: Dịch trái n bit tương đương nhân 2 n bit
Ví dụ:
MOV CL,3 MOV AL,B7h ;AL=1011 0111
SHL AL,CL ;AL=0111 0000
Trang 9Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị quay bit
Cú pháp:
[nhãn] Chỉ thị quay (Thanh ghi/từ nhớ), (CL)
1 Quay bit sang phải:
- Chỉ thỉ ROR: Quay logic bit sang phải, bit được địch ra ngồi được đưa vào cờ CF và được dùng để làm đầy
- Chỉ thị RCR: Quay số học bit sang phải, bit được dịch ra ngồi được đưa vào cờ CF và bit cờ CF được dùng làm đầy
Trang 10Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị quay bit
Cú pháp:
[nhãn] Chỉ thị quay (Thanh ghi/từ nhớ), (CL)
1 Quay bit sang phải:
Ví dụ 1: MOV CL,3
MOV BH,B7h ;BH=1011 0111
ROR BH,CL ;BH=0111 1011
Ví dụ 2: MOV CL,3
MOV BH,B7h ;BH=1011 0111 RCR BH,1 ;BH=0101 1011 (CF=0)
;BH=1101 1011 (CF=1) RCR BH,CL ;BH=1110 1011 (CF=0)
;BH=1111 1011 (CF=1)
Trang 11Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị quay bit
Cú pháp:
[nhãn] Chỉ thị quay (Thanh ghi/từ nhớ), (CL)
2 Quay bit sang trái:
- Chỉ thỉ ROL: Quay logic bit sang trái, bit được địch ra ngồi được đưa vào cờ CF và được dùng để làm đầy
- Chỉ thị RCL: Quay số học bit sang trái, bit được dịch ra ngồi được đưa vào cờ CF và bit cờ CF được dùng làm đầy
Trang 12Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các chỉ thị quay bit
Cú pháp:
[nhãn] Chỉ thị quay (Thanh ghi/từ nhớ), (CL)
2 Quay bit sang trái:
Ví dụ 1: MOV CL,3
MOV BH,B7h ;BH=1011 0111
ROL BH,CL ;BH=0111 0111
Ví dụ 2: MOV CL,3
MOV BH,B7h ;BH=1011 0111 RCL BH,1 ;BH=0110 1110 (CF=0)
;BH=0110 1111 (CF=1) RCL BH,CL ;BH=0111 0101 (CF=0)
;BH=0111 1101 (CF=1)