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

Chương 2 - Các chỉ logic và điều khiển potx

17 209 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Chỉ Thị Logic Và Điều Khiển
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Tập
Định dạng
Số trang 17
Dung lượng 433,45 KB

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

Nội dung

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy cĩ điều kiện: * Phạm vi của lệnh nhảy cĩ điều kiện: cấu trúc mã máy của lệnh nhảy cĩ điều kiện địi

Trang 1

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

* Phạm vi của lệnh nhảy cĩ điều kiện: cấu trúc mã máy của lệnh nhảy cĩ điều kiện địi hỏi nhãn đích phải đứng trước lệnh nhảy khơng quá 126 byte hoặc đứng sau khơng quá 127 byte

* Cĩ 3 loại lệnh nhảy cĩ điều kiện:

+ Các lệnh nhảy cĩ dấu: được dùng khi kết quả trả về là các

số cĩ dấu

+ Các lệnh nhảy khơng dấu: được dùng khi kết quả trả về là các số khơng dấu

+ Các lệnh nhảy điều kiện đơn: điều kiện phụ thuộc vào 1 cờ riêng biệt

Trang 2

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

* Các lệnh nhảy cĩ dấu:

JG/JNLE Nhảy nếu lớn hơn ZF=0 và SF=0F JGE/JNL Nhảy nếu lớn hơn hoặc bằng SF=0F

JL/JNGE Nhảy nếu nhỏ hơn SF<>0F

JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng ZF=1 hay

SF=0F

Trang 3

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

* Các lệnh nhảy khơng dấu:

JA/JNBE Nhảy nếu lớn hơn CF=0 và ZF=0

JAE/JNB Nhảy nếu lớn hơn hoặc bằng CF=0

JB/JNAE Nhảy nếu nhỏ hơn CF=1

JBE/JNA Nhảy nếu nhỏ hơn hoặc bằng CF=1 hay ZF=1

Trang 4

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

* Các lệnh nhảy điều kiện đơn:

JE/JZ Nhảy nếu bằng/Nhảy nếu bằng 0 ZF=1

JNE/JNZ Nhảy nếu khơng bằng/Nếu khác 0 ZF=0

JNC Nhảy nếu khơng nhớ CF=0

JNO Nhảy nếu khơng tràn OF=0

JNS Nhảy nếu dấu dương SF=0

JP/JPE Nhảy nếu cờ chẵn PF=1

JNP/JPO Nhảy nếu cờ lẻ PF=0

Trang 5

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

Ví dụ: Viết chương trình hiển thị tồn bộ tập hợp các ký tự của hệ IBM

TITLE BAITAP4:IBM

.MODEL SMALL

.STACK 100h

CODE

END MAIN

MOV AH,4Ch

;trả quyền điều khiển INT 21h

MOV AH,2

MOV CX,256 ; số ký tự

MOV DL,0 ; NULL

PRINT_LOOP

INT 21h

INC DL

DEC CX

JNZ PRINT_LOOP

Trang 6

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Các lệnh nhảy cĩ điều kiện:

Lệnh CMP

Lệnh CMP dùng để so sánh giữa 2 tốn tử bằng cách lấy tốn tử đích trừ đi tốn tử nguồn

Cú pháp: CMP <đích>,<nguồn>

Chú ý:

+ Thường được sử dụng chung với lệnh nhảy cĩ điều kiện

+ CMP giống lệnh SUB nhưng tốn hạng đích khơng bị thay đổi giá trị

Ví dụ: Với AX=7FFFh, BX=0001h

JG NHAN ;nếu lớn hơn thì nhả đến nhãn NHAN

NHAN:

Trang 7

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Các lệnh điều khiển rẻ nhánh

Lệnh nhảy khơng điều kiện:

Lệnh JMP

Lệnh JMP dùng để nhảy khơng điều kiện, dùng để khắc phục giới hạn của lệnh nhảy cĩ điều kiện:

Cú pháp: JMP <đích>

Ví dụ:

MOV CX,10

TOP:

JMP EXIT ;sai  nhảy đến nhãn EXIT

Trang 8

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Cấu trúc rẻ nhánh IF…THEN….ELSE

Cấu trúc rẻ nhánh IF…THEN… ELSE biểu diễn như sau:

Điều kiện

Đúng Lệnh 1

Sai

Ví dụ: Nếu AX>0 thì AX = AX-1, ngược lại (AX<=0) thì AX=AX+1

Mơ tả:

IF AX>0 THEN

AX = AX - 1 ELSE

AX = AX + 1 END IF

ENDIF_:

Lệnh 2

Trang 9

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Cấu trúc CASE

Cấu trúc rẻ nhánh CASE biểu diễn như sau:

Giá trị 1

Phát biểu

Kiểm tra giá trị

Tập lệnh 1 Tập lệnh 2 Tập lệnh k Tập lệnh

Trang 10

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Cấu trúc CASE

