Zero flag, Assembly Language

Assignment Help:

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.


Related Discussions:- Zero flag

Memory address decoding-microprocessor, Memory Address Decoding Binary ...

Memory Address Decoding Binary Decoders - Decoders have 2n-inputs and n outputs, each input combination results in a single output line contain a 1, and all other lines contain

Program which allows the user to select from menu, Write a 32-bit program w...

Write a 32-bit program which when run, allows the user to select from a menu: (1)    Enter a Binary Number (2)    Enter a Decimal Number (3)    Enter a Hexadecimal Number

The real time system (rts)-microprocessor, The real time System (RTS) : ...

The real time System (RTS) : Calling the clock real-time is somewhat of a misnomer because it only shows the time setting it has been given. The RTC is the other half of chip

Arm assembly language code, You will need to upload your main.c and factori...

You will need to upload your main.c and factorial.s files and a .jpg photo of the output on your board using the Vista assignment upload features.  It must be submitted by the dead

Pc bus and interrupt system-microprocessor, PC Bus and Interrupt System ...

PC Bus and Interrupt System The PC Bus utilized a bus controller, address latches, and data transceivers (bidirectional data buffers). 1) Bus controller : ( Intel 8288 Bus

Instruction set of 8086-microprocessor, Instruction set of 8086 : The 8...

Instruction set of 8086 : The 8086/8088 instructions are categorized into the following major types. This section describes the function of each of the instructions with approp

Program, Write an application that does the following: (1) fill an array wi...

Write an application that does the following: (1) fill an array with 50 random integers; (2) loop through the array, displaying each value, and count the number of negative values;

Shl, Assume that the registers are initialized to EAX=12345h,EBX =9528h EC...

Assume that the registers are initialized to EAX=12345h,EBX =9528h ECX=1275h,EDX=3001h sub AH,AH sub DH,DH mov DL,AL mov CL,3 shl DX,CL shl AX,1 add DX,AX

Fourth generation microprocessor, Fourth  Generation Microprocessor : T...

Fourth  Generation Microprocessor : The single chip 32-bit microprocessor was introduced in 1981 by Intel as iAPX 432. The other 4th generation  microprocessors  were;  Hewlett

PIC lights on, errorlevel -302 ;prevents error code for this...

errorlevel -302 ;prevents error code for this chipset __config 0x373A ;chip config PIC spec page 146 processor 16F877A ;chipset reset code

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd