1. Trang chủ
  2. » Công Nghệ Thông Tin

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 176,98 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

Bài 3:

Lệnh nhảy – Lệnh lặp

(Sơ lược về thanh ghi cờ)

zThanh ghi cờ (Flag)

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.

zMỗ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:

zCF (Carry flag) có trị 1 khi có nhớ hoặc mượn từ bit MSB

zZF (Zero flag) có trị 1 khi kết quả là 0

zSF (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)

z (Các thanh ghi sắp xếp theo chức năng)

Lệnh nhảy (Jump)

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

z Các lệnh nhảy:

(cấu trúc IF THEN )

(đi sau các lệnh làm thay đổi cờ)

zLệnh nhảy không điều kiện:

JMP Nhãn_đích

zLệnh nhảy theo điều kiện

Jxx Nhãn_đích

ƒ (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ờ:

JE (nhảy nếu bằng: Equal), JZ (nhảy nếu ZF=1) : ZF=1,

zXem VD (trang 56)

Chú ý: không có cấu trúc IF THEN ELSE

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

;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 hoặc C, chung INT 21h

;Ve DOS

AL = ‘s’

Gán Chào Chiều

LàSáng:

Gán Chào Sáng

HiểnThị:

Hiển thị Sáng Y

Trang 2

Lệnh lặp (Loop)

ƒ Vòng lặp thường kết thúc bằng 1 lệnh nhảy

Các lệnh nhảy lặp:

zLOOP Nhãn

ƒ 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)

ƒ 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)

z VD trang 58

.CODE MOV AH, 2

MOV CX, 256

MOV DL, 0 PrintLoop:

INT 21H INC DL

DEC CX JNZ PrintLoop

.CODE MOV AH, 2

MOV CX, 256

MOV DL, 0 PrintLoop:

INT 21H INC DL

LOOP PrintLoop

I = 256

I <> 0

I = I – 1 Y

MOV CX, 5

Ngoai:

PUSH CX

MOV CX, 10

Trong:

LOOP Trong

POP CX

LOOP Ngoai

(Push / Pop: đưa vào / lấy ra từ Stack)

ƒ 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 ) 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

ƒ INT 21H

ƒ CMP AL, 0Dh ; Ký tự vừa bấm là Enter

ƒ LOOPNE KeyLoop

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 MOV CX,4

;Vong lap nhap ky tu va kiem tra BatDau:

;Nhap 1 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

LOOP BatDau

MOV AH,9 MOV DX,OFFSET BaoSai2

KetThuc:

AL < ‘0’

AL > ‘9’

NhapLai:

Thông báo SAI

BatDau:

Nhập 1 ký tự

(vào AL)

KetThuc:

T

T

‘0’ < AL < ‘9’

CX <> 0 T

KetThuc:

Thông báo dừng nhập

Bài tập

zLý thuyết: 3.1 đến 3.4 (thảo luận nhóm)

zThực hành: 3.5 đến 3.13 (kiểm tra thực hành)

(Hướng dẫn: Mã ASCII

8 : quay lui, back space

10 : xuống dòng, line feed, new line)

27 : phím ESC)

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm