• 沒有找到結果。

Kip R. Irvine

N/A
N/A
Protected

Academic year: 2022

Share "Kip R. Irvine"

Copied!
32
0
0

全文

(1)

Assembly Language for Intel

Assembly Language for Intel - - Based Based Computers, 4

Computers, 4 th th Edition Edition

Chapter 6: Conditional Processing

Kip R. Irvine

(2)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

2

Chapter Overview Chapter Overview

• Boolean and Comparison Instructions

• Conditional Jumps

• Conditional Loop Instructions

• Conditional Structures

• Application: Finite-State Machines

• Using the .IF Directive

(3)

Boolean and Comparison Instructions Boolean and Comparison Instructions

• CPU Status Flags

• AND Instruction

• OR Instruction

• XOR Instruction

• NOT Instruction

• Applications

• TEST Instruction

• CMP Instruction

(4)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

4

Status Flags

Status Flags - - Review Review

• The Zero flag is set when the result of an operation equals zero.

• The Carry flag is set when an instruction generates a result that is too large (or too small) for the destination operand.

• The Sign flag is set if the destination operand is negative, and it is clear if the destination operand is positive.

• The Overflow flag is set when an instruction generates an invalid signed result.

• Less important:

• The Parity flag is set when an instruction generates an even number of 1 bits in the low byte of the destination operand.

• The Auxiliary Carry flag is set when an operation produces a carry

out from bit 3 to bit 4.

(5)

AND Instruction AND Instruction

• Performs a Boolean AND operation between each pair of matching bits in two operands

• Syntax:

AND destination, source

(same operand types as MOV)

0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1

AND

unchanged cleared

AND

(6)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

6

OR Instruction OR Instruction

• Performs a Boolean OR operation between each pair of matching bits in two operands

• Syntax:

OR destination, source

OR

0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1

OR

set

unchanged

(7)

XOR Instruction XOR Instruction

• Performs a Boolean exclusive-OR operation between each pair of matching bits in two operands

• Syntax:

XOR destination, source XOR

0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0

XOR

inverted unchanged

XOR is a useful way to toggle (invert) the bits in an operand.

(8)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

8

NOT Instruction NOT Instruction

• Performs a Boolean NOT operation on a single destination operand

• Syntax:

NOT destination NOT

0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0

NOT

inverted

(9)

Applications

Applications (1 of 5) (1 of 5)

mov al,'a' ; AL = 01100001b

and al,11011111b ; AL = 01000001b

• Task: Convert the character in AL to upper case.

• Solution: Use the AND instruction to clear bit 5.

(10)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

10

Applications

Applications (2 of 5) (2 of 5)

mov al,6 ; AL = 00000110b

or al,00110000b ; AL = 00110110b

• Task: Convert a binary decimal byte into its equivalent ASCII decimal digit.

• Solution: Use the OR instruction to set bits 4 and 5.

The ASCII digit '6' = 00110110b

(11)

Applications

Applications (3 of 5) (3 of 5)

mov ax,40h ; BIOS segment

mov ds,ax

mov bx,17h ; keyboard flag byte

or BYTE PTR [bx],01000000b ; CapsLock on

• Task: Turn on the keyboard CapsLock key

• Solution: Use the OR instruction to set bit 6 in the keyboard flag byte at 0040:0017h in the BIOS data area.

This code only runs in Real-address mode, and it does not

work under Windows NT, 2000, or XP.

(12)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

12

Applications

Applications (4 of 5) (4 of 5)

mov ax,wordVal

and ax,1 ; low bit set?

jz EvenValue ; jump if Zero flag set

• Task: Jump to a label if an integer is even.

• Solution: AND the lowest bit with a 1. If the result is Zero, the number was even.

JZ (jump if Zero) is covered in Section 6.3.

Your turn: Write code that jumps to a label if an integer is

negative.

(13)

Applications

Applications (5 of 5) (5 of 5)

or al,al

jnz IsNotZero ; jump if not zero

• Task: Jump to a label if the value in AL is not zero.

• Solution: OR the byte with itself, then use the JNZ (jump if not zero) instruction.

ORing any number with itself does not change its value.

(14)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

14

TEST Instruction TEST Instruction

