1 x86’s instruction sets. 2 Instruction Set Classification  Transfer Move  Arithmetic Add / Subtract Mul / Div, etc.  Control Jump Call / Return, etc.

Slides:



Advertisements
Similar presentations
Instruction Set of 8086 Engr. M.Zakir Shaikh
Advertisements

Department of Computer Science and Software Engineering
ACOE2511 Assembly Language Arithmetic and Logic Instructions.
Assembly Language Lecture 9
80x86 Instruction Set Dr. Qiang Lin.
Web siteWeb site ExamplesExamples Irvine, Kip R. Assembly Language for Intel-Based Computers, MUL Instruction The MUL (unsigned multiply) instruction.
Gursharan Singh Tatla 21-Nov-20101www.eazynotes.com.
8086 : INSTRUCTION SET By, Pramod Sunagar Assistant Professor
© 2006 Pearson Education, Upper Saddle River, NJ All Rights Reserved.Brey: The Intel Microprocessors, 7e Chapter 5 Arithmetic and Logic Instructions.
9-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL x86 Instructions Part.
Shift and Rotate Instructions
Chapter 4 Basic Instructions. 4.1 Copying Data mov Instructions mov (“move”) instructions are really copy instructions, like simple assignment statements.
Assembly Language – Lab 5
Khaled A. Al-Utaibi  Introduction  Arithmetic Instructions  Basic Logical Instructions  Shift Instructions  Rotate Instructions.
Flag Control instructions CLC clear carry flag CF = 0 STC set carry flag CF= 1 CMC complement carry flag [CF] CF.
ASCII and BCD Arithmetic Chapter 11 S. Dandamudi.
Chapter four – The 80x86 Instruction Set Principles of Microcomputers 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 2015年10月19日 1 Chapter.
Multiplication and Division Instructions & the 0Ah function.
Copyright 2000ELEC 242 Arithmetic Instructions1 Arithmetic Instructions Arithmetic and logical instructions modify the contents of the Flag (Status) register.
Arithmetic Flags and Instructions
Computer Architecture and Operating Systems CS 3230 :Assembly Section Lecture 4 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. 05.b: Arithmetic Operations Sumber: 1. Paul Carter, PC Assembly Language 2. Hamacher. Computer Organization,
3.4 Addressing modes Specify the operand to be used. To generate an address, a segment register is used also. Immediate addressing: the operand is a number.
Microprocessor MA Rahim Khan Computer Engineering and Networks Department.
Chapter 7: Integer Arithmetic. 2 Chapter Overview Shift and Rotate Instructions Shift and Rotate Applications Multiplication and Division Instructions.
Arithmetic Flags and Instructions Chapter 7 S. Dandamudi.
Irvine, Kip R. Assembly Language for Intel-Based Computers. Chapter 7: Integer Arithmetic Slides to Accompany Assembly Language for Intel-Based Computers,
Introduction to Microprocessors Chapter 3. Programming Model (8086)  Shows the various internal registers that are accessible to the programmer.
The Assemble, Unassemble commands of the debugger: U Command for converting machine code language source Equivalent machine code instructions Equivalent.
Introduction Arithmetic instructions are used to perform arithmetic operation such as Addition Subtraction Multiplication Division These operations can.
Microprocessor & Assembly Language Arithmetic and logical Instructions.
Internal Programming Architecture or Model
Multiplication and Division instructions Dr.Hadi AL Saadi.
I NTEL 8086 M icroprocessor بسم الله الرحمن الرحيم 1.
Chapter Nov-2010
Data Transfers, Addressing, and Arithmetic
Microprocessor Systems Design I
16.317: Microprocessor System Design I
Assembly Language for Intel-Based Computers, 5th Edition
8086 Microprocessor.
Today we are going to discuss about,
Microprocessor and Assembly Language
Microprocessor Systems Design I
EE3541 Introduction to Microprocessors
Multiplication and Division Instructions
INSTRUCTION SET.
Assembly Language Programming Part 2
4.2 Arithmetic Instructions
INSTRUCTION SET OF 8086 PAWAN KUMAR SINGH.
CS 301 Fall 2002 Assembly Instructions
X86’s instruction sets.
Chapter 4: Instructions
Morgan Kaufmann Publishers Computer Organization and Assembly Language
CS-401 Computer Architecture & Assembly Language Programming
اصول اساسی برنامه نویسی به زبان اسمبلی
Data formats or Instruction formats of 8086:
Multiplication and Division Instructions
ADDITION Register Addition. ADD AX,BX AX=AX+BX 2. Immediate Addition.
Assembly Language for Intel-Based Computers, 4th Edition
Assembly Language for Intel-Based Computers, 5th Edition
University of Gujrat Department of Computer Science
Computer Architecture and System Programming Laboratory
Chapter 5 Arithmetic and Logic Instructions
UNIT-II Assembly Language Programs Involving Logical
CNET 315 Microprocessor & Assembly Language
Multiplication and Division Instructions
Multiplication and Division Instructions
Chapter 8: Instruction Set 8086 CPU Architecture
Computer Architecture and Assembly Language
Presentation transcript:

