0

私はこのコードを持っています

.186            
.model small, stdcall
.stack 128

draw_rect PROTO STDCALL :WORD, :WORD, :WORD, :WORD

.data 

x DB 15

...

.code

...

main:

start_loop:

invoke draw_rect, 160, 100, x, 11111111b

dec x

cmp x, 3

jnl start_loop

...

このループは永遠です。しかし、xは永遠に15から減少しています(これはモニターで確認できます)。おそらく、3以下になるはずです。JNL-それ以下ではありません。draw_rectはxにまったく触れません。なぜこれが起こる可能性がありますか?

4

1 に答える 1

-1

DB (define byte) マクロを使用すると、マクロの代わりに ADDRESS がバイナリに挿入されます。

必要なコードは次のようなものです。

     MOV EAX, x            ; get the address of x
start:
     invoke draw...
     DEC [EAX]             ; decrement the value at the address
     CMP [EAX], 3          ; compare the value at the address
     JNL start
于 2012-10-31T18:00:52.037 に答える