Bài giảng Kiến trúc máy tính và hợp ngữ - Bài 3: Lệnh nhảy – Lệnh lặp

(Sơ lược về thanh ghi cờ)  
Bài 3:  
z Thanh ghi cờ (Flag)  
Lệnh nhảy – Lệnh lặp  
z Ghi nhận các thông tin điều khiển, trạng thái của  
CPU và kết quả thực hiện lệnh sau cùng.  
z Mỗi bit gọi là 1 cờ (có trị 1: set, hoặc 0: clear)  
z Cờ điều khiển: IF, DF, TF  
z Cờ trạng thái:  
z CF (Carry flag) có trị 1 khi có nhớ hoặc mượn từ bit MSB  
z ZF (Zero flag) có trị 1 khi kết quả là 0  
z SF (Sign flag) có trị 1 khi kết quả là âm (bit MSB là 1)  
z Các lệnh tính toán đều làm thay đổi cờ.  
(Xem thêm chương 2)  
Lệnh nhảy (Jump)  
z
Định nghĩa:  
z (Các thanh ghi sắp xếp theo chức năng)  
z
Thay đổi trật tự thực hiện các lệnh (thay vì tuần tự)  
Tùy thuộc vào tình huống, phản ánh ở trị các cờ  
z
z
Các lệnh làm thay đổi cờ  
z
Các lệnh tính toán sẽ thay đổi trị các cờ  
Lệnh CMP Đích, Nguồn (Compare: So sánh)  
z
ƒ
ƒ
ƒ
ƒ
ƒ
Tương tự lệnh SUB nhưng không làm thay đổi trị đích  
Cũng thay làm thay đổi cờ  
Nếu Đích = Nguồn, ZF = 1  
Nếu Đích > Nguồn, SF = 0, CF = 0  
Nếu Đích < Nguồn, SF = 1, CF = 1  
ƒ
VD: MOV AL, 10  
CMP AL, 90h ; SF = 1, CF = 1  
Nhập 1 ký tự. Nếu là ‘S’ hoặc ‘s’ thì chào Buổi sáng  
Nếu khác thì chào Buổi chiều  
;Hien thi cau hoi  
;Nhap tra loi  
MOV  
INT  
AH,1  
21H  
;Kiem tra tra loi la 'S' hay 's'  
;Neu dung nhay den LaSang  
z Các lệnh nhảy:  
(cấu trúc IF ... THEN ...)  
(đi sau các lệnh làm thay đổi cờ)  
CMP  
AL,'s'  
Y
AL = ‘s’  
JE LaSang  
CMP  
AL,'S'  
JE LaSang  
;Tra loi khac 'S' hay 's'  
;Lay dia chi cau chao buoi chieu va hien thi  
z Lệnh nhảy không điều kiện:  
JMP Nhãn_đích  
Gán Chào Chiều  
z Lệnh nhảy theo điều kiện  
Jxx Nhãn_đích  
MOV  
JMP Hienthi  
;Tra loi la 'S' hay 's'  
;Lay dia chi cau chao buoi sang va hien thi  
LaSang:  
MOV  
;Hien thi cau chao  
Hienthi:  
MOV  
INT  
DX,OFFSET Chieu  
ƒ
ƒ
ƒ
ƒ
(tùy thuộc tr/thái th/ghi cờ) nếu thỏa nhảy đến Nhãn.  
Nhảy theo kết quả không dấu: JB, JA  
Nhảy theo kết quả có dấu: JL, LG  
Nhảy theo giá trị cờ:  
LàSáng:  
Gán Chào Sáng  
DX,OFFSET Sang  
JE (nhảy nếu bằng: Equal), JZ (nhảy nếu ZF=1) : ZF=1,  
AH,9 ; hiển thị S hoặc C, chung INT 21h  
21H  
HiểnThị:  
Hiển thị Sáng  
z Xem VD (trang 56)  
Chú ý: không có cấu trúc IF ... THEN ... ELSE  
;Ve DOS  
1
Lệnh lặp (Loop)  
ƒ
Vòng lặp thường kết thúc bằng 1 lệnh nhảy  
z
VD trang 58  
...  
Các lệnh nhảy lặp:  
z LOOP Nhãn  
...  
.CODE  
.CODE  
MOV AH, 2  
MOV CX, 256  
MOV DL, 0  
PrintLoop:  
INT 21H  
INC DL  
MOV AH, 2  
MOV CX, 256  
MOV DL, 0  
PrintLoop:  
INT 21H  
ƒ
ƒ
ƒ
Biến đếm của vòng lặp sẽ là CX  
Phải khởi gán cho CX (số lần lặp)  
I = 256  
....  
Sẽ giảm CX và kiểm tra nếu CX<>0 thì quay lại Nhãn  
(xem VD trang 58)  
ƒ
Nếu muốn tạo 2 vòng lặp lồng nhau, dùng lệnh PUSH / POP  
(xem VD trang 58)  
INC DL  
DEC CX  
JNZ PrintLoop  
...  
LOOP PrintLoop  
I = I – 1  
I <> 0  
Y
...  
ƒ
ƒ
LOOPE / LOOPZ  
Tiếp tục lặp khi CX <> 0 và ZF = 1  
(Hoặc kết thúc lặp khi ....  
LOOPNE / LOOPNZ  
Tiếp tục lặp khi CX <> 0 và ZF = 0  
(Hoặc kết thúc lặp khi ....  
MOV CX, 5  
Ngoai:  
)
)
PUSH CX  
...  
MOV CX, 10  
VD: Nhập 1 chuỗi ký tự dài tối đa 128 hoặc kết thúc bằng Enter  
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
.CODE  
MOV CX, 128  
KeyLoop:  
MOV AH, 1  
Trong:  
...  
LOOP Trong  
POP CX  
INT 21H  
CMP AL, 0Dh ; Ký tự vừa bấm là Enter  
LOOPNE KeyLoop  
LOOP Ngoai  
(Push / Pop: đưa vào / lấy ra từ Stack)  
Nhập 1 ký tự. Nếu là số: từ 0 đến 9 thì dừng  
Nếu khác thì Báo nhập lại, tối đa 3 lần  
;Nhap so lan lap vao CX  
BatDau:  
Nhập 1 ký tự  
(vào AL)  
MOV  
CX,4  
Bài tập  
;Vong lap nhap ky tu va kiem tra  
BatDau:  
;Nhap 1 ky tu  
MOV AH,1  
T
AL < ‘0’  
z Lý thuyết: 3.1 đến 3.4 (thảo luận nhóm)  
INT 21H  
;Kiem tra ky tu nhap co phai la so?  
CMP AL,'0'  
JB NhapLai  
CMP AL,'9'  
JA NhapLai  
z Thực hành: 3.5 đến 3.13 (kiểm tra thực hành)  
(Hướng dẫn: Mã ASCII  
T
AL > ‘9’  
‘0’ < AL < ‘9’  
8
: quay lui, back space  
JMP KetThuc  
NhapLai:  
10 : xuống dòng, line feed, new line)  
27 : phím ESC)  
NhapLai:  
Thông báo SAI  
MOV  
MOV  
INT  
AH,9  
DX,OFFSET BaoSai1  
21H  
T
LOOP  
MOV  
MOV  
INT  
BatDau  
AH,9  
DX,OFFSET BaoSai2  
21H  
CX <> 0  
Thông báo dừng nhập  
KetThuc:  
...  
KetThuc:......  
2
pdf 2 trang yennguyen 18420 Free
Bạn đang xem tài liệu "Bài giảng Kiến trúc máy tính và hợp ngữ - Bài 3: Lệnh nhảy – Lệnh lặp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_va_hop_ngu_bai_3_lenh_nhay_lenh.pdf