• Performs a nondestructive AND operation between each pair of matching bits in two operands

• No operands are modified, but the Zero flag is affected.

• Example: jump to a label if either bit 0 or bit 1 in AL is set.

test al,00000011b jnz ValueFound

• Example: jump to a label if neither bit 0 nor bit 1 in AL is set.

test al,00000011b

jz ValueNotFound

(15)

CMP Instruction

CMP Instruction (1 of 3) (1 of 3)

• Compares the destination operand to the source operand

• Nondestructive subtraction of source from destination (destination operand is not changed)

• Syntax: CMP destination, source

• Example: destination == source

mov al,5

cmp al,5 ; Zero flag set

• Example: destination < source mov al,4

cmp al,5 ; Carry flag set

(16)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

16

CMP Instruction

CMP Instruction (2 of 3) (2 of 3)

• Example: destination > source

mov al,6

cmp al,5 ; ZF = 0, CF = 0

(both the Zero and Carry flags are clear)

The comparisons shown so far were unsigned.

(17)

CMP Instruction

CMP Instruction (3 of 3) (3 of 3)

• Example: destination > source

mov al,5

cmp al,-2 ; Sign flag == Overflow flag

The comparisons shown here are performed with signed integers.

• Example: destination < source mov al,-1

cmp al,5 ; Sign flag != Overflow flag

(18)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

18

Conditional Jumps Conditional Jumps

• Jumps Based On . . .

• Specific flags

• Equality

• Unsigned comparisons

• Signed Comparisons

• Applications

• Encrypting a String

• Bit Test (BT) Instruction

(19)

J J cond cond Instruction Instruction

• A conditional jump instruction branches to a label when specific register or flag conditions are met

• Examples:

• JB, JC jump to a label if the Carry flag is set

• JE, JZ jump to a label if the Zero flag is set

• JS jumps to a label if the Sign flag is set

• JNE, JNZ jump to a label if the Zero flag is clear

• JECXZ jumps to a label if ECX equals 0

(20)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

20

Jumps Based on Specific Flags

Jumps Based on Specific Flags

(21)

Jumps Based on Equality

Jumps Based on Equality

(22)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

22

Jumps Based on Unsigned Comparisons

Jumps Based on Unsigned Comparisons

(23)

Jumps Based on Signed Comparisons

Jumps Based on Signed Comparisons

(24)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

24

Applications

Applications (1 of 5) (1 of 5)

cmp eax,ebx ja Larger

• Task: Jump to a label if unsigned EAX is greater than EBX

• Solution: Use CMP, followed by JA

cmp eax,ebx jg Greater

• Task: Jump to a label if signed EAX is greater than EBX

• Solution: Use CMP, followed by JG

(25)

Applications

Applications (2 of 5) (2 of 5)

cmp eax,Val1

jbe L1 ; below or equal

• Jump to label L1 if unsigned EAX is less than or equal to Val1

cmp eax,Val1 jle L1

• Jump to label L1 if signed EAX is less than or equal to Val1

(26)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

26

Applications

Applications (3 of 5) (3 of 5)

mov Large,bx cmp ax,bx jna Next

mov Large,ax Next:

• Compare unsigned AX to BX, and copy the larger of the two into a variable named Large

mov Small,ax cmp bx,ax jnl Next

mov Small,bx Next:

• Compare signed AX to BX, and copy the smaller of the two

into a variable named Small

(27)

Applications

Applications (4 of 5) (4 of 5)

cmp WORD PTR [esi],0 je L1

• Jump to label L1 if the memory word pointed to by ESI equals Zero

test DWORD PTR [edi],1 jz L2

• Jump to label L2 if the doubleword in memory pointed to by

EDI is even

(28)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

28

Applications

Applications (5 of 5) (5 of 5)

and al,00001011b ; clear unwanted bits cmp al,00001011b ; check remaining bits

je L1 ; all set? jump to L1

• Task: Jump to label L1 if bits 0, 1, and 3 in AL are all set.

• Solution: Clear all bits except bits 0, 1,and 3. Then

compare the result with 00001011 binary.

(29)

Your turn . . . Your turn . . .

• Write code that jumps to label L1 if either bit 4, 5, or 6 is set in the BL register.

