Question 6: (back)
Write a "TestBit" program. This program requires two integer inputs. The first value is a 32-bit integer to test; the second value is an unsigned integer in the range 0..31 describing which bit to test. The program should display true if the corresponding bit (in the test value) contains a one, the program should display false if that bit position contains a zero. The program should always display false if the second value holds a value outside the range 0..31.
program Question6; #include( "stdlib.hhf" ); static a: int32; b: int8; cnt: uns8; okay: boolean := false; found: boolean := false; begin Question6; stdout.put( "Please Enter an integer: " ); stdin.get( a ); mov (false, okay ); repeat stdout.put( "Please enter a bit to test between 0..31: " ); stdin.get( b ); if( b >= 0 ) then if( b <= 31 ) then mov( b, bl ); mov( true, okay ); endif; endif; until( okay ); mov( a, eax ); mov( 0, cnt ); repeat mov( false, okay ); shr( 1, eax ); if( @c ) then mov( true, found ); else mov( false, found ); endif; if( cnt = bl ) then mov(true, okay); else add( 1, cnt ); endif; until( okay); stdout.put( "TestBit: ", cnt, " = ", found, nl ); end Question6;