0% found this document useful (0 votes)
54 views16 pages

Microprocessor and Interfacing Techniques: Lecture # 05

The document discusses various instructions used for input/output (I/O) operations and arithmetic/logic operations in microprocessors. It covers I/O instructions like IN and OUT that transfer data between registers and I/O devices. It also discusses fixed-port and variable-port addressing for I/O devices. Additionally, it describes different arithmetic/logic instructions like ADD, SUB, MUL, DIV, INC, DEC and how they affect flags in the flags register. An assignment is given to write assembly code to generate a table of values using these instructions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views16 pages

Microprocessor and Interfacing Techniques: Lecture # 05

The document discusses various instructions used for input/output (I/O) operations and arithmetic/logic operations in microprocessors. It covers I/O instructions like IN and OUT that transfer data between registers and I/O devices. It also discusses fixed-port and variable-port addressing for I/O devices. Additionally, it describes different arithmetic/logic instructions like ADD, SUB, MUL, DIV, INC, DEC and how they affect flags in the flags register. An assignment is given to write assembly code to generate a table of values using these instructions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Microprocessor and

Interfacing techniques

Lecture # 05 1
IN and OUT
• IN & OUT instructions perform I/O operations.
• Contents of AL, AX, or EAX are transferred only
between I/O device and microprocessor.
• an IN instruction transfers data from an external
I/O device into AL, AX, or EAX
• an OUT transfers data from AL, AX, or EAX to an
external I/O device
• Only the 80386 and above contain EAX
2
• Often, instructions are stored in ROM.
• a fixed-port instruction stored in ROM has its port
number permanently fixed because of the nature
of read-only memory
• A fixed-port address stored in RAM can be modified,
but such a modification does not conform to good
programming practices.
• The port address appears on the address bus during
an I/O operation.

3
• Two forms of I/O device (port) addressing:
• Fixed-port addressing allows data transfer between AL,
AX, or EAX using an 8-bit I/O port address.
• port number follows the instruction’s opcode
• IN instruction syntax:
IN AL,port address; AL or AX can be
used only.
• Variable-port addressing allows data transfers between
AL, AX, or EAX and a 16-bit port address.
• IN AL,DX; only DX can be used here
• the I/O port number is stored in register DX,
which can be changed (varied) during the execution of
a program. 4
Arithmetic and Logic
Instructions
• Most arithmetic instructions affect the FLAGS register.
• Carry Flag (C)
• Zero Flag (Z)
• Sign Flag (S)
• Overflow Flag (O)
• Parity Flag (P)
• Interrupt enable Flag (I)
• Direction Flag (D)
• Auxiliary Flag (A)

5
1st group: ADD, SUB,CMP, AND, TEST, OR, XOR

• These types of operands are supported:


• REG, memory
• memory, REG
• REG, REG
• memory, immediate
• REG, immediate
• REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP,
SP.
• memory: [BX], [BX+SI+7], variable, etc.
• immediate: 5, -24, 3Fh, 10001101b, etc.

6
ADD, SUB,CMP, AND, TEST, OR, XOR (cont)

• After operation between operands, result is always stored in


first operand. CMP and TEST instructions affect flags only and
do not store a result (these instruction are used to make
decisions during program execution).
• These instructions affect these flags only:
• C ,Z, S, O, P, A

7
ADD, SUB,CMP, AND, TEST, OR, XOR (cont)

• ADD - add second operand to the first.


• SUB - Subtract second operand from the first.
• CMP - Subtract second operand from first for flags only.
• AND - Logical AND between all bits of two operands.
• TEST - The same as AND but for flags only.
• OR - Logical OR between all bits of two operands.
• XOR - Logical XOR (exclusive OR) between all bits of two
operands.

8
More About AND, OR, XOR
• AND operator gives 1 only if both operands are 1.
• OR operator gives 1 if at least one operand is 1.
• XOR operator gives 1 only if the operands are different.

9
2nd Group: MUL, IMUL, DIV,
IDIV
• These types of operands are supported:
• REG
• Memory
• REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.
• memory: [BX], [BX+SI+7], variable, etc.
• MUL and IMUL instructions affect these flags only:
• C, O
• When result is over operand size these flags are set to 1, when
result fits in operand size these flags are set to 0.

10
MUL and IMUL
• MUL - Unsigned multiply
• When operand is a byte: AX = AL * operand.
• When operand is a word: (DX AX) = AX * operand.
• IMUL - Signed multiply
• When operand is a byte: AX = AL * operand.
• When operand is a word: (DX AX) = AX * operand.

11
DIV and IDIV
• DIV - Unsigned divide
• When operand is a byte:
• AL = AX / operand and AH = remainder (modulus).
• When operand is a word:
• AX = (DX AX) / operand and DX = remainder (modulus)
• IDIV - Signed divide
• When operand is a byte:
• AL = AX / operand and AH = remainder (modulus)
• When operand is a word:
• AX = (DX AX) / operand and DX = remainder (modulus)

12
3rd Group: INC, DEC, NOT, NEG
• These types of operands are supported:
• REG
• Memory
• REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.
• memory: [BX], [BX+SI+7], variable, etc.

13
INC and DEC
• INC: Increments the operand by 1.
• DEC: Decrements the operand by 1.
• INC, DEC instructions affect these flags only:
• Z, S, O, P, A

14
NOT and NEG
• NOT - Reverse each bit of operand.
• NEG - Make operand negative (two's complement). Actually it
reverses each bit of operand and then adds 1 to it. For
example 5 will become -5, and -2 will become 2
• NOT instruction does not affect any flags.
• NEG instruction affects these flags only:
• C, Z, S, O, P, A

15
Assignment
• Write a code in assembly language of 8086 to generate a table
of 4 and save a the values in some memory location.

16

You might also like