Publicidad
Given the following C function- implement the equivalent assembly lang.docx
Given the following C function- implement the equivalent assembly lang.docx
Próximo SlideShare
ECSE 221 - Introduction to Computer Engineering - Tutorial 1 - Muhammad Ehtas...ECSE 221 - Introduction to Computer Engineering - Tutorial 1 - Muhammad Ehtas...
Cargando en ... 3
1 de 2
Publicidad

Más contenido relacionado

Más de delicecogupdyke(20)

Publicidad

Given the following C function- implement the equivalent assembly lang.docx

  1. Given the following C function, implement the equivalent assembly language function, int returnLength(char *myArray, int *length) { int i; i = 0; while (myarray[i] !=0) { myarray[i] - myarray[i) & 0x0F; i+ +;} *length = i; return(value);} Solution ;Assume that all general purpose registers (rax, rbx, rcx and rdx) are saved before calling the following assembly language procedure. Also, the following procedure assumes that the pointer (address) to "myArray" is contained inside the register, "rdx" and pointer (address) to the parameter "length" is contained inside the register, "rcx". ;The return value (length of the string) will be available inside the register, "eax", after the procedure returns. ; Procedure to return the length of a string ReturnLength PROC NEAR PUBLIC mov DWORD PTR[rcx], 0 ; Initialize length with 0 jmp LOOP2 LOOP1: mov eax, DWORD PTR [rcx] movsx rbx, eax add rbx, rdx movzx eax, BYTE PTR [rbx] ; eax will contain the character at ith location and eax, 15 ; and the character value with 0x0F mov BYTE PTR [rbx], al ; store the result back at the same location
  2. add DWORD PTR [ecx], 1 ; increment i (length) by 1 LOOP2: ; Checks the while loop and if is not end of the string, then jums to LOOP1. mov eax, DWORD PTR [rcx] ; assign i to eax movsx rbx, eax add rbx, rdx movzx eax, BYTE PTR [rbx] ; Get the character at the ith location test al, al ; Check whether it is NULL character jne LOOP1 ; If not end of string jump to LOOP1 to peroform the operations given in while loop mov eax, DWORD PTR [rcx] ; store the final length in eax and return ret ReturnLength ENDP
Publicidad