Top Banner
1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine
50

1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

Dec 29, 2015

Download

Documents

Edgar Preston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1

Chapter 1: Basic Concepts

Assembly Language for

Intel-Based Computers,4th edition

Kip R. Irvine

Page 2: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

Introduction

1.1 Context of assembly language 1.2 Virtual Machine Concept 1.3 Data representation

– 1.3.1 Binary numbers– 1.3.2 Hexadecimal numbers– 1.3.3 Arithmetic

A. Introducing assembly language

Page 3: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.1 Context of assembly language:

Why study assembly language (ASM)? To learn how high-level language (HLL)

code gets translated into machine language

Assembly language: machine-specific language with a one-to-one correspondence with the machine language for that computer

Machine language: The language a particular processor understands

Page 4: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.1 Context of assembly language:

ExampleHigh-Level Language: 10 + 20;

Machine language: B8 000A83 C014

MOV AX, 10ADD AX, 20

Assembly Language:

Immediate operand

op code

Page 5: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

To learn the computer (i.e., architecture, hardware, operating system…)

by direct access to memory, video controller, sound card, keyboard…

by communicating with the operating system

To speed up applications

direct access to hardware (ex: writing directly to I/O ports instead of doing a system call)

good ASM code is faster and smaller

Avoid restrictions of high level languages

1.1 Context of assembly language:

Why study assembly language (ASM)?

Page 6: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.1 Context of assembly language:

Problems with assembly language

Provides no structure Is not portable Applications can be very long “Hard” to read and understand Lots of detail required

Page 7: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptVirtual Machines

Tanenbaum: Virtual machine concept Programming Language analogy:

– Each computer has a native machine language (language L0) that runs directly on its hardware

– A more human-friendly language is usually constructed above machine language, called Language L1

• Programs written in L1 can run two different ways:• Interpretation – L0 program interprets and executes L1

instructions one by one• Translation – L1 program is completely translated into an L0

program, which then runs on the computer hardware

Page 8: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptTranslating Languages

English: Display the sum of A times B plus C.

C++: cout << (A * B + C);

Assembly Language:

mov eax,Amul Badd eax,Ccall WriteInt

Intel Machine Language:

A1 00000000

F7 25 00000004

03 05 00000008

E8 00500000

Page 9: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptSpecific Machine Levels

(descriptions of individual levels follow . . . )

Page 10: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptHigh-Level Language

Level 5 Application-oriented languages

– C++, Java, Pascal, Visual Basic . . . Programs compile into assembly

language (Level 4)

Page 11: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptAssembly Language

Level 4 Instruction mnemonics that have a one-to-

one correspondence to machine language Calls functions written at the operating

system level (Level 3) Programs are translated into machine

language (Level 2)

Page 12: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptOperating System

Level 3 Provides services to Level 4 programs Translated and run at the instruction set

architecture level (Level 2)

Page 13: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptInstruction Set Architecture

Level 2 Also known as conventional

machine language Executed by Level 1

(microarchitecture) program

Page 14: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptMicroarchitecture

Level 1 Interprets conventional machine

instructions (Level 2) Executed by digital hardware

(Level 0)

Page 15: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.2 Virtual Machine ConceptDigital Logic

Level 0 CPU, constructed from digital logic gates System bus Memory Implemented using bipolar transistors

Page 16: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:

Binary Numbers Digital computers store information in binary Binary allows two states

– On yes true 1– Off no false 0

Each digit in a binary number is called a bit– MSB – most significant bit– LSB – least significant bit

0 1 1 0 1 0 0 0MSB

bit

LSB

Page 17: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:

Data types byte: 8 bits:

10010101

word: 16 bits or __ bytes:

1110101101100010

double word: __ bits or __ bytes :

11010110111001011101011011001011 quad word: __ bits or __ bytes:

0101111011010101110101001100101111110110110001011101011011001101

2

32 4

64 8

Page 18: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:

Range of a unsigned numberQuestion: What is the range of numbers that

can be represented with ?

121~0 1 123~0 2

