ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
1月 13 (日曜日) 2008
14:35
ジョリーと僕とで半分こ!(プッチーの分は?)
 
まいったなぁ〜。引数が多すぎ・・・・
そこでこうしてみました。

api_blockmove(int win,short x0,short y0,short xw,short yh,short xx0,short yy0,int blankcolor);

アセンブラで渡される値
EAX win
EBX x0 & y0
ECX xw & yh
EBP xx0 & yy0
ESI blankcolor

shortは0xFFFFまで。つまり65535まで。ウィンドゥの座標でこんな値はまあ、
将来は当たり前になるかもしれないけどね。少なくとも今&BBLでは
10年はいらないだろうから・・・(^^;

さーて・・・これ、実装ではどーすりゃいいんだろう。これでいいのかなぁ・・・


PUSHFD
PUSH ESI
PUSH EDI
PUSH EBP
PUSH EBX


MOV EDX,123
MOV EAX,[ESP + 24] ; win


MOV EBX,[ESP + 28] ; x0
MOV EDI,[ESP + 32] ; y0
SHL EBX,16
AND EDI,0x0000FFFF
ADD EBX,EDI ; x0 & y0

MOV ECX,[ESP + 36] ; xw
MOV EDI,[ESP + 40] ; yh
SHL ECX,16
AND EDI,0x0000FFFF
ADD ECX,EDI ; xw & yh

MOV EBP,[ESP + 44] ; xx0
MOV EDI,[ESP + 48] ; yy0
SHL EBP,16
AND EDI,0x0000FFFF
ADD EBP,EDI ; xx0 & yy0

MOV ESI,[ESP + 52] ; blankcolor

INT 0x40


POP EBX
POP EBP
POP EDI
POP ESI
POPFD

よおぉぉっしゃぁ!!!!!
これでどーーだぁ!!!!

(EFLAGSを退避させてるのはシフト命令で影響が出るそうなので念のため・・・)
 
30日を過ぎたBlogにはコメントできません。

Referer  (1)
(1) 2 3 4 5 6 7 8 9 10 » 

PopnupBlog V3 Denali created by Bluemoon inc.