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

Tài liệu Hợp ngữ ASM-Chương 08-Cấu trúc DK & Loops-Phần 1- Lệnh nhảy ppt

16 715 5
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ấu Trúc ĐK Và Vòng Lặp
Chuyên ngành Assembly Language
Thể loại Bài giảng
Định dạng
Số trang 16
Dung lượng 465,62 KB

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

Nội dung

Chuong 8 : Cau truc DK va Vong lap 1Chương 8 : Cấu trúc điều khiển và Vòng lặp Mục tiêu Biết cách mô phỏng cấu trúc điều khiển và vòng lặp như ở ngôn ngữ lập trình cấp cao.. Nắm được cá

Trang 1

Chuong 8 : Cau truc DK va Vong lap 1

Chương 8 : Cấu trúc điều khiển và Vòng lặp

Mục tiêu

Biết cách mô phỏng cấu trúc điều khiển và vòng lặp như ở ngôn ngữ

lập trình cấp cao.

Nắm được các lệnh nhảy trong lập trình Assembly.

Trên cơ sở đó, vận dụng để lập trình giải quyết 1 số bài toán.

Trang 2

Nội dung

 Sự cần thiết của lệnh nhảy trong lập trình ASM.

 Lệnh JMP (Jump) : nhảy không điều kiện.

 Lệnh LOOP : cho phép lặp 1 công việc với 1 số lần nào đó.

 Các lệnh so sánh và luận lý.

 Lệnh lặp có điều kiện.

 Lệnh nhảy có điều kiện.

 Biểu diễn mô phỏng cấu trúc luận lý mức cao.

 Chương trình con.

 Một số chương trình minh họa.

Trang 3

Sự cần thiết của lệnh nhảy

• Ở các chương trình viết bằng ngôn ngữ cấp cao thì

việc nhảy (lệnh GoTo) là điều nên tránh nhưng ở lập

trình hệ thống thì đây là việc cần thiết và là điểm

mạnh của 1 chương trình viết bằng Assembly.

Một lệnh nhảy  CPU phải thực thi 1 đoạn lệnh ở 1 chỗ khác với nơi mà các lệnh đang được thực thi.

Trong lập trình, có những nhóm phát biểu cần phải lặp đi lặp lại nhiều lần trong 1 điều kiện nào đó Để đáp ứng điều kiện này ASM cung cấp 2 lệnh JMP và LOOP.

Trang 4

Lệnh JMP (J((((

• Công dụng :Chuyển điều khiển không điều kiện.

•• Nhảy gần (NEAR) : 1 tác vụ nhảy trong cùng 1

segment.

•• Nhảy xa (FAR) : 1 tác vụ nhảy sang segment

khác.

•• Cú pháp : JMP đích

Trang 5

Cacù lệnh chuyển điều khiển

Chuyển điều khiển vô điều kiện

Chuyển điều khiển có điều kiện

JMP [ SORT | NEAR PTR |FAR PTR ] DEST

JConditional destination

Ex : JNZ nhãn đích ;

Trang 6

LỆNH LOOP

Công dụng : cho phép lặp 1 công việc với 1 số lần nào đó

Mỗi lần lặp CX giảm đi 1 đơn vị Vòng lặp chấm dứt khi CX =0.

Ex 1 : xuất ra màn hình 12 dòng gồm các ký tự A.

MOV CX, 12 * 80

MOV DL, ‘A’

NEXT :

MOV AH, 2 INT 21H

LOOP NEXT

Trang 7

LOOP (tt)

Ex : có 1 Array A gồm 6 bytes, chép A sang array B – dùng SI và

DI để lấy Offset

MOV SI, OFFSET A

MOV DI, OFFSET B

MOV CX, 6

MOVE_BYTE :

MOV AL, [SI]

MOV [DI], AL

INC SI

INC DI

LOOP MOVE_BYTE

A DB 10H,20H,30H,40H,50H,60H

B DB 6 DUP (?)

Trang 8

CÁC LỆNH LUẬN LÝ

Lưu ý về các toán tử LOGIC :

AND 2 Bit : kết quả là 1 khi và chỉ khi 2 bit là 1

OR 2 Bit : kết quả là 1 khi 2 Bit có bit là 1

XOR 2 Bit : kết quả là 1 chỉ khi 2 bit khác nhau

NOT 1 Bit : lấy đảo của Bit này

Lưu ý về thanh ghi cờ :

Cờ ZERO được lập khi tác vụ cho kết quả là 0

Cờ CARRY được lập khi cộng kết quả bị tràn hay trừ phải mượn

Cờ SIGN được lập khi bit dấu của kết quả là 1, tức kết quả là số âm

Trang 9

Lệnh AND

Công dụng :

Lệnh này thực hiện phép AND giữa 2 toán hạng, kết quả cuối

cùng chứa trong toán hạng đích.

Dùng để xóa các bit nhất định của toán hạng đích giữ nguyên

các bit còn lại.

Cú pháp : AND Destination , Source

Muốn vậy ta dùng 1 mẫu bit gọi là mặt nạ bit (MASK),

các bit mặt nạ được chọn để sao cho các bit tương ứng

của đích được thay đổi như mong muốn

Trang 10

Lệnh AND

Ex1 : xoá bit dấu của AL, giữ nguyên các bit còn lại :

dùng AND với 01111111b làm mặt nạ

AND AL, 7FH

Ex2 :

MOV AL, ‘5’ ; Đổi mã ASCII của số

AND AL, 0FH ; thành số tương ứng

Ex3 :

MOV DL, ‘a’ ; Đổi chữ thường thành chữ hoa

AND DL, 0DFH ; thành số tương ứng

Mask bits

Mask bits

Trang 11

LỆNH OR

Công dụng : dùng để bật lên 1 số bit và giữ nguyên các bit khác

Cú pháp : OR destination, source

Ex1 :

OR AL , 10000001b ; bật bit cao nhất và bit thấp nhất trong thanh ghi AL lên 1

Ex 2:

MOV AL , 5 ; đổi 0 9 thành ký số

OR AL , 30h ; ASCII tương ứng

Ex 3:

OR AL , AL ; kiểm tra một thanh ghi có = 0

Nếu : cờ ZF được lập  AL =0

cờ SIGN được lập  AL <0

cờ ZR và cờ SIGN không được lập  AL >0

Trang 12

Việc xoá 1 thanh ghi

Ta có 3 cách để xoá 1 thanh ghi :

C1: MOV AX , 0

C2 : SUB AX, AX

C3 : XOR AX, AX

Mã lệnh 2 và 3 dài 2 bytes

Mã lệnh 1 dài 3 bytes

 Lệnh 2,3 hiệu quả hơn

Tuy nhiên các thao tác giữa ô

nhớ và ô nhớ là không hợp lệ

nên khi cần xoá 1 ô nhớ ta

phải dùng lệnh 1

Trang 13

LỆNH XOR

Công dụng : dùng để tạo đồ họa màu tốc độ cao

Cú pháp : XOR destination, source

Ex : lật bit cao của AL 2 lần

MOV AL , 00111011b ;

XOR AL, 11111111b ; AL = 11000100b

XOR AL, 11111111b ; AL = 00111011b

Trang 14

LỆNH TEST

Cú pháp : TEST destination, source

Ex : kiểm tra bit 13 trong DX là 0 hay 1

TEST DX, 2000h

JZ BitIs0

BitIs1 : bit 13 is 1

BitIs0 : bit 13 is 0

Để kiểm tra 1 bit nào đó chỉ cần đặt bit 1 vào đúng vị trí bit cần kiểm tra và khảo sát cờ ZF

(nếu bit kiểm là 1 thì ZF sẽ xoá, ngược lại ZF được lập

Công dụng : dùng để khảo sát trị của từng bit hay nhóm bit.

Test thực hiện giống lệnh AND nhưng không làm thay đổi toán hạng đích.

Trang 15

MINH HỌA LỆNH TEST

MOV AH, 2

INT 17h

TEST AL , 00100000b ; Test bit 5, nếu bit 5 = 1 máy in hết giấy

Ex : kiểm tra trạng thái máy in Interrupt 17H trong BIOS sẽ kiểm tra

trạng thái máy in, sau khi kiểm tra AL sẽ chứa trạng thái máy in Khi bit 5

của AL là 1 thì máy in hết giấy.

Lệnh TEST cho phép test nhiều bit 1 lượt.

Trang 16

MINH HỌA LỆNH TEST(tt)

TEST AL, 1 ; AL chứa số chẳn ?

JZ A1 ; nếu đúng nhảy đến A1

Ex :viết đoạn lệnh thực hiện lệnh nhảy đến nhãn A1 nếu AL chứa số

chẵn.

Ngày đăng: 10/12/2013, 01:15

TỪ KHÓA LIÊN QUAN

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

w