2012-06-22 20 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

相关问题