Skip to content

Instantly share code, notes, and snippets.

@Catalyse
Created September 11, 2015 06:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Catalyse/1a25124d3bdf17076096 to your computer and use it in GitHub Desktop.
Save Catalyse/1a25124d3bdf17076096 to your computer and use it in GitHub Desktop.
00400F73 add byte ptr [eax],al
00400F75 add byte ptr [eax],al
00400F77 add byte ptr [eax],al
00400F79 add byte ptr [eax],al
00400F7B add byte ptr [eax],al
00400F7D add byte ptr [eax],al
00400F7F add byte ptr [eax],al
00400F81 add byte ptr [eax],al
00400F83 add byte ptr [eax],al
00400F85 add byte ptr [eax],al
00400F87 add byte ptr [eax],al
00400F89 add byte ptr [eax],al
00400F8B add byte ptr [eax],al
00400F8D add byte ptr [eax],al
00400F8F add byte ptr [eax],al
00400F91 add byte ptr [eax],al
00400F93 add byte ptr [eax],al
00400F95 add byte ptr [eax],al
00400F97 add byte ptr [eax],al
00400F99 add byte ptr [eax],al
00400F9B add byte ptr [eax],al
00400F9D add byte ptr [eax],al
00400F9F add byte ptr [eax],al
00400FA1 add byte ptr [eax],al
00400FA3 add byte ptr [eax],al
00400FA5 add byte ptr [eax],al
00400FA7 add byte ptr [eax],al
00400FA9 add byte ptr [eax],al
00400FAB add byte ptr [eax],al
00400FAD add byte ptr [eax],al
00400FAF add byte ptr [eax],al
00400FB1 add byte ptr [eax],al
00400FB3 add byte ptr [eax],al
00400FB5 add byte ptr [eax],al
00400FB7 add byte ptr [eax],al
00400FB9 add byte ptr [eax],al
00400FBB add byte ptr [eax],al
00400FBD add byte ptr [eax],al
00400FBF add byte ptr [eax],al
00400FC1 add byte ptr [eax],al
00400FC3 add byte ptr [eax],al
00400FC5 add byte ptr [eax],al
00400FC7 add byte ptr [eax],al
00400FC9 add byte ptr [eax],al
00400FCB add byte ptr [eax],al
00400FCD add byte ptr [eax],al
00400FCF add byte ptr [eax],al
00400FD1 add byte ptr [eax],al
00400FD3 add byte ptr [eax],al
00400FD5 add byte ptr [eax],al
00400FD7 add byte ptr [eax],al
00400FD9 add byte ptr [eax],al
00400FDB add byte ptr [eax],al
00400FDD add byte ptr [eax],al
00400FDF add byte ptr [eax],al
00400FE1 add byte ptr [eax],al
00400FE3 add byte ptr [eax],al
00400FE5 add byte ptr [eax],al
00400FE7 add byte ptr [eax],al
00400FE9 add byte ptr [eax],al
00400FEB add byte ptr [eax],al
00400FED add byte ptr [eax],al
00400FEF add byte ptr [eax],al
00400FF1 add byte ptr [eax],al
00400FF3 add byte ptr [eax],al
00400FF5 add byte ptr [eax],al
00400FF7 add byte ptr [eax],al
00400FF9 add byte ptr [eax],al
00400FFB add byte ptr [eax],al
00400FFD add byte ptr [eax],al
00400FFF add ah,cl
00401001 int 3
00401002 int 3
00401003 int 3
00401004 int 3
_main@0:
00401005 jmp main (0401010h)
0040100A int 3
0040100B int 3
0040100C int 3
0040100D int 3
0040100E int 3
0040100F int 3
--- X:\Desktop\pa2.asm ---------------------------------------------------------
;//Part 1 // When you said one statement I could only assume this is what you meant HOWEVER,
;// if you wanted literally one line I would have had to do it above the data declaration like I did in part 3
;//Yes I know I dont need a semi colon at the end but it makes me feel better about myself. (And visual studio does the spacing right) //
mov eax,0;
00401010 mov eax,0
mov ebx,0;
00401015 mov ebx,0
mov al, valA;
0040101A mov al,byte ptr ds:[00405000h]
mov bl, [valA+1];//I used an array just for funzies. :D
0040101F mov bl,byte ptr ds:[405001h]
mul bl;
00401025 mul al,bl
mov bl, [valA+2];//Yeah thats right I said funzies.
00401027 mov bl,byte ptr ds:[405002h]
mul bl;
0040102D mul al,bl
mov bl, [valA+3];//Its okay if you're jelly that you didnt think of it first.
0040102F mov bl,byte ptr ds:[405003h]
mul bl;//This causes overflow, with the answer being 168, but what is moved to valAnswer after storage in AL is just 68 //
00401035 mul al,bl
mov valAnswer, al;
00401037 mov byte ptr ds:[00405004h],al
call DumpRegs;
0040103C call _DumpRegs@0 (0401254h)
;//In the event that I was only supposed to use EQU up top and not use the mul directive:
mov ax, PART1EVAL; //I couldnt store directly into al because of a size mismatch (168 is larger than 8 bits!)
00401041 mov ax,168h
call DumpRegs;
00401045 call _DumpRegs@0 (0401254h)
;//End Part 1 //
;//Part 2 //
CLC;//Clear carry bit EFL A46 or 0000 0000 0000 0000 0000 1010 0100 0110 //
0040104A clc
mov eax,0;
0040104B mov eax,0
mov ax,0ffffh;
00401050 mov ax,0FFFFh
inc ax;//Overflow// EFL 256 or 0000 0000 0000 0000 0000 0010 0101 0110 overflow bit thrown (0) (bit 11), Adjust bit thrown (bit 4) //
00401054 inc ax
call DumpRegs;
00401056 call _DumpRegs@0 (0401254h)
mov ax,0;
0040105B mov ax,0
dec ax;//Underflow// EFL 296 or 0000 0000 0000 0000 0000 0010 1001 0110 zero flow thrown (bit 6), sign flag thrown (bit 7) //
0040105F dec ax
call DumpRegs;
00401061 call _DumpRegs@0 (0401254h)
;//End part two, that was easy!
;//Part 3 //
mov ebx,0;
00401066 mov ebx,0
mov ebx,SECONDS_IN_DAY;
0040106B mov ebx,15180h
call DumpRegs;
00401070 call _DumpRegs@0 (0401254h)
;//Results in EBX containing 00015180h OR 86400 in decimal.
;//End Part 3//
exit
00401075 push 0
00401077 call _ExitProcess@4 (0402064h)
--- No source file -------------------------------------------------------------
0040107C int 3
0040107D int 3
0040107E int 3
0040107F int 3
00401080 int 3
00401081 int 3
00401082 int 3
00401083 int 3
00401084 int 3
00401085 int 3
00401086 int 3
00401087 int 3
00401088 int 3
00401089 int 3
0040108A int 3
0040108B int 3
0040108C int 3
0040108D int 3
0040108E int 3
0040108F int 3
_CloseFile@0:
00401090 push eax
00401091 call _CloseHandle@4 (040206Ah)
00401096 ret
_Clrscr@0:
00401097 push ebp
00401098 mov ebp,esp
0040109A add esp,0FFFFFFE8h
0040109D pushad
0040109E cmp byte ptr ds:[405010h],0
004010A5 jne _Clrscr@0+15h (04010ACh)
004010A7 call _Gotoxy@0+36h (04015ABh)
004010AC lea eax,[ebp-16h]
004010AF push eax
004010B0 push dword ptr ds:[405B44h]
004010B6 call _GetConsoleScreenBufferInfo@8 (040208Eh)
004010BB mov ax,word ptr [ebp-16h]
004010BF mov word ptr ds:[00405621h],ax
004010C5 cmp dword ptr ds:[405621h],200h
004010CF jbe _Clrscr@0+44h (04010DBh)
004010D1 mov dword ptr ds:[405621h],200h
004010DB mov ax,word ptr [ebp-0Eh]
004010DF mov ecx,dword ptr ds:[405621h]
004010E5 mov edi,405221h
004010EA rep stos word ptr es:[edi]
004010ED movzx ecx,word ptr [ebp-14h]
004010F1 push ecx
004010F2 push 405629h
004010F7 push dword ptr ds:[405625h]
004010FD push dword ptr ds:[405621h]
00401103 push 405021h
00401108 push dword ptr ds:[405B44h]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment