Sei sulla pagina 1di 5

NUST SCHOOL OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE

Faculty Member: Mr. Taufiqe Rehman Semester: 4th

Date: Wednesday, February 26, 2014 Section : B

Department of Electrical Engineering EE- 321: Computer Architecture and Organization

LAB 03:Flags and Jump Commandsin Assembly Language


Students Name Reg. # Lab Conduct and Report 10 Muhammad Nauman Ali 02018 Viva 5 Total 15

Shahid Khaliq

00018

1|Page

LAB No.3 Objective: The aim of this lab is to learn about flags, their working and their use in jump instruction in Assembly Language. The use of flags and jumps to execute certain parts of the code while ignoring others.
Exercise 1: Write an Assembly Language program that will use the conditions: 1. 2. 3. 4. JMP JE JA JB

Ask User to input in variables varA, varB, var1, var2, var3 If(varA=varB) Finalv = (var1-var2)-var3 If(varA>varB) Finalv =var1+var2+var3 If(varA<varB) Finalv =(var1-var2)+var3

2|Page

Solution:
include irvine32.inc .data varA WORD ? varB WORD ? var1 WORD ? var2 WORD ? var3 WORD ? Result WORD ? string1 BYTE "Enter the value of VarA ", 0 string2 BYTE "Enter the value of VarB ", 0 string3 BYTE "Enter the value of Var1 ", 0 string4 BYTE "Enter the value of Var2 ", 0 string5 BYTE "Enter the value of Var3 ", 0 rstring BYTE "The result is: ", 0 .CODE MAIN PROC Movedx,offset string1 Call writestring Call readint MovvarA,ax Movedx,offset string2 Call writestring Call readint MovvarB,ax Movedx,offset string3 Call writestring Call readint Mov var1,ax Movedx,offset string4 Call writestring Call readint Mov var2,ax Movedx,offset string5 Call writestring Call readint Mov var3,ax mov ax, varA cmp ax, varB je equal ja above jb below equal: mov ax, var1 Sub ax, var2 Sub ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writedec callDumpRegs jmp Finish above: mov ax, var1 Add ax, var2 Add ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writedec callDumpRegs jmp Finish below: mov ax, var1 Sub ax, var2 Add ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writedec callDumpRegs jmp Finish Finish: exit main ENDP END main

3|Page

Exercise 2: Modify the above program for signed inputs when varA and varB are signed.
include irvine32.inc .data varA SWORD ? varB SWORD ? var1 WORD ? var2 WORD ? var3 WORD ? Result SWORD ? string1 BYTE "Enter the value of VarA ", 0 string2 BYTE "Enter the value of VarB ", 0 string3 BYTE "Enter the value of Var1 ", 0 string4 BYTE "Enter the value of Var2 ", 0 string5 BYTE "Enter the value of Var3 ", 0 rstring BYTE "The result is: ", 0 .CODE MAIN PROC Movedx,offset string1 Call writestring Call readint MovvarA,ax Movedx,offset string2 Call writestring Call readint MovvarB,ax Movedx,offset string3 Call writestring Call readint Mov var1,ax Movedx,offset string4 Call writestring Call readint Mov var2,ax Movedx,offset string5 Call writestring Call readint Mov var3,ax mov ax, varA cmp ax, varB je equal jg above jl below equal: mov ax, var1 Sub ax, var2 Sub ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writeint callDumpRegs jmp Finish above: mov ax, var1 Add ax, var2 Add ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writeint callDumpRegs jmp Finish below: mov ax, var1 Sub ax, var2 Add ax, var3 Mov Result, ax Movedx,offsetrstring Call writestring Call writeint callDumpRegs jmp Finish Finish: exit main ENDP END main

4|Page

Conclusion:
Flags are 1 bit indicators that can be used to execute certain jump conditions in order to perform different tasks. It is similar to the working of condition statements. Jump can be both conditional and unconditional and can be used according to the needs. Flags are used to indicate carry, zero conditions e.t.c and are very useful in assembly language.

5|Page

Potrebbero piacerti anche