Assembler Programming. Lecture 8
|
|
- Patrick Marvin Morrison
- 6 years ago
- Views:
Transcription
1 Assembler Programming Lecture 8
2 Lecture 8 Decision directives. Loops. Text macros. Macro procedures. String directives. Macro functions.
3 Decision directives You can use the HLL structures for decision making:.if.elseif.else These directives generate conditional jumps..if.if condition1 statements [[.ELSEIF condition2 statements]] [[.ELSE statements]].endif
4 Decision directives example.if.if cx cx == == mov mov dx, dx, ELSE mov mov dx, dx, ENDIF.IF.IF cx cx == == cmp cmp cx, cx, 014h jne mov mov dx, dx, mov mov dx, dx, 30
5 Loops LOOP ends when CX = 0. LOOPE / LOOPZ checks CX and the zero flag, ends when CX = 0 or ZF = 0. LOOPNE / LOOPNZ checks CX and the zero flag, ends when CX = 0 or ZF = 1. All loop instructions automatically decrement CX. JCXZ jumps to a label if CX = 0. JECXZ jumps to a label if ECX = 0.
6 Loop example ; The The LOOP instruction: For For to to 0 do do task mov mov cx, cx, ; Set Set counter next:. ; Do Do the the task here.. loop next ; Do Do again ; Continue after loop ; The The LOOPNE instruction: While AX AX is is not not 'Y', do do task mov mov cx, cx, ; Set Set count too too high to to interfere wend:. ; But But don't do do more than times. ; Some statements that change AX AX. cmp cmp al, al, 'Y' 'Y' ; Is Is it it Y or or too too many times? loopne wend ; No? No? Repeat ; Yes? Continue
7 Loop example ; Decrements CX CX on on the the first pass even if if it s zero mov mov cx, cx, LoopCount ; Load loop counter next:. ; Iterate loop CX CX times.. loop next ; Do Do again ; If If CX CX is is zero skips the the loop mov mov cx, cx, LoopCount ; Load loop counter jcxz done ; Skip loop if if count is is 0 next:. ; Else iterate loop CX CX times.. loop next ; Do Do again done: ; Continue after loop
8 Loop generating directives.while....endw Execute statements while the condition is true..repeat....until Loop executes at least once and continues until the condition given after.until is true. Uses jumps..repeat....untilcxz Same as previous but generates loop instructions..break Ends loop unconditionally.continue Jump unconditionally past any remaining code to bottom of loop
9 Loop directives example.data buf1 BYTE "This is is a string",'$' buf2 BYTE DUP DUP (?) (?).CODE sub sub bx, bx, bx bx ; Zero out out bx bx.while (buf1[bx]!=!= '$') mov mov al, al, buf1[bx] ; Get Get a character mov mov buf2[bx], al al ; Move it it to to buffer 2 inc inc bx bx ; Count forward.endw
10 Loop directives example ASSUME bx:ptr inc inc ax ax.until ax==6 cmp cmp ax, ax, 006h mov mov ax, ax, [bx].field!=!= 6 cmp cmp [bx].field, 006h
11 Loop directives example.while 1 ; Loop forever mov mov ah, ah, 08h 08h ; Get Get key key without echo int int 21h 21h ; DOS DOS function.break.if.if al al == == ; If If ENTER, break out out of of the the loop.continue.if.if (al (al < '0') (al (al > '9') ; If If not not a digit, continue loop mov mov dl, dl, al al ; Save the the char for for processing mov mov ah, ah, 02h 02h ; Output the the character int int 21h 21h ; DOS DOS function.endw
12 Loop directives example.while mov mov ah, ah, 08h 08h int int 21h 21h.BREAK.IF.IF al al == == cmp cmp al, al, 00Dh je (al (al '0') (al (al '9') cmp cmp al, al, '0' '0' jb cmp cmp al, al, '9' '9' ja mov mov dl, dl, al al mov mov ah, ah, 02h 02h int int 21h 21h.ENDW
13 Loop conditions == Equal!= Not equal > Greater than >= Greater than or equal to < Less than <= Less than or equal to & Bit test! Logical NOT && Logical AND Logical OR.
14 ZERO? CARRY? OVERFLOW? SIGN? PARITY? Loop conditions.while (CARRY?) ; Loop when CF CF not not zero.. ; Statements here..endw
15 Macros Text macros. Macro procedures. Repeat blocks. Macro functions. Predefined macro functions and string directives.
16 Text Macros name TEXTEQU <text> name TEXTEQU macroid textmacro name TEXTEQU %constexpr
17 Text Macros - Examples msg msg TEXTEQU <Hello> ; Text assigned to to symbol string TEXTEQU msg msg ; Text macro assigned to to symbol msg msg TEXTEQU <Welcome> ; New New text assigned to to symbol value TEXTEQU %(3 %(3 + num); Text representation of of ; resolved expression assigned ; to to symbol pi pi TEXTEQU <3.1416> ; Floating point constant WPT WPT TEXTEQU <WORD PTR>; Sequence of of key key words arg1 TEXTEQU <[bp+4]> ; Bracketed expression
18 Macro procedures Macro procedure definition without the parameters: name MACRO statements Macro procedure with the parameters: name MACRO parameterlist statements
19 Macro procedure - example beep MACRO mov mov ah, ah, 2 ;; ;; Select DOS DOS Print Char function mov mov dl, dl, 7 ;; ;; Select ASCII 7 (bell) int int 21h 21h ;; ;; Call DOS DOS.IF.IF error beep beep.endif ; If If error flag is is true ; execute macro two two times
20 Macro procedure - example.if.if error cmp cmp error, 000h je beep mov mov ah, ah, 2 mov mov dl, dl, 7 int int 21h 21h beep mov mov ah, ah, 2 mov mov dl, dl, 7 int int 21h
21 Macro procedure with parameters writechar MACRO char mov mov ah, ah, 2 ;; ;; Select DOS DOS Print Char function mov mov dl, dl, char ;; ;; Select char int int 21h 21h ;; ;; Call DOS DOS writechar 'A' 'A' ; Writes A on on the the screen writechar 7 ; Causes computer to to beep writechar ; Causes error: ; expands to to the the line ; mov mov dl, dl,
22 Macro parameter attributes Required parameters. Parameter:REQ Default value. Parameter:=textvalue Variable number of parameters. Parameter:VARARG
23 Required parameters writechar MACRO char:req mov mov ah, ah, 2 ;; ;; Select DOS DOS Print Char function mov mov dl, dl, char ;; ;; Select char int int 21h 21h ;; ;; Call DOS DOS writechar ; Causes error: ; expands to to the the line ; mov mov dl, dl,
24 Default parameters writechar MACRO char:=<7> mov mov ah, ah, 2 ;; ;; Select DOS DOS Print Char function mov mov dl, dl, char ;; ;; Select char int int 21h 21h ;; ;; Call DOS DOS writechar 'A' 'A' ; Writes A on on the the screen writechar 7 ; Causes computer to to beep writechar ; Causes computer to to beep
25 Local symbols LOCAL directive. Any identifier may be declared as local. Local symbol will be visible only inside the macro. Any label within the macro must be local. LOCAL directive must appear immediately after the MACRO statement.
26 Local symbols power MACRO factor:req, exponent:req LOCAL again, gotzero ;; ;; Local symbols sub sub dx, dx, dx dx ;; ;; Clear top top mov mov ax, ax, 1 ;; ;; Multiply by by one one on on first loop mov mov cx, cx, exponent ;; ;; Load count jcxz gotzero ;; ;; Done if if zero exponent mov mov bx, bx, factor ;; ;; Load factor again: mul mul bx bx ;; ;; Multiply factor times exponent loop again ;; ;; Result in in AX AX gotzero:
27 Repeat blocks Unnamed macro defined with loop directive: REPEAT (REPT) WHILE FOR (IRP) FORC (IRPC)
28 REPEAT REPEAT constexpr Statements alpha LABEL BYTE ; Name the the data generated letter = A A ; Initialize counter REPEAT ;; ;; Repeat for for each letter BYTE letter ;; ;; Allocate ASCII code for for letter letter = letter + 1 ;; ;; Increment counter
29 WHILE WHILE expression Statements cubes cubes LABEL LABEL BYTE BYTE ;; ;; Name Name the the data data generated root root = 1 ;; ;; Initialize root root cube cube = root root * root root * root root ;; ;; Calculate first first cube cube WHILE WHILE cube cube LE LE ;; ;; Repeat until until result too too large large WORD WORD cube cube ;; ;; Allocate cube cube root root = root root + 1 ;; ;; Calculate next next root root and and cube cube cube cube = root root * root root * root root
30 FOR FOR parameter, <argumentlist> Statements series LABEL BYTE FOR FOR arg, <1,2,3,4,5,6,7,8,9,10> BYTE arg arg DUP DUP (arg)
31 FOR variable number of parameters show MACRO chr:vararg mov mov ah, ah, 02h 02h FOR FOR arg, <chr> mov mov dl, dl, arg arg int int 21h 21h show O, K, 13, 13, 10 10
32 FOR variable number of parameters show MACRO chr:vararg mov mov ah, ah, 02h 02h FOR FOR arg:=< >, >, <chr> mov mov dl, dl, arg arg int int 21h 21h show O,, K, 13, 13, 10 10
33 FORC FORC parameter, <text> Statements FORC arg, <ABCDEFGHIJKLMNOPQRSTUVWXYZ> BYTE &arg ;; ;; Allocate uppercase letter BYTE &arg + 20h 20h ;; ;; Allocate lowercase letter BYTE &arg - 40h 40h ;; ;; Allocate ordinal of of letter
34 String directives SUBSTR - Assigns part of string to a new symbol. INSTR - Searches for one string within another. SIZESTR - Determines the size of a string. CATSTR - Concatenates one or more strings to a single string.
35 String directives example ;assign "3 "3 + 7 = 10" 10" to to the the newstr num num = 7 newstr CATSTR <3 <3 + >, >, %num, < = >, >, %3 %3 + num num num num = 7 newstr <3 <3 + >, >, %num, < = >, %3 %3 + num num ) ; expansion operator a TEXTEQU <3 <3 + 4> 4> ; a = "3 "3 + 4" 4" b TEXTEQU %3 %3 + 4 ; b = "7" "7" c TEXTEQU %(3 %(3 + 4) 4) ; c = "7" "7"
36 String directives example regpushed TEXTEQU <> <> ;; ;; Initialize empty empty string SaveRegs MACRO MACRO regs:vararg LOCAL LOCAL reg reg FOR FOR reg, reg, <regs> ;; ;; Push Push each each register push push reg reg ;; ;; and and add add it it to to the the list list regpushed CATSTR <reg>, <,>, <,>, regpushed ;; ;; Strip Strip off off last last comma comma regpushed CATSTR <!<>, <!<>, regpushed ;; ;; Mark Mark start start of of list list with with < regpushed SUBSTR regpushed, 1, regpushed ) regpushed CATSTR regpushed, <!>> <!>> ;; ;; Mark Mark end end with with > RestoreRegs MACRO MACRO LOCAL LOCAL reg reg %FOR %FOR reg, reg, regpushed ;; ;; % expands regpushed pop pop reg reg ;; ;; Pop Pop each each register
37 Returning Values with Macro Functions Macro functions always return text. Macro functions always return a value thrugh the EXITM directive. Return value must be text, or result of another macro function. Numeric values must be converted to the text with expansion operator %.
38 Returning values example factorial MACRO num:req LOCAL i, i, factor factor = num num i = 1 WHILE factor GT GT 1 i = i * factor factor = factor 1 EXITM %i %i var var WORD factorial( 4 )
EXPERIMENT WRITE UP. LEARNING OBJECTIVES: 1. Get hands on experience with Assembly Language Programming 2. Write and debug programs in TASM/MASM
EXPERIMENT WRITE UP AIM: Assembly language program to search a number in given array. LEARNING OBJECTIVES: 1. Get hands on experience with Assembly Language Programming 2. Write and debug programs in TASM/MASM
More informationEx: Write a piece of code that transfers a block of 256 bytes stored at locations starting at 34000H to locations starting at 36000H. Ans.
INSTRUCTOR: ABDULMUTTALIB A H ALDOURI Conditional Jump Cond Unsigned Signed = JE : Jump Equal JE : Jump Equal ZF = 1 JZ : Jump Zero JZ : Jump Zero ZF = 1 JNZ : Jump Not Zero JNZ : Jump Not Zero ZF = 0
More informationLecture 5 Program Logic and Control
Lecture 5 Program Logic and Control Chapter Outline Short, near and far address JMP Instruction The CMP Instruction Conditional Jump instruction The Loop instruction While Loop REPEAT Loop Short,near,and
More informationLab 6: Conditional Processing
COE 205 Lab Manual Lab 6: Conditional Processing Page 56 Lab 6: Conditional Processing Contents 6.1. Unconditional Jump 6.2. The Compare Instruction 6.3. Conditional Jump Instructions 6.4. Finding the
More informationdb "Please enter up to 256 characters (press Enter Key to finish): ",0dh,0ah,'$'
PA4 Sample Solution.model large.stack 100h.data msg1 db "This programs scans a string of up to 256 bytes and counts the repetitions of the number 4206 and sums them.",0dh,0ah,'$' msg2 db "Please enter
More informationLABORATORY WORK NO. 7 FLOW CONTROL INSTRUCTIONS
LABORATORY WORK NO. 7 FLOW CONTROL INSTRUCTIONS 1. Object of laboratory The x86 microprocessor family has a large variety of instructions that allow instruction flow control. We have 4 categories: jump,
More informationIslamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 8. Conditional Processing
Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 8 Conditional Processing April, 2014 1 Assembly Language LAB Unconditional Jump The
More informationLecture (08) x86 programming 7
Lecture (08) x86 programming 7 By: Dr. Ahmed ElShafee 1 Conditional jump: Conditional jumps are executed only if the specified conditions are true. Usually the condition specified by a conditional jump
More informationSPRING TERM BM 310E MICROPROCESSORS LABORATORY PRELIMINARY STUDY
BACKGROUND 8086 CPU has 8 general purpose registers listed below: AX - the accumulator register (divided into AH / AL): 1. Generates shortest machine code 2. Arithmetic, logic and data transfer 3. One
More informationConditional Processing
١ Conditional Processing Computer Organization & Assembly Language Programming Dr Adnan Gutub aagutub at uqu.edu.sa Presentation Outline [Adapted from slides of Dr. Kip Irvine: Assembly Language for Intel-Based
More informationBasic Assembly Instructions
Basic Assembly Instructions Ned Nedialkov McMaster University Canada SE 3F03 January 2013 Outline Multiplication Division FLAGS register Branch Instructions If statements Loop instructions 2/21 Multiplication
More informationPESIT Bangalore South Campus
INTERNAL ASSESSMENT TEST 2 Date : 02/04/2018 Max Marks: 40 Subject & Code : Microprocessor (15CS44) Section : IV A and B Name of faculty: Deepti.C Time : 8:30 am-10:00 am Note: Note: Answer any five complete
More informationcomplement) Multiply Unsigned: MUL (all operands are nonnegative) AX = BH * AL IMUL BH IMUL CX (DX,AX) = CX * AX Arithmetic MUL DWORD PTR [0x10]
The following pages contain references for use during the exam: tables containing the x86 instruction set (covered so far) and condition codes. You do not need to submit these pages when you finish your
More informationX86 Addressing Modes Chapter 3" Review: Instructions to Recognize"
X86 Addressing Modes Chapter 3" Review: Instructions to Recognize" 1 Arithmetic Instructions (1)! Two Operand Instructions" ADD Dest, Src Dest = Dest + Src SUB Dest, Src Dest = Dest - Src MUL Dest, Src
More informationCONTENTS. 1. Display a Message Display a one Digit Number Accept a Character from keyboard and display the character 4
University of Kashmir, North Campus Course Code Course Name Course Instructor MCA-104-DCE Assembly Language Programming Bilal Ahmad Dar CONTENTS 1. Display a Message 2 2. Display a one Digit Number 3 3.
More informationExperiment 3 3 Basic Input Output
Experiment 3 3 Basic Input Output Introduction The aim of this experiment is to introduce the use of input/output through the DOS interrupt. Objectives: INT Instruction Keyboard access using DOS function
More informationMacros and Conditional Assembly. Chapter 10 S. Dandamudi
Macros and Conditional Assembly Chapter 10 S. Dandamudi Outline What are macros? Macros with parameters Macros vs procedures Parameter passing Types of parameters Invocation mechanism When are macros better?
More informationLecture 16: Passing Parameters on the Stack. Push Examples. Pop Examples. CALL and RET
Lecture 1: Passing Parameters on the Stack Push Examples Quick Stack Review Passing Parameters on the Stack Binary/ASCII conversion ;assume SP = 0202 mov ax, 124h push ax push 0af8h push 0eeeh EE 0E F8
More informationEC 333 Microprocessor and Interfacing Techniques (3+1)
EC 333 Microprocessor and Interfacing Techniques (3+1) Lecture 6 8086/88 Microprocessor Programming (Arithmetic Instructions) Dr Hashim Ali Fall 2018 Department of Computer Science and Engineering HITEC
More informationAssembler lecture 5 S.Šimoňák, DCI FEEI TU of Košice
Assembler lecture 5 S.Šimoňák, DCI FEEI TU of Košice Jumps and iterations conditional and unconditional jumps iterations (loop) implementation of HLL control structures Unconditional jump unconditional
More informationCS-202 Microprocessor and Assembly Language
CS-202 Microprocessor and Assembly Language Lecture 2 Introduction to 8086 Assembly Language Dr Hashim Ali Spring - 2019 Department of Computer Science and Engineering HITEC University Taxila!1 Lecture
More informationCSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs
CSC 2400: Computer Systems Towards the Hardware: Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32)
More informationMarking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313)
Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam Second Semester Date: 02/06/2018 Section 1 Weighting 40% of
More informationCSC 8400: Computer Systems. Machine-Level Representation of Programs
CSC 8400: Computer Systems Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32) 1 Compilation Stages
More informationUS06CCSC04: Introduction to Microprocessors and Assembly Language UNIT 3: Assembly Language Instructions II
Unconditional & Conditional JUMP instructions: Conditional JUMP instructions: JA/JNBE Jump if above / Jump if not Below or Equal These two mnemonics represent the same instruction. The term above and below
More informationUNIT 4. Modular Programming
1 UNIT 4. Modular Programming Program is composed from several smaller modules. Modules could be developed by separate teams concurrently. The modules are only assembled producing.obj modules (Object modules).
More informationJump instructions. Unconditional jumps Direct jump. do not change flags. jmp label
do not change flags Unconditional jumps Direct jump jmp label Jump instructions jmp Continue xor eax,eax Continue: xor ecx,ecx Machine code: 0040340A EB 02 0040340C 33 C0 0040340E 33 C9 displacement =
More informationAssembly Language LAB
Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering 2013 ECOM 2125: Assembly Language LAB Created by: Eng. Ahmed M. Ayash Modified and Presented By: Eihab
More informationTransfer of Control. Lecture 10 JMP. JMP Formats. Jump Loop Homework 3 Outputting prompts Reading single characters
Lecture 10 Jump Loop Homework 3 Outputting prompts Reading single characters Transfer of Control The CPU loads and executes programs sequentially. You d like to be able to implement if statements, gotos,
More informationMarking Scheme. Examination Paper. Module: Microprocessors (630313)
Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam Second Semester Date: 12/06/2017 Section 1 Weighting 40% of
More informationPHY4635/5635 Spring Lecture 8: Program Control Instructions
PHY4635/5635 Spring 2009 Lecture 8: Program Control Instructions Short, Near and Far Jumps Short jump: jump is within +127 to -128 bytes from the address following the jump. Relative jumps : moves with
More information8086 INSTRUCTION SET
8086 INSTRUCTION SET Complete 8086 instruction set Quick reference: AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD CLI CMC CMP CMPSB CMPSW CWD DAA DAS DEC DIV HLT IDIV IMUL IN INC INT INTO I JA JAE JB JBE
More informationCode segment Stack segment
Registers Most of the registers contain data/instruction offsets within 64 KB memory segment. There are four different 64 KB segments for instructions, stack, data and extra data. To specify where in 1
More informationComputer Systems Lecture 9
Computer Systems Lecture 9 CPU Registers in x86 CPU status flags EFLAG: The Flag register holds the CPU status flags The status flags are separate bits in EFLAG where information on important conditions
More informationEEM336 Microprocessors I. Data Movement Instructions
EEM336 Microprocessors I Data Movement Instructions Introduction This chapter concentrates on common data movement instructions. 2 Chapter Objectives Upon completion of this chapter, you will be able to:
More information9/25/ Software & Hardware Architecture
8086 Software & Hardware Architecture 1 INTRODUCTION It is a multipurpose programmable clock drive register based integrated electronic device, that reads binary instructions from a storage device called
More informationreply db y prompt db Enter your favourite colour:, 0 colour db 80 dup(?) i db 20 k db? num dw 4000 large dd 50000
Declaring Variables in Assembly Language As in Java, variables must be declared before they can be used Unlike Java, we do not specify a variable type in the declaration in assembly language Instead we
More informationWe will first study the basic instructions for doing multiplications and divisions
MULTIPLICATION, DIVISION AND NUMERICAL CONVERSIONS We will first study the basic instructions for doing multiplications and divisions We then use these instructions to 1. Convert a string of ASCII digits
More informationQ1: Multiple choice / 20 Q2: Data transfers and memory addressing
16.317: Microprocessor Systems Design I Fall 2014 Exam 1 October 1, 2014 Name: ID #: For this exam, you may use a calculator and one 8.5 x 11 double-sided page of notes. All other electronic devices (e.g.,
More informationADVANCE MICROPROCESSOR & INTERFACING
VENUS INTERNATIONAL COLLEGE OF TECHNOLOGY Gandhinagar Department of Computer Enggineering ADVANCE MICROPROCESSOR & INTERFACING Name : Enroll no. : Class Year : 2014-15 : 5 th SEM C.E. VENUS INTERNATIONAL
More informationIntel 8086: Instruction Set
IUST-EE (Chapter 6) Intel 8086: Instruction Set 1 Outline Instruction Set Data Transfer Instructions Arithmetic Instructions Bit Manipulation Instructions String Instructions Unconditional Transfer Instruction
More informationSelection and Iteration. Chapter 7 S. Dandamudi
Selection and Iteration Chapter 7 S. Dandamudi Outline Unconditional jump Compare instruction Conditional jumps Single flags Unsigned comparisons Signed comparisons Loop instructions Implementing high-level
More informationAssembly Language: IA-32 Instructions
Assembly Language: IA-32 Instructions 1 Goals of this Lecture Help you learn how to: Manipulate data of various sizes Leverage more sophisticated addressing modes Use condition codes and jumps to change
More informationBAHAR DÖNEMİ MİKROİŞLEMCİLER LAB4 FÖYÜ
LAB4 RELATED INSTRUCTIONS: Compare, division and jump instructions CMP REG, memory memory, REG REG, REG memory, immediate REG, immediate operand1 - operand2 Result is not stored anywhere, flags are set
More informationCOMPUTER ENGINEERING DEPARTMENT
Page 1 of 11 COMPUTER ENGINEERING DEPARTMENT December 31, 2007 COE 205 COMPUTER ORGANIZATION & ASSEMBLY PROGRAMMING Major Exam II First Semester (071) Time: 7:00 PM-9:30 PM Student Name : KEY Student ID.
More informationCOMPUTER ENGINEERING DEPARTMENT
Page 1 of 14 COMPUTER ENGINEERING DEPARTMENT Jan. 7, 2010 COE 205 COMPUTER ORGANIZATION & ASSEMBLY PROGRAMMING Major Exam II First Semester (091) Time: 3:30 PM-6:00 PM Student Name : KEY Student ID. :
More informationInline Assembler. Willi-Hans Steeb and Yorick Hardy. International School for Scientific Computing
Inline Assembler Willi-Hans Steeb and Yorick Hardy International School for Scientific Computing e-mail: steebwilli@gmail.com Abstract We provide a collection of inline assembler programs. 1 Using the
More informationSummer 2003 Lecture 4 06/14/03
Summer 2003 Lecture 4 06/14/03 LDS/LES/LSS General forms: lds reg,mem lseg reg,mem Load far pointer ~~ outside of current segment {E.g., load reg w/value @ mem, & seg w/mem+2 XCHG Exchange values General
More information.code. lea dx,msg2. Page 1/8. Problem 1: Programming in Assembly [25 Points]
Problem : Programming in Assembly [ Points] The following assembly program is supposed to: receive three integer numbers from the console, call a function, name sort, function sort arranges the three input
More informationBasic Assembly SYSC-3006
Basic Assembly Program Development Problem: convert ideas into executing program (binary image in memory) Program Development Process: tools to provide people-friendly way to do it. Tool chain: 1. Programming
More informationMicroprocessors & Assembly Language Lab 1 (Introduction to 8086 Programming)
Microprocessors & Assembly Language Lab 1 (Introduction to 8086 Programming) Learning any imperative programming language involves mastering a number of common concepts: Variables: declaration/definition
More informationArithmetic Instructions
Segment 3C Arithmetic Instructions This topic covers the following instructions: Addition (ADD, INC, ADC) Subtraction (SUB, DEC, SBB,CMP) Multiplication (MUL, IMUL) Division (DIV, IDIV) BCD Arithmetic
More informationIFE: Course in Low Level Programing. Lecture 6
IFE: Course in Low Level Programing Lecture 6 Instruction Set of Intel x86 Microprocessors Conditional jumps Jcc jump on condition cc, JMP jump always, CALL call a procedure, RET return from procedure,
More informationSPRING TERM BM 310E MICROPROCESSORS LABORATORY PRELIMINARY STUDY
BACKGROUND Segment The "SEGMENT" and "ENDS" directives indicate to the assembler the beginning and ending of a segment and have the following format label SEGMENT [options] ;place the statements belonging
More informationFACULTY OF ENGINEERING LAB SHEET
FACULTY OF ENGINEERING LAB SHEET ECE366: ADVANCED MICROPROCESSORS TRIMESTER (08/09) AM: Real- Mode Programming *Note: On-the-spot evaluation may be carried out during or at the end of the experiment. Students
More informationLecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86
Lecture 15 Intel Manual, Vol. 1, Chapter 3 Hampden-Sydney College Fri, Mar 6, 2009 Outline 1 2 Overview See the reference IA-32 Intel Software Developer s Manual Volume 1: Basic, Chapter 3. Instructions
More information22 Assembly Language for Intel-Based Computers, 4th Edition. 3. Each edge is a transition from one state to another, caused by some input.
22 Assembly Language for Intel-Based Computers, 4th Edition 6.6 Application: Finite-State Machines 1. A directed graph (also known as a diagraph). 2. Each node is a state. 3. Each edge is a transition
More informationModule 3 Instruction Set Architecture (ISA)
Module 3 Instruction Set Architecture (ISA) I S A L E V E L E L E M E N T S O F I N S T R U C T I O N S I N S T R U C T I O N S T Y P E S N U M B E R O F A D D R E S S E S R E G I S T E R S T Y P E S O
More informationComputer Architecture and System Software Lecture 07: Assembly Language Programming
Computer Architecture and System Software Lecture 07: Assembly Language Programming Instructor: Rob Bergen Applied Computer Science University of Winnipeg Announcements New assembly examples uploaded to
More informationTUTORIAL. Emulador Emu8086 do. Microprocessador 8086
1 TUTORIAL Emulador Emu8086 do Microprocessador 8086 2 8086 Assembler Tutorial for Beginners (Part 1) This tutorial is intended for those who are not familiar with assembler at all, or have a very distant
More informationDefining and Using Simple Data Types
85 CHAPTER 4 Defining and Using Simple Data Types This chapter covers the concepts essential for working with simple data types in assembly-language programs The first section shows how to declare integer
More information8086 programming Control Flow Instructions and Program Structures
8086 programming Control Flow Instructions and Program Structures Example: write a procedure named Square that squares the contents of BL and places the result in BX. Square: PUSH AX MOV AL, BL MUL BL
More informationQ1: Define a character string named CO_NAME containing "Internet Services" as a constant?
CS 321 Lab Model Answers ١ First Lab : Q1: Define a character string named CO_NAME containing "Internet Services" as a constant? ANS: CO_NAME EQU ' Internet Services' Q2: Define the following numeric values
More informationIntroduction to 8086 Assembly
Introduction to 8086 Assembly Lecture 5 Jump, Conditional Jump, Looping, Compare instructions Labels and jumping (the jmp instruction) mov eax, 1 add eax, eax jmp label1 xor eax, eax label1: sub eax, 303
More informationCS401 Assembly Language Solved MCQS From Midterm Papers
CS401 Assembly Language Solved MCQS From Midterm Papers May 14,2011 MC100401285 Moaaz.pk@gmail.com MC100401285@gmail.com PSMD01(IEMS) Question No:1 ( Marks: 1 ) - Please choose one The first instruction
More informationVARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad
Introduction to MS-DOS Debugger DEBUG In this laboratory, we will use DEBUG program and learn how to: 1. Examine and modify the contents of the 8086 s internal registers, and dedicated parts of the memory
More informationQ1: Multiple choice / 20 Q2: Protected mode memory accesses
16.317: Microprocessor-Based Systems I Summer 2012 Exam 2 August 1, 2012 Name: ID #: For this exam, you may use a calculator and one 8.5 x 11 double-sided page of notes. All other electronic devices (e.g.,
More informationReverse Engineering II: The Basics
Reverse Engineering II: The Basics This document is only to be distributed to teachers and students of the Malware Analysis and Antivirus Technologies course and should only be used in accordance with
More informationComputer Architecture and System Programming Laboratory. TA Session 3
Computer Architecture and System Programming Laboratory TA Session 3 Stack - LIFO word-size data structure STACK is temporary storage memory area register points on top of stack (by default, it is highest
More informationCS 31: Intro to Systems ISAs and Assembly. Kevin Webb Swarthmore College February 9, 2016
CS 31: Intro to Systems ISAs and Assembly Kevin Webb Swarthmore College February 9, 2016 Reading Quiz Overview How to directly interact with hardware Instruction set architecture (ISA) Interface between
More informationComputer Science Final Examination Wednesday December 13 th 2006
Computer Science 03-60-266 Final Examination Wednesday December 13 th 2006 Dr. Alioune Ngom Last Name: First Name: Student Number: INSTRUCTIONS EXAM DURATION IS 3 hours. OPEN NOTES EXAM: lecture notes,
More informationArithmetic and Logic Instructions And Programs
Dec Hex Bin 3 3 00000011 ORG ; FOUR Arithmetic and Logic Instructions And Programs OBJECTIVES this chapter enables the student to: Demonstrate how 8-bit and 16-bit unsigned numbers are added in the x86.
More informationCS 31: Intro to Systems ISAs and Assembly. Kevin Webb Swarthmore College September 25, 2018
CS 31: Intro to Systems ISAs and Assembly Kevin Webb Swarthmore College September 25, 2018 Overview How to directly interact with hardware Instruction set architecture (ISA) Interface between programmer
More informationWeek /8086 Microprocessor Programming
Week 5 8088/8086 Microprocessor Programming Multiplication and Division Multiplication Multiplicant Operand Result (MUL or IMUL) (Multiplier) Byte * Byte AL Register or memory Word * Word AX Register or
More informationEECE.3170: Microprocessor Systems Design I Summer 2017 Homework 4 Solution
1. (40 points) Write the following subroutine in x86 assembly: Recall that: int f(int v1, int v2, int v3) { int x = v1 + v2; urn (x + v3) * (x v3); Subroutine arguments are passed on the stack, and can
More informationComputer Architecture and System Software Lecture 06: Assembly Language Programming
Computer Architecture and System Software Lecture 06: Assembly Language Programming Instructor: Rob Bergen Applied Computer Science University of Winnipeg Announcements Assignment 3 due thursday Midterm
More informationIBM PC Hardware CPU 8088, Pentium... ALU (Arithmetic and Logic Unit) Registers. CU (Control Unit) IP.
IBM PC Hardware CPU 8088, 8086 80286 80386 80486 Pentium... ALU (Arithmetic and Logic Unit) Registers CU (Control Unit) IP Memory ROM BIOS I/O RAM OS Programs Video memory BIOS data Interrupt Vectors Memory
More informationIt is possible to define a number using a character or multiple numbers (see instruction DB) by using a string.
1 od 5 17. 12. 2017 23:53 (https://github.com/schweigi/assembler-simulator) Introduction This simulator provides a simplified assembler syntax (based on NASM (http://www.nasm.us)) and is simulating a x86
More informationLABORATORY WORK NO. 8 WORKING WITH MACROS AND LIBRARIES
LABORATORY WORK NO. 8 WORKING WITH MACROS AND LIBRARIES 1. Object of laboratory Getting used to defining and using macros, procedure defining and using LIB library librarian. 2. Theoretical considerations
More informationThe x86 Architecture
The x86 Architecture Lecture 24 Intel Manual, Vol. 1, Chapter 3 Robb T. Koether Hampden-Sydney College Fri, Mar 20, 2015 Robb T. Koether (Hampden-Sydney College) The x86 Architecture Fri, Mar 20, 2015
More informationOverview: 1. Overview: 2
1: TITLE Binary equivalent of characters BINCHAR.ASM 3: Objective: To print the binary equivalent of 4: ASCII character code. 5: Input: Requests a character from keyboard. 6: Output: Prints the ASCII code
More information2003 LXI H, 42F2H ; this instruction store 42F2 in to the HL pair POP H ; store data from top of the stack to HL pair
(1) What is stack? Explain stack related instruction with example OR Give function of stack. OR What is stack? Explain the stack operations using examples. The stack is a group of memory location in the
More informationWeek /8086 Microprocessor Programming II
Week 5 8088/8086 Microprocessor Programming II Quick Review Shift & Rotate C Target register or memory SHL/SAL 0 C SHR 0 SAR C Sign Bit 2 Examples Examples Ex. Ex. Ex. SHL dest, 1; SHL dest,cl; SHL dest,
More information3.1 DATA MOVEMENT INSTRUCTIONS 45
3.1.1 General-Purpose Data Movement s 45 3.1.2 Stack Manipulation... 46 3.1.3 Type Conversion... 48 3.2.1 Addition and Subtraction... 51 3.1 DATA MOVEMENT INSTRUCTIONS 45 MOV (Move) transfers a byte, word,
More informationMacros in Pentium. Assembly Language. October 25
Macros in Pentium Assembly Language October 25 CSC201 Section 002 Fall, 2000 Equates PI equ 3.1415926 MAXRECS equ 200 RECSIZE equ 5 move equ mov la equ lea float1 dd PI recarray db MAXRECS*RECSIZE dup
More informationIntel Instruction Set (gas)
Intel Instruction Set (gas) These slides provide the gas format for a subset of the Intel processor instruction set, including: Operation Mnemonic Name of Operation Syntax Operation Examples Effect on
More informationSOEN228, Winter Revision 1.2 Date: October 25,
SOEN228, Winter 2003 Revision 1.2 Date: October 25, 2003 1 Contents Flags Mnemonics Basic I/O Exercises Overview of sample programs 2 Flag Register The flag register stores the condition flags that retain
More informationProgram Control Instructions
Program Control Instructions Introduction This chapter explains the program control instructions, including the jumps, calls, returns, interrupts, and machine control instructions. This chapter also presents
More informationAssembly Language for Intel-Based Computers, 5 th Edition. Chapter 9: Strings and Arrays
Assembly Language for Intel-Based Computers, 5 th Edition Kip R. Irvine Chapter 9: Strings and Arrays Slide show prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2006-2007. All
More informationComputer Architecture..Second Year (Sem.2).Lecture(4) مدرس المادة : م. سندس العزاوي... قسم / الحاسبات
مدرس المادة : م. سندس العزاوي... قسم / الحاسبات... - 26 27 Assembly Level Machine Organization Usage of AND, OR, XOR, NOT AND : X Y X AND Y USE : to chick any bit by change ( to ) or ( to ) EX : AX = FF5
More informationCOE 205 Lab Manual Experiment N o 12. Experiment N o Using the Mouse
Experiment N o 12 12 Using the Mouse Introduction The mouse is an I/O device that replaces the arrow keys on the keyboard for graphical and text style programs. This experiment shows how to add the mouse
More informationAssembly Language for Intel-Based Computers, 5 th Edition. Kip R. Irvine. Chapter 6: Conditional Processing
Assembly Language for Intel-Based Computers, 5 th Edition Kip R. Irvine Chapter 6: Conditional Processing Chapter Overview Boolean and Comparison Instructions Conditional Jumps Conditional Loop Instructions
More informationChapter 3: Addressing Modes
Chapter 3: Addressing Modes Chapter 3 Addressing Modes Note: Adapted from (Author Slides) Instructor: Prof. Dr. Khalid A. Darabkh 2 Introduction Efficient software development for the microprocessor requires
More informationReverse Engineering II: Basics. Gergely Erdélyi Senior Antivirus Researcher
Reverse Engineering II: Basics Gergely Erdélyi Senior Antivirus Researcher Agenda Very basics Intel x86 crash course Basics of C Binary Numbers Binary Numbers 1 Binary Numbers 1 0 1 1 Binary Numbers 1
More informationPhiladelphia University Student Name: Student Number:
Philadelphia University Student Name: Student Number: Faculty of Engineering Serial Number: Final Exam, Second Semester: 2016/2017 Dept. of Computer Engineering Course Title: Microprocessors Date: 12/06/2017
More informationLecture 8: Control Structures. Comparing Values. Flags Set by CMP. Example. What can we compare? CMP Examples
Lecture 8: Control Structures CMP Instruction Conditional High Level Logic Structures Comparing Values The CMP instruction performs a comparison between two numbers using an implied subtraction. This means
More informationmith College Computer Science CSC231 Assembly Week #11 Fall 2017 Dominique Thiébaut
mith College Computer Science CSC231 Assembly Week #11 Fall 2017 Dominique Thiébaut dthiebaut@smith.edu Back to Conditional Jumps Review sub eax, 10 jz there xxx xxx there:yyy yyy Review cmp eax, 10 jz
More informationAn Introduction to x86 ASM
An Introduction to x86 ASM Malware Analysis Seminar Meeting 1 Cody Cutler, Anton Burtsev Registers General purpose EAX, EBX, ECX, EDX ESI, EDI (index registers, but used as general in 32-bit protected
More informationFACULTY OF ENGINEERING LAB SHEET
FACULTY OF ENGINEERING LAB SHEET ADVANCED MICROPROCESSORS ECE TRIMESTER (0/0) AM: Real- Mode Programming AM: Protected- Mode Programming *Note: On-the-spot evaluation may be carried out during or at the
More informationReverse Engineering II: The Basics
Reverse Engineering II: The Basics Gergely Erdélyi Senior Manager, Anti-malware Research Protecting the irreplaceable f-secure.com Binary Numbers 1 0 1 1 - Nibble B 1 0 1 1 1 1 0 1 - Byte B D 1 0 1 1 1
More information