1215~0 4 )12(~0 n

2 bits?

4 bits?

1 bit?

n bit?

Page 19: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:Integer Storage Sizes

Standard sizes:

Page 20: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:

Numbering Systems A number system of base n is a system that uses distinct symbols for n digits

Page 21: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A written number is meaningful only with respect to a base

1.3 Data representation:

Numbering Systems

To tell the assembler which base we use:

–Hexadecimal 25 is written as 25h

–Octal 25 is written as 25o or 25q

–Binary 1010 is written as 1010b

–Decimal 1010 is written as 1010 or 1010d

Page 22: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Data representation:

Number systems (bases) Number systems used

– Binary: The internal representation inside the computer. They may be represented in binary, octal, or hexadecimal.

– Decimal: The system people use. ASCII representations of numbers used for I/O:

– ASCII binary– ASCII octal– ASCII decimal– ASCII hexadecimal

Page 23: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

Format Value

ASCII binary "01000001"

ASCII decimal "65"

ASCII hexadecimal "41"

ASCII octal "101"

1.3 Data representation:

Number systems (bases) Example

Page 24: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Binary numbers:Addition & Multiplication

Binary multiplication * 0 1 0 0 0 1 0 1

Binary addition table + 0 1 0 0 1 1 1 10

Page 25: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Binary numbers:Addition & Multiplication Examples:

1001100b 1110b + 1101011b * 1101b

10110101b 111101b + 1101101b * 1111b

10110111 10110110

100100010 1110010011

Page 26: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Hexadecimal numbers:Addition & Multiplication Hex addition and multiplication tables are

largeWe can still do simple calculations by hand B852h 23Ah + 5A65h * 100h

ABCh 2B3h + E F 0 h * 102h

Page 27: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Converting to decimal Binary to Decimal 1010b =1 * 23 + 0 * 22 + 1 * 21 + 0*20

=10

Hex to Decimal ABCh = 10 * 162 + 11 * 161+ 12 * 160

= 10 * 256 + 11 * 16 + 12 * 1 = 2560 + 176 + 12

= 2748

Page 28: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Converting to decimal Octal to Decimal

256o = 2 * 82 + 5 * 81+ 6 * 80 =174

Conclusion:(Number)n

= (multiply each digit by an integer power of n)

Page 29: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion problems

1234 base 5

or (1234)5=_________

111010b = ________ 45677h = ________ 736.4o = ________

Page 30: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion from decimal Decimal integer to Binary

54 = 27 * 2+ 0

27 = 13 * 2 + 1

13 = 6 * 2 +1

1 1 0 1 1 0

remainderquotient

1 = 0 * 2 + 1

3 = 1 * 2 + 1

6 = 3 * 2 + 0

Page 31: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion from decimal Decimal integer to Hex :

Decimal integer to octal

54 = 6 * 8+ 6

6 = 0 * 8 + 6

6 6 o

54= 3 * 16 + 63 = 0 * 16 + 3

3 6 h

Page 32: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

Decimal fraction to Binary (Octal, Hex)

1.3 Arithmetic:

Conversion from decimal

(0. 6 8 7 5)102X1 . 3 7 5 0

2X

1 . 0 0 0 0

0 . 7 5 0 02X

1 . 5 0 0 02X

= (0.1011)2

0.1 0 1 1

integer

Page 33: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion from decimal Conclusion

a decimal integer to a base n representation successive division by n accumulation of the remainders

a decimal fraction to a base n representation successive multiplication by n accumulation of the integer digits

Page 34: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion problems

(1234)10=(________)2

(41.6875)10=(________)2

(1234)10=(________)8

(1234)10=(________)16

Page 35: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic: Conversions: hex, octal and binary Conversion between base 2 and base 8 = 23

111010b = 111 010 = 72o Conversion between base 2 and base 16 = 24

111010b = 11 1010 = 3Ah Note: we often write binary numbers in hex:

– binary numbers can be very long– it is easy to convert back and forth

Page 36: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Conversion problems Write ABCh in binary.

Write 101110100010100b in hex.

Write 101110100010100b in octal

Page 37: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Signed numbers Signed numbers: The number of bits must be

fixed. In every case, the highest bit is the sign bit.

0 means +

1 means -

Example:

Unsigned number: 1101b = 13

Signed number: 1101b = ?

Page 38: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Two’s complement 1101 b (signed binary number)

0010 b (reverse all bits)

+ 1 0011 b (unsigned value = 3)

- 3d =

One’s complement

Two’s complement

two’s complement of n = NOT(n) +1

reversible

Page 39: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Practice problems Find the 8 bit two’s complement

representation of -2Ch

Find the 8 bit two’s complement representation of 2Ch

What is decimal representation of the two’s complement number 11110100?

Page 40: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Range of signed numbers Two's complement: Sizes

Signed byte: -128 to +127 = 27 - 1 Signed word: -32,768 to +32,767 = 215 - 1Singed double word: -2,147,483,648 to +2,147,483,647 = 231 - 1

Comments:

• There is one more negative than positive value

• There are (about) half as many positive signed values as unsigned values

Page 41: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Addition & Subtraction (signed) Algorithm to add in signed decimal (sign and magnitude)

If both numbers have the same sign Add the two magnitudes Prefix with the common signelse Subtract the number with smaller magnitude from the number with the larger magnitude Prefix with the sign of the number with the larger magnitude.

Page 42: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Addition & Subtraction (signed)Two's complement:

1) add two numbers including their sign bits

