0
    .data
myname byte "Ngoche Penpa Gyaltsen",0
space byte ' ',0

.code

main PROC
    mov esi,0
    mov eax,0
    mov ecx,lengthof myname
    mov edx,offset space

L1:
movzx eax,myname[esi]
call writechar

mov eax,16
mov eax,yellow +(blue*16)
call settextcolor
call writestring
inc esi
loop L1;

exit

我的问题是为什么我们需要设置mov eax,0mov esi,0. 另外,mov eax,16之前是否必须这样做,mov eax,textcolor +(background)因为当我在没有这个的情况下运行时,我的程序会显示错误。另外,我想了解更多关于masm计数器和程序着色的信息。任何人都可以建议我可以练习和解决编程练习的网站。

4

1 回答 1

1

我看不出有任何原因mov eax, 0,因为该值将被以下movzx指令覆盖。mov esi, 0是必需的,因为该寄存器esi用于对myname数组进行索引。

不需要mov eax,16, 因为该值被下一条指令覆盖。您确定删除该行会导致错误吗?它肯定看起来不应该。

于 2013-10-29T21:27:46.247 回答