In: Computer Science
It is required that this program be written in ARM Assembly using raspberry pi. Submit an ARM assembly program that does the following:
1. Prompt for the user to enter a number (integer).
2. If the entered number is <100 print: "The input number is less than 100."
3. If the entered number is >=100 print: "The input number is greater than or equal to 100."
4. Prompt for the user to enter a single character.
5. If the entered character is lower case (a..z) print: "Lower case letter entered."
6. If the entered character is upper case (A..Z) print: "Upper case letter entered."
7. Otherwise print: "Special character entered." 8. Return control to the operating system.
I SEE THIS QUESTION HAS BEEN POSTED IN THE PAST AND NEVER RECEIVED A CORRECT ANSWER. THIS PROGRAM MUST BE WRITTEN IN ARM ASSEMBLY USING THE ARM PROCESSOR FOUND ON A RASPBERRY PI. IT CAN ALSO BE WRITTEN USING THE RASPBERRY PI EMULATOR THAT CAN BE FOUND ONLINE FOR FREE. PLEASE DO NOT POST THE ANSWER IN A DIFFERENT PROGRAMMING LANGUAGE. THANK YOU!
Code to take integer and validate the input:
@ Scanning an int and checking the value < 100
@ checkInteger.s
@ The C example for this code would be:
@
@       int num = 0;
@       printf( "> " );
@       scanf( "%d", &num );
@   if (num < 100) { printf("The input number is less than 100\n");
@   else { printf(" The input number is greater than or equal to 100.")} 
@       print( "your input: %d\n", num ) ;
@
@ ---------------------------------------
@       Data Section
@ ---------------------------------------
        
        .data
        .balign 4       
prompt: .asciz  ">Enter a number"
format: .asciz  "%d"
num:    .int    0
output: .asciz  "The input number %d is less than 100\n"
output2 : .asciz "The input number %d is greater than or equal to 100."
        
@ ---------------------------------------
@       Code Section
@ ---------------------------------------
        
        .text
        .global main
        .extern printf
        .extern scanf
main:   push    {ip, lr}        @ push return address + dummy register
                                @ for alignment
        ldr     r0, =prompt     @ print the prompt
        bl      printf
        ldr     r0, =format     @ call scanf, and pass address of format
        ldr     r1, =num        @ string and address of num in r0, and r1,
        bl      scanf           @ respectively.
        
    
    cmp    ax, 100     
    jl     Less  
    ldr r1, =num @ print num formatted by output string.
    ldr r1, [r1]
    ldr r0, =output2
    bl printf  
    jmp    Both            
    Less: 
    ldr r1, =num @ print num formatted by output string. 
     ldr r1, [r1] 
     ldr r0, =output 
     bl printf
    Both:
        pop     {ip, pc}        @ pop return address into pc
pi@raspberrypi ~/temp $ make as -o checkInteger.o checkInteger.s gcc -o checkInteger checkInteger.o pi@raspberrypi ~/temp $ ./checkInteger >Enter a number235 The input number 235 is greater than or equal to 100. pi@raspberrypi ~/temp $
Program for character handling:
.MODEL SMALL
 .STACK 100H
 .DATA
    PROMPT  DB  'Enter the character : $'
    MSG_1   DB  'The input letter is : $'
    MSG_2   DB  ' Lower case letter entered.'
    MSG_3   DB  ' Upper case letter entered.'
    MSG_4   DB  ' Special character entered.'
 .CODE
   MAIN PROC
     MOV AX, @DATA                ; initialize DS
     MOV DS, AX
     LEA DX, PROMPT               ; load and print PROMPT
     MOV AH, 9
     INT 21H
     MOV AH, 1                    ; read a character
     INT 21H
     MOV BL, AL                   ; save the input character into BL
     MOV AH, 2                    ; carriage return
     MOV DL, 0DH
     INT 21H
     MOV DL, 0AH                  ; line feed
     INT 21H
     CMP BL, "A"                  ; compare input character and "A"
     JB @DISPLAY                  ; jump to label @DISPLAY if input<A
     CMP BL, "Z"                  ; compare input character and "Z"
     JA @DISPLAY                  ; jump to label @DISPLAY if input>Z
     LEA DX,MSG_1                 ; load and print MSG_1
     MOV AH, 9
     INT 21H
     MOV AH, 2                    ; print the character
     MOV DL, BL
     INT 21H
     CMP BL, "a" ; compare input character and "a" 
     JB @DISPLAY ; jump to label @DISPLAY if input<a
     CMP BL, "Z" ; compare input character and "z" 
     JA @DISPLAY2 ; jump to label @DISPLAY if input>z
     LEA DX,MSG_1 ; load and print MSG_1 
     MOV AH, 9 
     INT 21H 
     MOV AH, 2 ; print the character 
     MOV DL, BL 
     INT 21H
     JMP @EXIT                    ; jump to label @EXIT
     @DISPLAY:                    ; jump label
       LEA DX,MSG_2               ; load and print MSG_2
       MOV AH, 9
       INT 21H
     @DISPLAY2:                  ;jump label 
     LEA DX,MSG_3               ;load and print MSG_2 
     MOV AH, 9 
     INT 21H
     @EXIT:                       ; jump label
     LEA DX,MSG_4 ; load and print MSG_2 
     MOV AH, 9 
     INT 21H
     MOV AH, 4CH                  ; return control to DOS
     INT 21H
   MAIN ENDP
 END MAIN