Ví dụ: Nếu AX>0 thì BX = 1, nếu AX<0 thì BX=-1, nếu AX=0 thì BX=0

Mơ tả:

CASE AX

<0: BX= - 1

=0: BX= 0

>0: BX= 1 END_CASE

JL NHO ;Nếu AX<0

JG LON ;Nếu AX>0

NHO: MOV BX,-1

BANG: MOV BX,0

LON: MOV BX,1

END_CASE:

Trang 11

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Cấu trúc lặp FOR

Vịng lặp FOR là cấu trúc lặp lại các dịng lệnh với số lần xác định trước, thường dùng biến đếm để điều khiển)

Đếm=0?

Lệnh

Sai

Ví dụ: Hiển thị lên màn hình 80 dấu *

Mơ tả:

FOR 80 lần DO

Hiển thị dấu * END_FOR

MOV DL,’*’

FOR_:

JCXZ SKIP

SKIP:

Khởi tạo đếm

Đếm=đếm-1

Đúng

Trang 12

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN Cấu trúc lặp WHILE

Vịng lặp WHILE phụ thuộc vào điều kiện kiểm tra ngay từ đầu Khi điều kiện cịn thỏa mãn cịn lặp

Điều kiện

Lệnh

Sai

Ví dụ: Đếm số ký tự trong một dịng

Mơ tả:

Khởi tạo bộ đếm =0 Đọc một ký tự

WHILE ký tự <>ký tự đầu dịng DO

đếm=đếm+1 đọc một ký tự END_WHILE

Đúng

Trang 13

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN

Ví dụ: Đếm số ký tự trong một dịng

WHILE_:

INC DX ;Khơng đúng  Tăng đếm lên 1

INT 21h ;Đọc lại 1 ký tự

END_WHILE:

Cấu trúc lặp WHILE

Trang 14

Cấu trúc lặp REPEAT

Vịng lặp REPEAT thi hành ít nhất 1 lần rồi mới kiểm tra điều kiện, nếu thỏa mãn thì tiếp tục lặp

Điều kiện

Lệnh

Đúng

Ví dụ: Đọc vào các ký tự, chỉ dừng lại khi gặp ký tự trắng

Mơ tả:

REPEAT

Đọc một ký tự UNTIL ký tự trắng

Sai

REPEAT_:

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN

Trang 15

Ví dụ: Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký tự nhậpvào

là 'S', 's', 'T', 't', 'C', 'c'

.MODEL SMALL

.STACK 100h

.DATA

CBS DB "CHAO BUOI SANG$"

CBT DB "CHAO BUOI TRUA$"

CBC DB "CHAO BUOI CHIEU$"

MOV AX, @DATA MOV DS, AX

.CODE

;nhập một ký tự

MOV AH,1 INT 21h

CMP AL,’S’

JE BUOI_SANG CMP AL,’s’

JE BUOI_SANG

CMP AL,’T’

JE BUOI_TRUA CMP AL,’t’

JE BUOI_TRUA

CMP AL,’C’

JE BUOI_CHIEU CMP AL,’c’

JE BUOI_CHIEU

BUOI_SANG: LEA DX,CBS MOV AH,9 INT 21h JMP THOAT

BUOI_TRUA: LEA DX,CBT MOV AH,9 INT 21h JMP THOAT

BUOI_CHIEU: LEA DX,CBC MOV AH,9 INT 21h JMP THOAT

END

Trang 16

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN

Ví dụ: Viết chương trình hiển thị lên màn hình hình chữ nhật tơ kín dấu * với 10 cột và 5 hàng: * * * * * * * * * *

* * * * * * * * * *

* * * * * * * * * *

* * * * * * * * * *

* * * * * * * * * * stack 100h

.data

i db -1

j db -1 code

mov ax,@data mov ds,ax

mov ah,2

for_i:

mov dl,0ah int 21h mov dl,0Dh int 21h

mov j,0 inc i cmp i,5

jl for_j jge exit

for_j:

mov dl,'*' int 21h inc j cmp j,20

jl for_j jge for_i

exit:

mov ah,4ch int 21h end

Mơ tả:

For I=1 to 5

For J=1 to 10

In(‘*’)

End_For_J

End_For_I

Trang 17

Chương 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN

1 Nhập vào 1 ký tự, nếu khơng phải là một số thì nhập lại, nếu là số thì in số đĩ ra màn hình

2 Nhập vào 2 ký tự số (19), Tìm số lớn nhất và số nhỏ nhất và in kết quả ra màn hình

3 Nhập vào 1 ký tự chữ thường Xuống dịng và in ra các ký tự từ a đến ký tự đĩ

4 Nhập vào 1 ký tự số (19) Tính tổng tất cả các số từ số đĩ đến 9

Viết chương trình:

BÀI TẬP

Ngày đăng: 28/07/2014, 06:20

TỪ KHÓA LIÊN QUAN

w