Question: Assemble language // - This function takes in a square sized grayscale image and applies thresholding on each pixel. // i.e. it should change pixel

Assemble language

// - This function takes in a square sized grayscale image and applies thresholding on each pixel. // i.e. it should change pixel values according to this formula: // 0xFF if x >= threshold // 0x00 if x < threshold // - The width and height of the image are equal to dim. // - You are not allowed to define additional variables. // void imageThresholding(unsigned char* image, int dim, unsigned char threshold) {

__asm { mov eax, image

mov edi, 0 BEGIN_FOR_ROW: cmp edi, dim jge END_FOR_ROW mov esi, 0

BEGIN_FOR_COL : cmp esi, dim jge END_FOR_COL mov ebx, 0 //Transfer row to ebx

mov edx, 0 //Multiply row by dim (add row to row dim times) BEGIN_FOR_MUL : cmp edx, dim jge END_FOR_MUL add ebx, edi inc edx jmp BEGIN_FOR_MUL END_FOR_MUL :

add ebx, esi xor edx, edx mov dl, [eax + ebx] mov cl, threshold and cl, dl cmp cl, 0x00 jne IF_HIGHER xor edx, edx //set to Min jmp CONT IF_HIGHER : or edx, 0xFF CONT : mov[eax + ebx], dl inc esi jmp BEGIN_FOR_COL

END_FOR_COL : inc edi jmp BEGIN_FOR_ROW

END_FOR_ROW : mov image, eax

} }

Won't printing out the right result,

Test driver

imageThresholding(&testStr1_1[0][0], 3, 90); for (i = 0; i < 3; ++i) for (j = 0; j < 3; ++j) { if (testStr1_1[i][j] != exptectedStr1_1[i][j]) { std::cout << "Part 1: Test 1 failed at index: " << i << "," << j << " got: " << int(testStr1_1[i][j]) << " expected: " << int(exptectedStr1_1[i][j]) << std::endl; failed = true; } } if (!failed) std::cout << "Part 1: Test 1 passed." << std::endl;

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!