Click to See Complete Forum and Search --> : help me please.. im missing something and i don't know :(


horent135
December 14th, 2006, 12:09 AM
DESIGN AN IA-32 ASSEMBLY LANGUAGE PROGRAM TO ENTER 10 DOUBLE
WORD INTEGERS, CHANGE BITS 3 AND 4 IN BYTE 2 OF EACH INTEGER
TO 10, AND PRINT THE RESULT IN BINARY STRING.

People are telling me that I'm missing something, Can someone help me what am i missing?? it seems that i did everything that is asked for.



include irvine32.inc

makeChange proto, baseAddr:ptr dword, count:dword
printBinary proto, baseAddr:ptr dword, count:dword

.data
numbers sdword 1234,-1234,3456,-3456,12345

.code
begin:
invoke makeChaange, addr numbers, lengthof numbers
invoke printBinary, addr numbers, lengthof numbers





makeChange proc, baseAddr:ptr dword, count:dword
pushad

mov esi,baseAddr
mov ecx,count

next:
mov ah,byte ptr [esi+2] ;byte 2 of each dword
and ah,11100111b ;clear bits 3 and 4
or ah,00010000b ;change bits 3 and 4 to 10
mov byte ptr [esi+2],ah

add esi,4 ;advance to next dword
loop next

popad ;restore all the dword registers
ret
makeChange endp

printBinary proc, baseAddr:ptr dword, count:dword


printBinary endp

kahlinor
December 14th, 2006, 01:08 AM
I don't know exactly what kind of problem you are getting, so this solution may not apply to you: Offset zero = 1st byte, you are modifying the 3rd byte.