intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Minh Hoa | Ngày: | Loại File: PDF | Số trang:2

47
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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

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

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2