1

考えられるすべての組み合わせの背景とテキストを実行して設定するプログラミングの割り当てがあります。基本的に次のような値を設定するSetTextColorと呼ばれる事前定義された関数を使用しています。

mov eax, white + (blue * 16)

基本的に、これによりテキストが白に設定され、背景が青に設定されます(16を掛ける背景を設定するため)。基本的に、組み合わせは16 X 16=256です。

TITLE BACKGROUND COLORS                     (main.asm)

; Description: T
; Author: Chad Peppers
; Revision date: June 21, 2012

INCLUDE Irvine32.inc
.data
COUNT = 16
COUNT2 = 16
LCOUNT DWORD ?

val1 DWORD 0
val2 DWORD 0
.code
main PROC

    mov ecx, COUNT

    L1:
        mov LCOUNT, ecx
        mov ecx, COUNT2
        L2:
            mov eax, val1 + (val2 * 16)
            call SetTextColor
            inc val2
            Loop L2
        mov ecx, LCOUNT
        Loop L1

    call DumpRegs
    exit
main ENDP

END main

基本的に私はネストされたループをやっています。私の考えでは、単純に1 *(1 * 16)を実行してから、ネストされたループに1 *(16 * 16)まで値を含めます。以下のエラーが発生します

エラーA2026が発生しています:定数が期待されます

4

1 に答える 1

3

あなたが得ているエラーはこの行にあると思います:

mov eax, val1 + (val2 * 16)

あなたはそれをすることはできません。val2 に 16 を掛けて、その結果に val1 を加算する場合は、段階的に実装する必要があります (a+b*c の形式でアドレス指定する場合がありますが、a と c はレジスターであり、b である必要があります)。 16 ではなく、2、4、または 8 のみを指定できます)。この行を次のように置き換えてみてください。

mov eax, val2
imul eax, 16
add aex, val1
于 2012-06-22T11:05:14.610 に答える