Log in

View Full Version : Question about "Test"


yosef07212
September 24th, 2011, 12:58
Okay so....
Code:

006C8CD1 68 443B9E00 PUSH NAME.009E3B44 ; ASCII "btn_slot_up"
006C8CD6 56 PUSH ESI
006C8CD7 E8 C4A6D3FF CALL NAME.004033A0
006C8CDC 83C4 08 ADD ESP,8
006C8CDF 84C0 TEST AL,AL
006C8CE1 74 16 JE SHORT NAME.006C8CF9
006C8CE3 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
006C8CE9 8B01 MOV EAX,DWORD PTR DS:[ECX]
006C8CEB FF50 4C CALL DWORD PTR DS:[EAX+4C]
006C8CEE B0 01 MOV AL,1
006C8CF0 5F POP EDI ; ntdll.778E34C0
006C8CF1 5E POP ESI ; ntdll.778E34C0
006C8CF2 5B POP EBX ; ntdll.778E34C0
006C8CF3 83C4 1C ADD ESP,1C
006C8CF6 C2 0800 RETN 8
006C8CF9 68 503B9E00 PUSH NAME.009E3B50 ; ASCII "btn_slot_down"
006C8CFE 56 PUSH ESI
006C8CFF E8 9CA6D3FF CALL NAME.004033A0
006C8D04 83C4 08 ADD ESP,8
006C8D07 84C0 TEST AL,AL
006C8D09 74 16 JE SHORT NAME.006C8D21
006C8D0B 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
006C8D11 8B11 MOV EDX,DWORD PTR DS:[ECX]
006C8D13 FF52 50 CALL DWORD PTR DS:[EDX+50]
006C8D16 B0 01 MOV AL,1
006C8D18 5F POP EDI ; ntdll.778E34C0
006C8D19 5E POP ESI ; ntdll.778E34C0
006C8D1A 5B POP EBX ; ntdll.778E34C0
006C8D1B 83C4 1C ADD ESP,1C
006C8D1E C2 0800 RETN 8
006C8D21 5F POP EDI ; ntdll.778E34C0
006C8D22 5E POP ESI ; ntdll.778E34C0
006C8D23 32C0 XOR AL,AL
006C8D25 5B POP EBX ; ntdll.778E34C0
006C8D26 83C4 1C ADD ESP,1C
006C8D29 C2 0800 RETN 8


So I wanted to add 1 more option 0-1-2 insted of 0-1
So I made it like this, but i'm not sure it would work since idk how the "Test" command works.
Code:

00B8A020 68 443B9E00 PUSH NAMEl.009E3B44 ; ASCII "btn_slot_up"
00B8A025 56 PUSH ESI
00B8A026 E8 759387FF CALL NAMEl.004033A0
00B8A02B 83C4 08 ADD ESP,8
00B8A02E 3C 00 CMP AL,0
00B8A030 74 08 JE SHORT NAMEl.00B8A03A
00B8A032 3C 01 CMP AL,1
00B8A034 74 1A JE SHORT NAMEl.00B8A050
00B8A036 3C 02 CMP AL,2
00B8A038 74 2C JE SHORT NAMEl.00B8A066
00B8A03A 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
00B8A040 8B01 MOV EAX,DWORD PTR DS:[ECX]
00B8A042 FF50 4C CALL DWORD PTR DS:[EAX+4C]
00B8A045 B0 01 MOV AL,1
00B8A047 5F POP EDI
00B8A048 5E POP ESI
00B8A049 5B POP EBX
00B8A04A 83C4 1C ADD ESP,1C
00B8A04D C2 0800 RETN 8
00B8A050 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
00B8A056 8B01 MOV EAX,DWORD PTR DS:[ECX]
00B8A058 FF50 4C CALL DWORD PTR DS:[EAX+4C]
00B8A05B B0 02 MOV AL,2
00B8A05D 5F POP EDI
00B8A05E 5E POP ESI
00B8A05F 5B POP EBX
00B8A060 83C4 1C ADD ESP,1C
00B8A063 C2 0800 RETN 8
00B8A066 5F POP EDI
00B8A067 5E POP ESI
00B8A068 32C0 XOR AL,AL
00B8A06A 5B POP EBX
00B8A06B 83C4 1C ADD ESP,1C
00B8A06E C2 0800 RETN 8
00B8A071 90 NOP
00B8A072 90 NOP
00B8A073 68 503B9E00 PUSH NAMEl.009E3B50 ; ASCII "btn_slot_down"
00B8A078 56 PUSH ESI
00B8A079 E8 229387FF CALL NAMEl.004033A0
00B8A07E 83C4 08 ADD ESP,8
00B8A081 3C 00 CMP AL,0
00B8A083 74 1E JE SHORT NAMEl.00B8A0A3
00B8A085 3C 01 CMP AL,1
00B8A087 ^ 74 DD JE SHORT NAMEl.00B8A066
00B8A089 90 NOP
00B8A08A 90 NOP
00B8A08B 90 NOP
00B8A08C 90 NOP
00B8A08D 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
00B8A093 8B01 MOV EAX,DWORD PTR DS:[ECX]
00B8A095 FF50 50 CALL DWORD PTR DS:[EAX+50]
00B8A098 B0 01 MOV AL,1
00B8A09A 5F POP EDI
00B8A09B 5E POP ESI
00B8A09C 5B POP EBX
00B8A09D 83C4 1C ADD ESP,1C
00B8A0A0 C2 0800 RETN 8
00B8A0A3 8B0D 98CDB500 MOV ECX,DWORD PTR DS:[B5CD98]
00B8A0A9 8B01 MOV EAX,DWORD PTR DS:[ECX]
00B8A0AB FF50 50 CALL DWORD PTR DS:[EAX+50]
00B8A0AE B0 02 MOV AL,2
00B8A0B0 5F POP EDI
00B8A0B1 5E POP ESI
00B8A0B2 5B POP EBX
00B8A0B3 83C4 1C ADD ESP,1C
00B8A0B6 C2 0800 RETN 8


Thx :P

live_dont_exist
September 25th, 2011, 09:31
Your thread is not clear as no one has the background of the problem, like you do, having studied the code in detail etc. If you could describe your problem a little better, it might help and someone could try and help.

Cheers
Arvind

yosef07212
September 25th, 2011, 09:32
Well it's just if I can use "CMP al" insted of "Test al,al"

live_dont_exist
September 25th, 2011, 09:37
Shouldn't that be a simple Google? Like..

http://webster.cs.ucr.edu/AoA/DOS/ch09/CH09-6.html#HEADING6-83

http://www.creative.net.au/mirrors/asm/CH06/CH06-2.html#HEADING2-244

Arvind

blabberer
September 26th, 2011, 00:03
google first hit you can even use im feeling lucky to go to this page directly

search query

/search?q=test+al+.+al+vs+cmp+al.al

Code:


Search
About 5,010,000 results (0.28 seconds)

TEST vs CMP ...
www.masm32.com/board/?PHPSESSID...topic=1811.0
11 posts - 8 authors - Last post: 19 Jun 2005
cmp eax, 1 -> test eax, eax. You cannot however test for any literal, "test eax, 5" will return non-zero for any number with bits 0 or 2 set (1, 4, 5, 9, ...

http://www.masm32.com/board/?&topic=1811.0