Create an HLA function that forces a value into all three pa…
Create an HLA function that forces a value into all three passed parameters. The parameters are being passed by-reference and are intended to change the value of caller’s variables. This function should have the following signature:procedure makeDouble( var i : int16; var j : int16; var k : int16 );@nodisplay; @noframe;After calling this function, the value of all the driver’s variables should be changed to twice the value of the largest of the three passed parameters. Your function should replicate the following C code:void makeDouble( int * i, int * j, int * k ) { int most = *i; if (*j > most) { most = *j; } if (*k > most) { most = *k; } *i = most + most; *j = most + most; *k = most + most;}IN ORDER TO RECEIVE FULL CREDIT, YOU MUST USE THE TEMPLATE SOLUTION SUPPLIED BELOW. Of course, you will need to add code to the function to implement the desired algorithm explained above. In addition, you will need to push the parameters to the function. Be sure your function preserves all the registers it touches.// Reference Parameter Template Solution For CS 17 Final// CS 17 Students must use this template as the basis for their solution. // I hope it will simplify your development task// Please look at the two TODO: notes belowprogram ReferenceProgram;#include( “stdlib.hhf” );staticiValue1 : int16 := 0;iValue2 : int16 := 0;iValue3 : int16 := 0;// TODO: CS 17 Students add code below to implement this function// Several hints are suppliedprocedure makeDouble( var i : int16; var j : int16; var k : int16 );@nodisplay; @noframe;staticdReturnAddress : dword;begin makeDouble;// entry sequence// preserve registers usedpop( dReturnAddress ); // this is the return address // push back the return addresspush( dReturnAddress ); // preserve registers// TODO: implement function // restore the registers used ret(); end makeDouble; begin ReferenceProgram; stdout.put( “Gimme iValue1: ” );stdin.get( iValue1 );stdout.put( “Gimme iValue2: ” );stdin.get( iValue2 );stdout.put( “Gimme iValue3: ” );stdin.get( iValue3 );// TODO: push parameters to the function.// These parameters must be passed by-reference.call makeDouble;stdout.put( “after makeDouble!” );stdout.newln();stdout.put( “iValue1 = ” );stdout.put( iValue1 );stdout.put( “iValue2 = ” );stdout.put( iValue2 );stdout.put( “iValue3 = ” );stdout.put( iValue3 );stdout.newln(); end ReferenceProgram;
Read DetailsCreate an HLA function that loops through a single string ar…
Create an HLA function that loops through a single string argument and verifies that it contains exactly two ‘2’ characters. This function should have the following signature:procedure two2s( stringData : dword ); @nodisplay; @noframe;This function should return into AL an int value which is either true or false, 1 or 0. To receive full credit, your two2s( ) function must not allocate any storage. You must use the utility functions gets and puts provided here by downloading this file. Unzip it to find the .hla file inside. These are the some of the same routines you used in Unit 15. Once you acquire the file, you can include it in your code by saying: #include( “cs17string.hla” );Your function should replicate the following C code:bool two2s( char * stringData ){ int i = 0; char letter = ‘ ‘; int count = 0; while ( stringData[ i ] != NULL ) { // loop looking for all the 2s letter = stringData[ i ]; i = i + 1; if (letter == ‘2’) { count = count + 1; } } return( count == 2 );} IN ORDER TO RECEIVE FULL CREDIT, YOU MUST USE THE TEMPLATE SOLUTION SHOWN BELOW. Of course, you will need to add code to the function to implement the desired algorithm explained above. In addition, you will need to push the parameters to the function. // String Parameter Template Solution For CS 17 Final// CS 17 Students must use this template as the basis for their solution.// Please look at the two TODO: notes below program StringProgram;#include( “stdlib.hhf” );// The file cs17string.hla is downloadable from the hyperlink shown above.// Place it in the same folder as this hla file you are working on #include( “cs17string.hla” ); static stringData : dword; answer : int8; // TODO: CS 17 Students add code below to implement this function// Several hints are supplied procedure two2s( stringData : dword ); @nodisplay; @noframe;staticdReturnAddress : dword;begin two2s;// TODO: CS 17 Students will need to preserve registerspop( dReturnAddress ); // TODO: CS 17 Students need to get stringData off the stack // push back the return addresspush( dReturnAddress ); // preserve registers // begin function implementation // leave the answer in EAX // restore the registers used ret(); end two2s; begin StringProgram; stdout.put( “Please enter a string to process”, nl );// this code allocates a string of size 80mov( @size( int8 ), AL );mov( 80, BL );inc( BL );mul( BL );mov( 0, EBX );mov( AX, BX );malloc( EBX );mov( EAX, stringData );// let’s try reading a value into the stringmov( stringData, EAX );push( EAX );mov( 80, CX );push( CX );call gets;// print the stringstdout.put( “—-> here is the string you entered: ” );mov( stringData, EAX );push( EAX );call puts;stdout.newln();// initialize EAX before calling the function.mov( 0, EAX ); // TODO: CS 17 Students need to pass a string parameter to the function call two2s;mov( AL, answer ); // show the resultsstdout.put( “after two2s — result=” );stdout.put( answer );stdout.newln(); // return what you malloc’edfree( stringData ); end StringProgram;
Read Details