Zero flag, Assembly Language

Zero flag:

The next line compares the value in register. A with the value 1. If they are equivalent, the Zero flag is set (to 1). The next line then jumps to start: only if the Zero flag is not set, i.e.: the value in reg. A is not 1 therefore the switch was not pressed. Therefore the program will keep looping until the switch is pressed.

If the switch is pressed then the penultimate line writes down the value 1 to the accumulator, thus bit 0 = 1, and the LED comes on.

The last line jumps back to start. It completes the loop of reading the switch and writing to the LED.

This specific problem could have been solved out with just a switch connected to an LED, as a light is linked to a wall switch in your house. But along with a microprocessor in the loop, much more could be done. We could have a clock that also turns on and off the LED depend on time. Or we could monitor the temperature and turn the LED on and off depend on what temperature it is. Or we could monitor various switches and turn the LED on and off depend on a combination of switches, etc. This is up to the imagination what may be controlled.

In the above instance we supposed that the other bits of ports 0 and 1 were all zeros. But in realism, each bit could have a function assigned to them. Then we would have to look only at bit 0 in port 0 and bit 0 in port 1. It further complicates the problem. Also, we suppose that port 0 was previously described as an input port whereas port 1 was defined as an output port.

In assembly we can assign a name to a port and refer to it by that name, rather than port 0 or port 1. It is done with an equate directive. Directives are assembler commands which don't result in program but instead instruct the assembler to some action. All of the directives start with a period.

.equ switch, 0  ;port 0 is now called switch

.equ LED,1       ;port 1 is now called LED

start :   IN         switch  ; read Port 0 into reg. A

CMP    1          ; compare reg. A with the value 1

JNZ      start     ; jump to start if the comparison does not yield 0

OUT     LED      ; send a 1 to Port 1, turning the LED on

JMP     start

It has the same result as the earlier program. Also equate only need to be made once at the start of the program, and thereafter the name or label is utilized instead of the port number. It makes things much simpler for the programmer. All equates should be defined before they are used in a program. It holds true for labels also. Another advantage of naming ports with equate is that if, later on in the design process, you decide to utilizes a different port for the LED or the switch, only the equate has to be changed, not the program itself.

Please note down that comments are extremely important. While you initially write a program, the tendency is not to write much in the comment field because you're in a hurry. But if you need to come back to it a few weeks later, it is much simple to understand what you've written if you've taken the time to write down good comments. Also good comments help out in debugging process.

Posted Date: 2/7/2013 5:12:44 AM | Location : United States

Related Discussions:- Zero flag, Assignment Help, Ask Question on Zero flag, Get Answer, Expert's Help, Zero flag Discussions

Write discussion on Zero flag
Your posts are moderated
Related Questions
Can you write for me an essay, topic is: Statement of the Problem. Length: 270 words. I will send you the Formula for the Problem Statement on your Email attachment. Do you agree?

Code for Reading Flow & Generating LED Output The code starts with the scanning of the PORT 3, for reading the flow status to check for various flow conditions and compare to

using 8086 assembly language that interchange upper four bits to lower four bits. assume that data store in byte memory and it written back to same location. and assume the data as

LDS/LES Instruction execution :  LAHF : Load AH from Lower Byte of Flag: - This instruction loads the AH register with the lower byte of the flag register. This instruction ca

OR: Logical OR: The OR instruction carries out the OR operation in the similar way as described in case of the AND operation. The restriction on source and destination operands ar

Part A: Bitwise Logical and Shift Operations Create a SPARC assembly language program that extracts a bit-field from the contents of register %l0. The position of the rightmos

NASM assembly language program: Consider a sequence of 19 strictly positive decimal digits, most likely stored in an array. There are obviously duplicates, and the sequence is un

How is bob different from johnny in the outsiders

RET : Return from the Procedure:- At each CALL instruction, the register IP and register CS of the next instruction is pushed to stack, before the control is transferred to the

Write a MIPS/SPIM assembly language program that prints the smallest and largest values found in a non-empty table of N word-sized integers. The address of the first entry in your