2) discard any carry out of the sign position

Addition

+ 6 0 0 0 0 0 1 1 0+ 13 0 0 0 0 1 1 0 1

+ 19 0 0 0 1 0 0 1 1

Example:

- 19 1 1 1 0 1 1 0 1

- 6 1 1 1 1 1 0 1 0

- 13 1 1 1 1 0 0 1 1

Page 43: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Addition & Subtraction (signed)

Example:

6 0 0 0 0 0 1 1 0- 13

- 7 1 1 1 1 1 0 0 1

Subtraction

1) Take the 2’s complement of the subtrahend (including the sign bit)

2) Add it to the minuend (including the sign bit)

- 6 13 0 0 0 0 1 1 0 1

+ 7 0 0 0 0 0 1 1 1

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

Page 44: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

1.3 Arithmetic:

Character Storage Characters are stored as numbers Coding schemes

– ASCII (7 or 8 bit)– EBCDIC (8 bit)– Unicode (16 bit)

ASCII Examples:“A” = 65d = 41h “a” = 97d = 61h“B” = 66d = 42h “b” = 98d = 62h“0” = 48d = 30h “1” = 49d = 31h“ “ = 32d = 20h “*” = 42d = 2Ah

Page 45: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

MASM Installation

Insert CD in CD-Rom Go to Desktop, select My Computer Select CD-Rom directory (\IRVINE) Double click “index.html” On the new screen, follow the links, install

MASM615, sample program, link library etc.

Page 46: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

A simple Debug program

MOV AX, 10 ADD AX, 20 SUB AX, 5 MOV [130], AX INT 20

Store 10 into register AX

Terminate program

Assembler: converts programs from assembly language to machine language

Store AX in memory location 130h

Page 47: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

Running a Debug program Select Start | Programs (| Accessories) |MS-DOS (Command) Prompt Type Debug Type A 100, type the program, press return Type R (registers) to display the registers Type T (trace) as needed to step through program Type G (go) to execute the rest of program Type D 130 131 to display locations 130 and 131 Type Q (quit) to exit Debug

Page 48: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

Debug register display

Next instruction

Contents of AX (hex) -R

AX=0030 BX=0000 CX=0000 SP=FFEE ...DS=1FA6 ES=1FA6 SS=1FA6 CS=0106 ...1FA6:0106 2D0500 SUB AX, 0005

Page 49: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

Debug memory display

Contents oflocations 130 and 131.Namely 002Bh

-D 130 1311FA6:0130 2B 00

Note: The individual bytes in binary are reversed

when stored in memory

Example: 234567 would be stored in memory as 674523

Page 50: 1 Chapter 1: Basic Concepts Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.

A. Introducing Assembly Language:

Debug disassembly -U 100

1FA6:0100 B81000 MOV AX, 00101FA6:0103 052000 ADD AX, 00201FA6:0106 2D0500 SUB AX, 00051FA6:0109 A33001 MOV [0130],AX1FA6:010C CD20 INT 201FA6:010E 1F POP DS

Memory locations

Machinecode

Disassembled assembly code