Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Introduction Chapter 1 n What is Assembly Language? n Data Representation.

Similar presentations


Presentation on theme: "1 Introduction Chapter 1 n What is Assembly Language? n Data Representation."— Presentation transcript:

1 1 Introduction Chapter 1 n What is Assembly Language? n Data Representation

2 2 What is Assembly Language? n A low-level processor- specific programming language design to match the processor’s machine instruction set n each assembly language instruction matches exactly one machine language instruction n we study here Intel’s 80x86 (and Pentiums)

3 3 Why learn Assembly Language? n To learn how high-level language code gets translated into machine language u ie: to learn the details hidden in HLL code n To learn the computer’s hardware u by direct access to memory, video controller, sound card, keyboard… n To speed up applications u direct access to hardware (ex: writing directly to I/O ports instead of doing a system call) u good ASM code is faster and smaller: rewrite in ASM the critical areas of code

4 4 Assembly Language Applications n Application programs are rarely written completely in assembly language u only time-critical parts are written in ASM F Ex: an interface subroutine (called from HLL programs) is written in ASM for direct hardware access F Ex2: device drivers (called from the OS) n ASM often used for embedded systems programs stored in PROM chips F computer cartridge games, microcontrollers (automobiles, industrial plants...), telecommunication equipment… n Very fast and compact but processor-specific

5 5 Machine Language n An assembler is a program that converts ASM code into machine language code:  mov al,5 (Assembly Language) u 1011000000000101 (Machine Language) F most significant byte is the opcode for “move into register AL” F the least significant byte is for the operand “5” n Directly programming in machine language offers no advantage (over Assembly)...

6 6 Binary Numbers n are used to store both code and data n On Intel’s x86: u byte = 8 bits (smallest addressable unit) u word = 2 bytes u doubleword = 2 words u quadword = 2 doublewords

7 7 Number Systems n A written number is meaningful only with respect to a base n To tell the assembler which base we use: u Hexadecimal 25 is written as 25h u Octal 25 is written as 25o or 25q u Binary 1010 is written as 1010b u Decimal 1010 is written as 1010 or 1010d n You are supposed to know how to convert from one base to another (see appendix A)

8 8 Data Representation n Even if we know that a block of memory contains data, to obtain its value we need to choose an interpretation n Ex: memory content 0100 0001 can either represent: u the number 2^{6} + 1 = 65 u or the ASCII code of character “A”

9 9 Signed and Unsigned Interpretation n When a memory block contains a number, to obtain its value we must choose either: u the signed interpretation: in that case the most significant bit (msb) represents the sign F Positive number (or zero) if msb = 0 F Negative number if msb = 1 u the unsigned interpretation: in that case all the bits are used to represent a magnitude (ie: positive number, or zero)

10 10 Twos Complement Notation n Used to represent negative numbers n The twos complement of a positive number X, denoted by NEG(X), is obtained by complementing all its bits and adding +1 n NEG(X) = NOT(X) + 1 u Ex: NEG(10) = NOT(10) + 1 u = NOT(0000 1010b) + 1 u = (1111 0101b) + 1 = 1111 0110b = NEG(10) = -10 n It follows that X + NEG(X) = 0 n To perform the difference X - Y: u the machine executes the addition X + NEG(Y)

11 11 Maximum and Minimum Values n The msb of a signed number is used for its sign u fewer bits are left for its magnitude n Ex: for a signed byte u smallest positive = 0000 0000b u largest positive = 0111 1111b = 127 u largest negative = -1 = 1111 1111b u smallest negative = 1000 0000b = -128

12 12 Signed/Unsigned Interpretation (again) n To obtain the value of a number we need to chose an interpretation n Ex: memory content 1111 1111 can either represent: u -1 if a signed interpretation is used u 255 if an unsigned interpretation is used n Only the programmer can provide an interpretation of the content of memory

13 13 Character Representation n Each character is represented by a 7-bit code: the ASCII code (from 00h to 7Fh) u Only codes from 20h to 7Eh represent printable characters. The rest are control codes (used for printing, transmission…). n An extended character set is obtained by setting the msb to 1 (codes 80h to FFh) so that each character is stored in 1 byte u Varies from one system to another F MS-DOS usage: for accentuated characters, Greek symbols and some graphic characters

14 14 The ASCII character set n CR = “carriage return” (MSDOS: move to beginning of line) n LF = “line feed” (MSDOS: move directly one line below) n SPC = “blank space”

15 15 Text Files n These are files containing only ASCII characters n But different conventions are used for indicating an “end-of line” u MS-DOS: + u UNIX: u MAC: n This is at the origin of many problems encountered during transfers of text files from one system to another

16 16 Strings and numbers n A strings is stored as an array of characters n A 1-byte ASCII code is stored for each char n Hence, we can either store the number 123 in numerical form or as the string “123” u The string form is best for display u The numerical form is best for computations


Download ppt "1 Introduction Chapter 1 n What is Assembly Language? n Data Representation."

Similar presentations


Ads by Google