Assembly Language for the 80X86/Pentium Intel Microprocessors
Download
Report
Transcript Assembly Language for the 80X86/Pentium Intel Microprocessors
ACOE251/AEEC335 -Assembly Language
for the 80X86/Pentium
Intel Microprocessors
Lecturer: Dr. Konstantinos Tatas
ACOE251
1
Useful Information
• Instructor: Lecturer K. Tatas
–
–
–
–
•
•
•
•
FRC building room 107 (subject to change)
Office hours: TBA
E-mail: [email protected]
http://staff.fit.ac.cy/com.tk
Prerequisites: ACOE161, ACSC182 (CoE)
Prerequisites: AEEE203, AEEE200 (EE)
Lectures/week: 3
ECTS: 5
ACOE251
2
COURSE OBJECTIVES
• introduce students to assembly language
programming.
• By the end of the course students should be able to
– write, test and debug programs in x86 assembly
language using assembler, debug and emulation
software
– relate x86 assembly language with other processor
assembly languages and high level languages.
ACOE251
3
Course Outline
• Introduction to Assembly Language: Computer organization –
Number and character representation - IBM PC programming
model
• Directives - The MOV instruction – addressing modes
• Arithmetic instructions
• Logic, shift and rotate instructions
• Interrupts, DOS and BIOS
• The processor status and flags register
• Flow control instructions
• The stack - introduction to procedures
• Software constructs
• Arrays - addressing modes revisited
ACOE251
4
Course Evaluation
• Exam: 60%
• Coursework: 40%
– Test: 20%
– Assignment 20%
ACOE251
5
Course pre-requisites
Digital Logic, Computer Programming
• Gates, flip-flops, truth tables, timing diagrams, etc.
– Computer number systems
• decimal, hexadecimal, binary, octal
• conversions, logical operations, computer arithmetic
– Computer data formats
• ASCII, BCD
ACOE251
6
ASSEMBLY LANGUAGE
• One-to-one relationship with machine language
unlike high-level languages
– Many lines of code even for simple programmes
• Requires at least some knowledge of the
microprocessor architecture, memory structure
and operating system
• Code not portable (source files will not run on a
different architecture microprocessor)
ACOE251
7
Why Learn/Use Assembly Language
• Efficient use of the main memory
– Less memory required
– Programs execute faster
• Avoid redundant instructions inserted by compilers.
• Direct access to the hardware of the computer,
– Usually not supported by compilers.
• Access to the microprocessor’s internal control registers.
• For some processors such as DSP and micro-controllers
there is no (or limited) support by high level languages
• Embedded systems have tight constraints on performance,
memory size and power consumption
ACOE251
8
Revision on Basic Computer Architecture
CPU
PERIPHERAL
DEVICES
REGISTERS
ROM
ALU
RAM
I/P
PORTS
O/P
PORTS
I/O INTERFACE
UNIT
MAIN MEMORY
ADDRESS BUS
CONTROL
UNIT
DATA BUS
CONTROL BUS
ACOE251
9
Revision on Numbering Systems
• Decimal - Binary - Hex conversion
• Signed Numbers
– Signed Magnitude – One’s Complement –Two’s Complement
– Hex signed numbers: 15’s and 16’s Complement
• Arithmetic Operations
– Binary: Addition – Subtraction – Multiplication – Division
– Hex: Addition – Subtraction – Multiplication – Division
• Logic Operations on bit vectors
– AND, OR, XOR, NOT
• Ranges:
–
–
–
–
Unsigned byte: 0 to 255
Signed byte: -128 to +127
Unsigned word: 0 to 65,536
Signed word: -32,768 to +32,767
Unsigned doubleword: 0 to 4,294,967,295
Unsigned quadword: 0 to 18,446,744,073,709,551,615
ACOE251
10
Conversion between number systems
•
•
•
•
•
•
A.
B.
C.
D.
E.
F.
ACOE251
Binary to Decimal
Decimal to Binary
Hexadecimal to Decimal
Decimal to Hexadecimal
Binary to Hex
Hex to Binary
11
Number Conversion
• Decimal to Binary
25 to binary: Quotient | Remainder
25 / 2
12
1 LSB (Least Significant Bit)
12 / 2
6
0
6/ 2
3/ 2
3
1
0
1
1/ 2
0
1 MSB (Most Significant Bit)
ACOE251
12
Number Conversion II
• Binary to Decimal
1101012
Decimal
1 20
1 1
1
0 21
0 2
0
1 2 2
1 4
4
0 23
08
0
1 2 4
1 16
16
1 25
1 32
32
53
ACOE251
13
Hexadecimal System
•
•
•
•
Hexadecimal System – Base 16
Used for representing binary numbers
Example: 100010010110 in hex is 896H
The hex system has 16 digits: 0 – 9, A, B, C, D, E and F.
ACOE251
14
Decimal, Binary and Hex
Decimal Binary HEX
ACOE251
Decimal Binary HEX
0
0000
0
8
1000
8
1
0001
1
9
1001
9
2
0010
2
10
1010
A
3
0011
3
11
1011
B
4
0100
4
12
1100
C
5
0101
5
13
1101
D
6
0110
6
14
1110
E
7
0111
7
15
1111
F
15
Number Conversion III
• Binary to Hex:
– Start from the right and group 4 bits at a time.
– Replace each 4-bit binary number with its hex equivalent.
• Example: 100111110101 to hex
– Group bits: 1001 1111 0101
– Replace hex: 9
F
5
• Therefore: 100111110101 = 9F5 in hex.
ACOE251
16
Number Conversion IV
• Hex to Binary:
– Each hex digit is replaced with its 4-bit equivalent.
– Leading zeros are dropped.
• Example: 29B to binary
– 2
9
B
– 0010 1001 1011
• 29B = 100011011 (dropping leading zeroes)
ACOE251
17
ACOE251
18
Representing Positive and Negative Numbers in Hex
• Positive numbers - straight conversion to hex
• Negative numbers are stored in two's complement form
• To get the two's complement form of a number in hex:
– First:
– Second:
– Third:
Represent the number as if it were positive
Subtract it from FF(byte) or FFFF(word)
Add 1
• Examples:
-97 as a word is FFFF
-0061
FF9E
+ 1
FF9F = -97
-97 as a byte is FF
-61
9E
+1
9F = - 97
ACOE251
19
Interpreting Signed and Unsigned Bytes and
Words in Memory as Decimal Numbers
• Unsigned
– Straight translation from binary or hex to decimal
• Signed numbers
– First determine the sign of the number by looking at its MSB. If its 0, its
positive and you can do a straight translation from binary or hex to
decimal
– If its MSB is a 1, its negative and you must Re-complement it!
– Since everything you see in memory will be expressed in hexadecimal,
you won't "see" the MSB. Instead, you will see a hex digit. Therefore, if
the first hex digit of a signed word or a byte is 0 to 7, the number is
positive. If the first hex digit of a signed word or a byte is 8 to F, the
number is negative. Why?
ACOE251
20
Homework - Number System Review
Conversion:
1. Convert from decimal to binary
a. 43
b. 167
2. Convert from binary to decimal
a. 1101100b
b. 1100011b
3. Convert from decimal to hexadecimal
a. 6242
b. 12321
4. Convert from hexadecimal to decimal
a. 4BFh
b. A2F7h
5. Convert from binary to hexadecimal
a. 110010011110b
b. 100001011b
6. Convert from hexadecimal to binary
a. FADh
b. 265Ch
ACOE251
c. BE98h
21
Character Representation
• Code chosen for IBM PC is the ASCII code
– 7 bit code
– 27 or 128 possible values
– stored in a byte
• 95 ASCII codes are printable (32 to 126)
• 0 to 31 and 127 are used for control purposes
• IBM PC uses an extended character set using an 8 bit code thus
in can represent 28 or 256 possible values
• ASCII keyboard
– Each key pressed is stored in ASCII code
– Today on IBM PC, each key is assigned a unique number called a scan
code to handle the many control and function keys in addition to the
ASCII character keys
ACOE251
22
ASCII Codes - Printable Characters
20 Space
21 !
22 ”
23 #
24 $
25 %
26 &
27 ’
28 (
29 )
2A *
2B +
2C ,
2D 2E .
2F /
ACOE251
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
Del
23
Examples
• How many bytes are required to represent the
following data:
–
–
–
–
–
–
–
Unsigned number 92d
Unsigned number 313d
Signed number +212d
Unsigned number 100100101b
72H
2A4H
HAVE A NICE DAY
• Represent the above data in hexadecimal form
ACOE251
24
Homework: Data Representations Set 1
Problems
Note: Express all answers to problems 1-9 in HEXADECIMAL
1. How do you represent 221 as an unsigned byte? ___________
2. How do you represent 110 as a signed byte? ___________
3. How do you represent -92 as a signed byte? ___________
4. How do you represent 62385 as an unsigned word? _______
5. How do you represent 1600 as a signed word? ___________
6. How do you represent -160 as a signed word? _________
7. How do you represent +7523 as a character string?_________
8. How do you represent -612 as a character string? _______
9. How do you represent OOPS! as a character string? _______
ACOE251
25