1 x86’s instruction sets

2 Instruction Set Classification  Transfer Move  Arithmetic Add / Subtract Mul / Div, etc.  Control Jump Call / Return, etc.

3 Data transfer : Move  MOV Dest, Src MOV reg, regreg <- reg MOV reg, memreg <- mem MOV mem, regmem <- reg MOV reg, immreg <- imm MOV mem, immmem <- imm  There is no move mem<-mem instruction.

4 Move limitation  Both operand must be in the same size.  There is no instruction to put immediate value directly to segment register. Have to use accumulator (AX) to accomplish this.  To put immediate value directly to memory, we have to specify its size. (Byte/Word PTR)

5 Move (MOV) Example  MOV AX,100h  MOV BX,AX  MOV DX,BX  MOV AX,1234h  MOV DX,5678h  MOV AL,DL  MOV BH,DH

6 MOV Example  MOV AX,1000h  MOV [100h],AX  MOV BX,[100h]  MOV BYTE PTR [200h],10h  MOV WORD PTR [300h],10h  MOV AX,2300h  MOV DS,AX

7 MOV : 16 / 8 Bit register  To move value between registers, their size must be the same.

8 MOV : Memory  Given only offset where to put value, it will be automatically select DS as the segment register.

9 Byte ordering : Little endian  Since, x86’s byte ordering is little endian.  Therefore, the LSB will be placed at lowest address and MSB will be placed at highest address.

10 Displacement  We can use BX (Base) register to point a place of memory.  Both register direct or displacement.  AX = ?

11 What is the result of …  MOV [100h], 10h  Address 100 = 10h  What about address 101?  Word or Byte? MOV WORD PTR [100h], 10h MOV BYTE PTR [100h], 10h  What about MOV [100h], AX ?

12 Status Register (Flag)

13 Flag  8086 has 16 bit flag to indicate the status of final arithmetic result.

14 Zero Flag  The zero flag will be set (1) whenever the result is zero.

15 Parity flag  The parity flag will be set whenever the number of bit “1” are even.

16 Carry flag  Carry flag will be set whenever there is a carry or borrow (only with unsigned operation).

17 Overflow flag  Overflow flag will be set whenever the result is overflow (with signed operation).

18 Sign flag  Sign flag will be set whenever the result is negative with signed operation.

19 More flag  Auxiliary flag will be set when the result of BCD operation need to be adjusted.  Direction flag is used to specify direction (increment/decrement index register) in string operation.  Trap flag is used to interrupt CPU after each operation.  Interrupt flag is used to enable/disable hardware interrupt.

20 Flag set/reset instructions  Carry flagSTC / CLC  Direction flagSTD / CLD  Interrupt flagSTI / CLI

21 Arithmetic instructions

22 Increment - Decrement  INC / DEC INC registerDEC register INC memoryDEC memory  EX. INC AX DEC BL How can we increment a byte of memory?  INC ??? [100]

23 Add  ADD reg, immADC reg, imm  ADD reg, memADC reg, mem  ADD reg, regADC reg, reg  ADD mem, immADC mem, imm  ADD mem, regADC mem, reg

