装配:用不同颜色打印一条线

Posted

技术标签:

【中文标题】装配:用不同颜色打印一条线【英文标题】:Assembly: Printing a line in Different Colors 【发布时间】:2015-10-21 02:08:47 【问题描述】:

我正在尝试将两个数字相加,然后以 colors 中提到的 4 种不同颜色打印 resultMsg

代码:

INCLUDE Irvine32.inc

.data

prompt1     BYTE        "Please type your first integer:", 0dh, 0ah, 0
prompt2     BYTE        "Please type your second integer:", 0dh, 0ah, 0
resultMsg       BYTE        "The sum is ", 0
colors      BYTE        yellow, blue, red, green

.code
main PROC
call clrscr
call InteractiveSum
mov  eax, 5000
call Delay



exit
main ENDP

InteractiveSum PROC
    mov edx,OFFSET prompt1
    call WriteString
    call ReadInt
    mov ebx,eax
    call Crlf
    mov edx, OFFSET prompt2
    call WriteString
    call ReadInt
    add eax, ebx
    mov edx, OFFSET resultMsg
    call WriteString
    call WriteInt

ret
InteractiveSum ENDP

END main

我正在使用 Irvine32.inc 库,并且正在研究 SetTextColor 功能。看起来它非常适合我在这里尝试做的事情,但在示例中......

.data
str1 BYTE "Color output is easy!",0

.code
mov  eax,yellow + (blue * 16)
call SetTextColor
mov  edx,OFFSET str1
call WriteString
call Crlf

看来必须将颜色放入eax,这就是我存储两个数字的总和的地方,因为如果我是正确的,它必须存储在WriteInt 中?有解决办法吗?

【问题讨论】:

【参考方案1】:

如果您需要在 EAX 中存储其他内容,而它已经包含一个值,您必须保留它始终可以将 EAX 存储在堆栈中,然后从那里检索它。

push eax                         ; Add this line
mov  eax,yellow + (blue * 16)
call SetTextColor
pop  eax                         ; Add this line
mov  edx,OFFSET str1
call WriteString
call Crlf

【讨论】:

以上是关于装配:用不同颜色打印一条线的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenCV 中用渐变颜色绘制一条线

如何修复此绘图程序,以便在选择另一个像素时,从一条线绘制的最后一个像素不会变为不同的颜色?

对于canvas画图时,改变其中一条线的颜色,该怎么解决

当一条线与一个区域重叠时,如何使用 GDI+ 更改它的颜色?

如何在 R Plotly 中用颜色向量绘制一条线

在图形中生成明显不同的 RGB 颜色