2013-10-29 31 views
-1
.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,16mov eax,textcolor +(background)之前是强制的,因为当我没有这个运行时,我的程序显示一个错误。另外,我想了解更多关于masm计数器和着色的程序。任何人都可以建议我的网站,我可以练习和解决编程练习。设置文本颜色和背景颜色汇编语言的x86(MASM)

+0

任何解释将不胜感激。 – ngoche

回答

1

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

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

+0

如果我写的像mov al,myname [esi]那只是我写mov eax,0的时候? mov eax,16不需要你是对的。另一个问题请。推动和流行的意义是什么?推EAX \t \t MOV EAX,300 \t \t呼叫延迟 \t \t \t \t MOV EAX,16 \t \t呼叫randomrange \t \t INC EAX \t \t MOV文本颜色,EAX \t \t MOV EAX,(文本颜色+(蓝色* 15)) \t \t call settextcolor \t pop eax \t inc esi \t inc dh – ngoche

+0

@PenpaGyaltsen:你需要一个x86汇编程序教程。查看http://cs.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html –