24 EX. ADD  MOV AL, 10h  ADD AL, 20h;AL = 30h  MOV BX, 200h;BX = 0200h  MOV WORD PTR [BX], 10h  ADD WORD PTR [BX], 70h  MOV AH, 89h;AX = 8930h  ADD AX, 9876h;AX = 21A6h  ADC BX, 01h;BX = 0202h ?

25 Subtract  SUB reg, immSBB reg, imm  SUB reg, memSBB reg, mem  SUB reg, regSBB reg, reg  SUB mem, immSBB mem, imm  SUB mem, regSBB mem, reg

26 Ex. SUB  MOV AL, 10h  ADD AL, 20h;AL = 30h  MOV BX, 200h;BX = 0200h  MOV WORD PTR [BX], 10h  SUB WORD PTR [BX], 70h  MOV AH, 89h;AX = 8930h  SBB AX, 0001h;AX = 892Eh ?  SBB AX, 0001h;AX = 892Dh

27 Compare  CMP reg, imm  CMP reg, mem  CMP reg, reg  CMP mem, reg  There is no “CMP mem, imm”

28 Ex. CMP  MOV CX, 10h  CMP CX, 20h;Z=0,S=1,C=1,O=0  MOV BX, 40h  CMP BX, 40h;Z=1,S=0,C=0,O=0  MOV AX, 30h  CMP AX, 20h;Z=0,S=0,C=0,O=0

29 Negation  Compute 2’complement.  Carry flag always set.  Usage NEG reg NEG mem

30 Ex. NEG  MOV CX, 10h  NEG CX; CX = 0FFF0h  MOV AX,0FFFFH  NEG AX; AX = 1  MOV BX,1H  NEG BX; BX = 0FFFFh

31 Multiplication  IMUL (Integer multiplication) unsigned multiplication  MUL (Multiplication) signed multiplication. MUL regIMUL reg MUL memIMUL mem  Always perform with accumulator.  Effected flag are only over and carry flag.

32 8 bit multiplication  AL is multiplicand  AX keep the result  MOV AL,10h; AL = 10h  MOV CL,13h; CL = 13h  IMUL CL; AX = 0130h

33 16 bit multiplication  AX is multiplicand  DX:AX keep the result  MOV AX,0100h; AX = 0100h  MOV BX,1234h; BX = 1234h  IMUL BX; DX = 0012h ; AX = 3400h

34 Division  IDIV (Integer division) unsigned division.  DIV (Division) signed division. DIV regIDIV reg DIV memIDIV mem  Always perform with accumulator.  Effected flag are only over and carry flag.

35 8 bit division  AL is dividend  AL keep the result  AH keep the remainder  MOV AX, 0017h  MOV BX, 0010h  DIV BL; AX = 0701

36 16 bit multiplication  DX:AX dividend.  AX keep the result, DX keep the remainder.  MOV AX,4022h;  MOV DX,0000h;  MOV CX,1000h;  DIV CX;AX = 0004 ;DX = 0022

37 Conversion  Byte to Word : CBW Signed convert AL -> AX  Word to Double word : CWD Signed convert AX -> DX:AX

38 Ex. Conversion  MOV AL,22h  CBW; AX=0022h  MOV AL,F0h  CBW; AX=FFF0h  MOV AX, 3422h  CWD; DX=0000h ; AX=3422h

39

40 Example about flag with arithmetic  เอกสารอ้างอิง เอกสารประกอบการสอนวิชา องค์ประกอบคอมพิวเตอร์และ ภาษาแอสเซมบลี้ มหาวิทยาลัยเกษตรศาสตร์, 1994

41 Example about flag with arithmetic NEG -> Carry flag always 1, INC/DEC does not effect any flag

42 Jump and Loops  Control structures Selection Repetition / Loop  Jxx Label

43

44

45

46 If ah=10, if ah>=10

47 Get ‘Q’ and Print ASCII code.

48 Loop  Base on CX (Counter register) to count the loop.  Instructions : LOOP; Dec CX … 0 LOOPZ;CX<>0 and Z=1 LOOPNZ;CX<>0 and Z=0 JCXZ; Jump if CX=0, used with LOOP to determine the CX before loop.

49 LOOP

50 JCXZ

51 Example finding first character

52 That’s all.