Write a set of assembly codes in uVision that performs the function described below.
a) Begin with the assumption that 10 randomly selected integer numbers (data) are stored at 0x20002000 to 0x20002024 in sequence in the memory region.
b) The execution of the codes finds the smallest number of these data and store it at 0x20002000. The original number at 0x20002000 is placed somewhere else if it is not the smallest.
c) The algorithm of the program should be general enough to apply to the selection of any integer numbers in any order, and to any number of data.
d) This homework is a coding exercise. You don’t need Discovery kit for the work.
a) Remember that assembly language (and computer for that matter) can compare only two (2) numbers at a time. Also note that any comparison of data can be done only with registers, not with (SRAM) memory. (No direct transfer, no direct comparison with memory.)
b) First, compare the data at 0x20002000 with the one at 0x20002004. Swap their position if the data at 0x20002000 is bigger. Then compare the data at 0x20002000 again with the one at 20002008, and swap if necessary. Use CMP and conditional branch instructions when necessary.
c) The process repeats itself until the last number at 0x20002024 is compared and swapped if necessary.
d) In order to maintain generality, use indirect addressing and conditional branching. This is why a flow chart becomes important.
- Posted: 4 years ago
- Due: 19/10/2015
- Budget: $40