Bài giảng Kiến trúc máy tính và hợp ngữ: Bài 3 - Huỳnh Tổ Hạp

2 37 0
Bài giảng Kiến trúc máy tính và hợp ngữ: Bài 3 - Huỳnh Tổ Hạp

Đang tải... (xem toàn văn)

Thông tin 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 và lệnh lặp cung cấp cho người học các kiến thức: Sơ lược về thanh ghi cờ, lệnh nhảy, lệnh lặp. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.

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

Ngày đăng: 26/10/2020, 12:06

Tài liệu cùng người dùng

Tài liệu liên quan