• Write code that jumps to label L1 if bits 4, 5, and 6 are all set in the BL register.

• Write code that jumps to label L2 if AL has even parity.

• Write code that jumps to label L3 if EAX is negative.

• Write code that jumps to label L4 if the expression

(EBX – ECX) is greater than zero.

(30)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

30

Encrypting a String Encrypting a String

KEY = 239 .data

buffer BYTE BUFMAX DUP(0) bufSize DWORD ?

.code

mov ecx,bufSize ; loop counter

mov esi,0 ; index 0 in buffer L1:

xor buffer[esi],KEY ; translate a byte inc esi ; point to next byte loop L1

The following loop uses the XOR instruction to transform every

character in a string into a new value.

(31)

String Encryption Program String Encryption Program

• Tasks:

• Input a message (string) from the user

• Encrypt the message

• Display the encrypted message

• Decrypt the message

• Display the decrypted message

View the Encrypt.asm program's source code. Sample output:

Enter the plain text: Attack at dawn.

Cipher text: «¢¢Äîä-Ä¢-ïÄÿü-Gs

(32)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

32

BT (Bit Test) Instruction BT (Bit Test) Instruction

• Copies bit n from an operand into the Carry flag

• Syntax: BT bitBase, n

• bitBase may be r/m16 or r/m32

• n may be r16, r32, or imm8

• Example: jump to label L1 if bit 9 is set in the AX register:

bt AX,9 ; CF = bit 9

jc L1 ; jump if Carry

參考文獻

相關文件

When salivary gland lesions appear as an exophytic lesion they are usually characterized by a dome-shaped or nodular mass with a smooth surface and fluctuant to firm in palpation

[T] he export or reexport of items subject to the EAR that will transit through a country or countries, or be transshipped in a country or countries to a new country, or are

85.36 A change to heading 85.36 from any other chapter; or if change in tariff classification requirement is not met, provided there is a regional value content of not less than

R andy, Jennifer, Maggie, and Dustin are sitting at a cafeteria and sharing ideas on what they want to do when they grow up.. Randy: “ I want to become a pilot when I

When we want to extend an operation from functions to distributions — e.g., when we want to define the Fourier transform of a distribution, or the reverse of distribution, or the

The new control is also similar to an R-format instruction, because we want to write the result of the ALU into a register (and thus MemtoReg = 0, RegWrite = 1) and of course we

• The SBB (subtract with borrow) instruction subtracts both a source operand and the value of the Carry flag both a source operand and the value of the Carry flag from a

The Sign flag is set when the destination operand is negative The flag is clear when the destination

First, in the Intel documentation, the encoding of the MOV instruction that moves an immediate word into a register is B8 +rw dw, where +rw indicates that a register code (0-7) is to

Second, a conditional jump instruction tests the flags and change the execution flow accordingly...

– The Parity flag is set when an instruction generates an even number of 1 bits in the low byte of the destination operand.. – The Auxiliary Carry flag is set when an

• A conditional jump instruction branches to a label when specific register or flag conditions are met.

 Calling program stores return address in a specific register.

In a nonparametric setting, we discuss identifiability of the conditional and un- conditional survival and hazard functions when the survival times are subject to dependent

Recycling Techniques are Available to Address Specific Pavement Distress and/or Pavement Structural Requirement.. Introduction to Asphalt Introduction

request even if the header is absent), O (optional), T (the header should be included in the request if a stream-based transport is used), C (the presence of the header depends on

„ Indicate the type and format of information included in the message body. „ Content-Length: the length of the message

Unlike the case of optimizing the micro-average F-measure, where cyclic optimization does not help, here the exact match ratio is slightly improved for most data sets.. 5.5

There is no general formula for counting the number of transitive binary relations on A... The poset A in the above example is not

For a directed graphical model, we need to specify the conditional probability distribution (CPD) at each node.. • If the variables are discrete, it can be represented as a

A system is said to be in stable equilibrium if, when displaced from equilibrium, it experiences a net force or torque in a direction opposite to the direction of the displacement..

The presentation or rebranding by a company of an established product in a new form, a new package or under a new label into a market not previously explored by that company..

When risk factors are high and protective factors are low, proximal risk factors. (or stressors) can interact with a person’s long term or underlying