使用以下代码作为程序的开头。写一个程序找出最大和最小的数。最大和最小的数字需要分别保存在寄存器r7和r8中。对于ARMSim#,这些数字也需要显示在控制台和LCD屏幕上(使用Embest Board) 代入量) MOV r0, #0x00002000 MOV r1, #9 STR r1, [r0],#4 MOV r1, #3 STR r1, [r0],#4 MOV r1, #1 STR r1, [r0],#4 MOV r1, #4 STR r1, [r0],#4 MOV r1, #8 STR r1, [r0],#4 MOV r1, #5 STR r1, [r0],#4 MOV r1, #7 STR r1, [r0],#4 MOV r1, #2 STR r1, [r0],#4 MOV r1, #10 STR r1, [r0],#4 MOV r1, #6 STR r1, [r0],#4,注释用英文,完整版导出
时间: 2023-07-02 22:10:07 浏览: 65
```
; Initialize variables
MOV r7, #0 ; r7 for max value
MOV r8, #99999999 ; r8 for min value
MOV r0, #0x00002000 ; address of array
MOV r1, #9 ; array length
; Loop through array
Loop:
LDR r2, [r0], #4 ; load current value
CMP r2, r7 ; check if current value is greater than max value
BGT max ; if so, jump to max label
CMP r2, r8 ; check if current value is less than min value
BLT min ; if so, jump to min label
B loop ; continue loop
max:
MOV r7, r2 ; update max value
B loop ; continue loop
min:
MOV r8, r2 ; update min value
B loop ; continue loop
; Display max and min values on console
LDR r0, =message_max
MOV r1, r7
BL printf
LDR r0, =message_min
MOV r1, r8
BL printf
; Display max and min values on LCD screen (Embest Board)
; TODO: add code for displaying on LCD screen
message_max: .asciz "Maximum value: %d\n"
message_min: .asciz "Minimum value: %d\n"
```
Explanation:
- First, we initialize two registers `r7` and `r8` for storing the max and min values respectively. We also set `r0` to the address of the array and `r1` to the length of the array.
- We then enter a loop that iterates through the array. In each iteration, we load the current value into `r2` using the `LDR` instruction. We then compare the current value with the max and min values using `CMP` instructions.
- If the current value is greater than the max value, we jump to the `max` label and update `r7` with the current value. If the current value is less than the min value, we jump to the `min` label and update `r8` with the current value. Otherwise, we continue looping through the array.
- After the loop finishes, we display the max and min values on the console using the `printf` function. We load the message strings into `r0` using the `LDR` instruction, and the values to be printed into `r1`. We then call the `printf` function using the `BL` instruction.
- Finally, we add code to display the max and min values on the LCD screen (assuming an Embest Board is being used). This code is left as an exercise for the reader.