2012-06-22 40 views
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:常量預計

回答

2

我想象你所得到的錯誤是在這一行:

mov eax, val1 + (val2 * 16) 

你不能做到這一點。如果打算將val2乘以16,然後將val1添加到結果中,則需要逐步實現它(您可能會遇到以a + b * c形式存在的尋址,但a和c需要是寄存器和b只能是2,4或8,而不是16)。嘗試用這樣的東西替換這條線:

mov eax, val2 
imul eax, 16 
add aex, val1 
+0

謝謝你的工作! – chadpeppers

相關問題